U-boot启动问题问答
来源:互联网 发布:网络形容男人的词 编辑:程序博客网 时间:2024/04/29 12:08
{//?上电系统从哪里开始,启动代码放在什么位置 上电后,有的系统可通过硬件管脚的电平来选择从Nandflash还是从Norflash启动。这里是指定从Nandflash启动的 启动代码U-boot 是不能放在RAM中的,因掉电就消失了。 }{//?boot第一件事为何是设置为SVC模式 为安全性,CPU本身提出了多种模式来实现安全性,和效率兼顾。 SVC模式就是CPU对资源的一种保护。在普通用户模式是不能访问到的。只有切换到SVC模式才能访问。} {//?并关闭中断,MMU,看门狗等 初始时为安全性,把系统单纯化, 排除掉别的干扰,仅让u-boot实现单纯的搬移代码, 的功能。 所以关掉中断,避免中断打断带来的保存返回的问题。 关掉MMU,因为u-boot软件是硬件实地址访问。 根本没有用到内存地址映射。 看门狗如果没关,硬件上默认到时会复位的。 所以要关掉}{//?为何设备初始引导不能用C代码,要用汇编代码 特殊指令,如操作协处理器, MMC CASH ,切换SVC模式等C不能做到。 另C是需要先准备栈的。}{//?U-BOOT为何要搬移到RAM中运行 在RAM中速度更快,但因掉电就没了,所以要保存在Nandflash或Norflash中。 如果不搬移,直接在Norflash上运行也是可以的。 Nandflash因是按块操作的,不太合适直接运行。}{//?U-boot如何传递参数到内核。 移植时要注意哪些 方式一 采用param_struct: (我们现在使用的是这种方式) 见common/cmd_boot.c go命令的优化 方式二 采用taglist:} {//---u-boot 的启动步骤(重点) //阶段一(汇编) 设置为SVC模式 基本硬件设备初始化 //如关闭中断,MMU,看门狗 初始化时钟,串口,flash,内存 见cpu/arm_cortexa8/start.S 的 cpu_init_crit 自搬移到内存 //copy_uboot_to_ram 或relocate 设置好栈 //stack_setup 跳转到第二阶段代码入口 //ldrpc, _start_armboot //阶段二(C语言) 初始化本阶段使用的硬件设备 //lib_arm/board.c/start_armboot -> init_sequence 搬移内核到内存 //common/main.c main_loop -> getenv ("bootcmd") bootdelay >= 0 && s && !abortboot (bootdelay)) 下的 run_command (bootcmd) 运行内核}
1 0
- U-boot启动问题问答
- u-boot 启动内核问题
- AM335x u-boot启动流程问题
- U-Boot启动过程
- u-boot启动过程
- U-boot启动详解
- Bootloader U-boot启动
- u-boot启动流程
- u-boot 启动成功
- u-boot启动流程
- U-BOOT启动
- u-boot启动流程
- U-boot启动分析
- u-boot启动流程
- U-Boot启动过程
- U-boot启动分析
- U-BOOT启动分析
- U-Boot启动过程
- VM下两个linux串口连接的问题
- IAR 8.3以后的版本编译TI BLE Stack会报类似如下的错误
- oracle--left join and 和left join where的区别
- Weblogic学习笔记-weblogic12c安装
- 我们可以转身,但是不必回头
- U-boot启动问题问答
- java验证码的生成
- hdu 4556 Stern-Brocot Tree
- sql行转列:越简单越好
- ajax mvc 请求 url 路径
- 排序算法归纳总结
- linux下释放cache内存
- ETL增量抽取方案
- 时间转化的处理