嵌入式启动细节

并不是先从uboot启动,在这之前,有一段固化在SOC硬件内部的启动代码(一般在CPU里的CODEROM里,这个东西是集成的)

2.它的任务就是初始化储存的接口,建立储存的映射(把设备的地址映射到内存ram里)

具体地,它会根据cpu的管脚的情况和efuse的值,来判断系统的启动方式是从nor,nand,还是sd卡

 2.1)nor启动的时候,就把nor flash映射为0000地址,然后系统复位,跳转到uboot的中断向量表的第一行代码=nor的第一段代码去执行

2.2)nand或者sd启动的时候,因为他们不能随机读写,随机读写才可以直接运行代码,因此需要把代码先拷贝到内存中。但是由于此时内存还没有初始化,所以,这时候,会借助芯片内部的sram来代替内存做这个事情,具体地就是,会把保存在nand或者sd头部的通常是长度为4k的代码拷贝进sram,这4K代码运行起来后会执行各种初始化,和拷贝的工作;最后系统要起来的时候,也是在sram里面去先跑的这个拷贝进来的启动代码。

3.cpu里面主要起作用的是它的各级寄存器和逻辑运算单元,我们对启动方式(拨码开关)的设置,本质上是对cpu引脚的设置;而这些固话在cpu内部的启动微码,本质上就是对于cpu管脚设置的判断程序和对应的运行逻辑。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值