linux c 读取 sd卡 序列号_linux嵌入式第一站>bootloader

这里介绍的是bootloader中的一种u-boot;首先所有的芯片手册,及分析都是基于exynos4412的。

20d99346bee27b9ef4f0ad0d9bd2fb95.png

三星exynos4412关于soc的简单图示

     在u-boot启动之前,芯片中有一段固定代码由三星公司烧写在IROM中,芯片上电后后通过CPU的OM引脚来判断启动方式(SD/FLISH);再会把SD/FILSH中的代码搬移到SRAM中运行(注意此内存只有256K),所需要做的事就是初始化时钟,初始化DRAM···;之后将其余代码放入DRAM中引导启动uboot等;

d0b454ef23a4aed0364907159543beb1.png

这张图是IROM的结构图

    BL0/BL1/BL2是irom固件代码,三者之间的关系:BL0将BL1(bootloader的前(8KB--BL1)加载到iRAM;BL1然后在iRAM中运行将BL2(剩下的bootloader)加载到SDRAM;BL2加载内核,把OS在SDRAM中运行起来,最终OS是运行在SDRAM(内存)中的。

其中有个点:

5cee32b83c3a570d3ab9af117142375b.png

irom物理地址函数指针

   IROM中的物理地址会被安排为函数指针,通过对地址的引用会调用相关 的函数功能;SDMMC_ReadBlocks->实现将代码搬移到DstByte的内存地址空间中;

为了加深理解,我们可以自己写一个类bootloader:

    实现板子上电后从SD卡中读取启动代码,并点亮我们制定的led灯;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值