8u-boot程序解读.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8u-boot程序解读

添加自定义命令 例如,添加一个hello命令: 在common/目录下添加一个命令文件cmd_hello.c 添加自定义命令 在common/Makefile文件中,添加目标,将cmd_hello.c编译进u-boot中。 重新编译u-boot,烧写到开发板,输入help,可看到 输入hello u-boot移植 u-boot移植关键技术 incoude/configs/目标板.h头文件 这个头文件是目标板的参数、选项配置头文件; 很多的条件编译的宏都是在这里定义的 board/目标板/目录 开发板外设初始化 flash初始化 arch/ARCH/cpu/CPU/start.S 入口代码 u-boot调试 在串口能正常工作前,可以采用LED灯或者蜂鸣器来调试代码; 配置好串口后,使用printf()函数来调试。 课堂小结 本次课结合bootloader程序框架的两个阶段,分析了u-boot源码,详细讲解了u-boot 命令的执行过程及添加u-boot命令的方法。 预习内容 Linux内核 Linux内核的配置 Linux内核镜像的产生过程 Linux内核的启动 * u-boot程序分析 教学回顾 Bootloader程序的框架 第一阶段(汇编语言) 第二阶段(C语言) u-boot的配置编译过程 u-boot的使用 环境变量 命令 教学内容 Uboot_tiny4412的启动流程 阶段一汇编源码分析 阶段二源码详细分析 u-boot下命令执行过程分析 添加自定义命令 教学要求 熟悉u-boot的代码 理解u-boot源码的两个阶段主要完成的工作 理解用户输入命令后u-boot执行的流程 掌握向u-boot添加自定义命令的方法 u-boot的启动流程 分析u-boot的链接脚本(board/samsung/tiny4412/u-boot.lds)可以知道,u-boot的入口是start.S start.S(arch/arm/cpu/armv7/start.S) 阶段一(arch/arm/cpu/armv7/start.s) SVC模式 关闭cache和MMU 初始化系统时钟 初始化内存 初始化TZPC 拷贝u-boot到内存 设置SP 调到C函数board_init_f() u-boot的启动流程 start.S最后调用一个C函数board_init_f(),该C函数位于arch/arm/lib/board.c文件中。 board_init_f()函数分析 阶段二(arch/arm/lib/board.c的board_init_f函数) 进行一系列的初始化 timer_init env_init console_init_f ...... 调用 relocate_code() 清楚BSS段 调转到内存的board_init_r函数 阶段一源码分析 设置中断向量表 @复位入口, 使用b指令,不依赖运行地址 阶段一源码分析 设置SVC模式并关闭中断 阶段一源码分析 调用cpu_init_crit 该子程序主要工作是清TLB(页面缓存)、关MMU及Cache,然后调用lowlevel_init 阶段一源码分析 调用cpu_init_crit 该子程序主要工作是清TLB(页面缓存)、关MMU及Cache,然后调用lowlevel_init 阶段一源码分析 转入低级初始化lowlevel_init 主要是设置SP、对时钟、片外内存(DDR3)、串口等进行初始化 .globl lowlevel_init lowlevel_init: … /* use iROM stack in bl2 */ ldr sp, =0… bl read_om /* init system clock */ bl system_clock_init /* Memory initialize */ bl mem_ctrl_asm_init /* init uart for debug */ bl uart_asm_init bl tzpc_init b load_uboot … 阶段一源码分析 load_uboot 根据不同启动设备,调用对应启动函数 阶段一源码分析 load_uboot 根据不同启动设备,调用对应启动函数 阶段一源码分析 把uboot代码从启动设备拷贝内存,跳转到after_copy,在内存中执行 阶段一源码分析 after_copy 主要工作是点亮LED,保存启动信息,调board_init_f 阶段二详细分析 board_init_f() A.gd_t数据结构空间分配 B.回调一组初始化函数 C.对gd_t数据结构进行初始化 D.relocate_c

文档评论(0)

2299972 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档