uboot启动流程
更新时间:2024-01-21 23:14:01 阅读量: 教育文库 文档下载
Uboot在MPC860架构下的启动流程:
『运行在BOOTROM中』 (汇编S) 设置immr—> 设置msr—>
初始化I-cache和D-cache(unlockall— invalidall— disable-D-cache—enable-I-cache)—> 初始化mmu的tlb—> 重定位PC指针—> 设置栈指针r1 —>
设置r3为immr,调用cpu_init_f(immr)函数—> (汇编E)
(C代码S)
配置通过immr映射的CPU内部寄存器—>
配置BAx和ORx,使相关的bootrom或cpld等的片选可用—> (C代码E)
(汇编S)
设置r3为bootflag,调用board_init_f(type)函数—> (汇编E)
(C代码S) board_init_f()
执行init_sequence[]数组中的所有初始化函数,主要有以下内容,可根据实际情况添加: env_init(初始化enviroment变量相关的数据结构) init_baudrate(在数据结构上设置波特率) serial_init(初始化串口硬件)
console_init_f(从此处开始,可以使用串口,输出打印信息了) display_options
init_func_ram(配置SDRAM控制器,使SDRAM可用)—>
分配SDRAM内存空间;R1为特殊用途保留区;uboot存放uboot代码;malloc用作malloc函数的分配空间;bd_t存放单板信息;gd_t存放全局信息;R2为栈顶保留区;addr指向uboot代码区;id指向全局数据区;addr_sp指向栈顶;
R1ubootaddrmallocbd_tgd_tidaddr_spR2
—>
为bd_t和gd_t区设置初始数据—>
调用汇编代码段relocate_code,把addr_sp,id和addr作为参数传入 —> (C代码E)
(汇编S)
分别从r3,r4,r5中获取从C函数中传递过来的addr_sp,id和addr三参数—> 从bootrom向sdram的addr处,搬运uboot代码—> 『运行在SDRAM中』
在sdram中,重新定位代码中的全局符号表—>
设置r3和r4为gd指针和dest_addr,作为向调用函数传递的两个参数,调用board_init_r()函数—> (汇编E)
(C代码S) board_init_r()
重定位cmd_table[]表中的所有命令—> 调用flash_init()初始化flash设备—>
调用cpu_init_r(),根据需要初始化CPU的一些高级特性—>
调用mem_malloc_init()初始化malloc功能,此后,可以调用malloc()分配堆空间—>
调用env_relocate(),根据代码中的默认env值或bootrom中存放的env值,初始化内存中由env_ptr指向的env值—>
从env_ptr指向的环境变量中,获取ethmac地址和IP地址—>
调用device_init()初始化设备链表devlist,并把单板上的所有设备注册在这个链表上—> 调用jumptable_init()初始化全局数据gd_t中的jt表,以供后续应用程序调用—> 调用console_init()初始化stdin,stdout,stderr—>
调用interrupt_init()安装中断处理程序,复位减法计数器,开启中断功能—>
调用set_timer()设置时间戳timestamp为0,减法计数器中断会修改它的值—> 从环境变量中获取loadaddr和bootfile值—> 调用eth_initialize()初始化网口设备—> 通过永久for循环进入main_loop() (C代码E)
正在阅读:
uboot启动流程01-21
《小石潭记》教案06-06
河北工业大学化工学院导师04-21
用心惊肉跳造句02-11
原创整理:锐捷S3550系列交换机基本配置命令(二)07-28
火焰电视说明书06-18
α-淀粉酶在食品工业应用研究05-14
简析答尔丢夫形象及其塑造04-10
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 流程
- 启动
- uboot
- 全国大纲版2014届高三高考压轴数学(理)试题
- 西方经济学网上作业和期末考试答案(02 - 06)
- 快递包装的调查问卷
- 社会稳定风险评估报告
- 汇发(2009)24号 - 国家外汇管理局关于境内企业境外放款外汇管理有关问题的通知
- C语言二级考复习资料(1)
- 依法使用武器警械专项训练基本知识题库
- 2015年银行业初级资格考试《个人理财》模考押题卷(2)
- 2014年最新的苏教版本《数学》四年级上册第二单元《两、三位数除以两位数》教案
- 无机化学习题及答案 - 图文
- 数据库实验三
- 施工管理报告(定)
- 年产3万吨甲酸甲酯项目
- 心理学仪器
- 2012年社会工作概论(补修课)复习及答案
- 智能定时电源开关设计office(2)
- PDCA培育法进行卷烟品牌培育
- 2016年度井下煤质管理实施细则
- 尾水事故闸门安装方案(修)
- 劳动防护用品配备和使用管理制度