s5pv210-SD卡启动详解

杭州夜晚没有星星?记忆中上一次看到星星是在家中的大树下听爷爷讲故事的时候。
SD卡启动详解
Makefile为总纲;
start.s为主线;

在start.s
第一步:关看门狗;
第二步:设置SVC栈;
第三步:开icache;
第四步:初始化DDR(外部执行程序);
第五步:重定位,从SD卡第45扇区内容到DDR的0x23e00000(外部执行程序);
第六步: 死循环(不能丢);

SD卡启动流程(bin文件小于16KB时和大于16KB时)
(1)启动的第一种情况是整个镜像大小小于16KB。这时候相当于我的整个镜像作为BL1被steppingstone直接硬件加载执行了而已。
(2)启动的第二种情况就是整个镜像大小大于16KB。(只要大于16KB,哪怕是17KB,或者是700MB都是一样的)这时候就要把整个镜像分为2部分:第一部分16KB大小,第二部分是剩下的大小。然后第一部分作为BL1启动,负责去初始化DRAM并且将第二部分加载到DRAM中去执行(uboot就是这样做的)

为什么是第45扇区?
BL1在SD卡中必须从Block1开始(Block0不能用,这个是三星官方规定的),长度为16KB内,我们就定为16KB(也就是32个block);BL1理论上可以从33扇区开始,但是实际上为了安全都会留一些空扇区作为隔离,譬如可以从45扇区开始,长度由自己定

为什么是0x23E00000?
因为在uboot中经常使用0x23E00000,所以为了方便,参考uboot

BL1:
因为重点在第五步中,所以要写一个c程序(命名自定义-sd_relocate.c)
1.start.s
2.makefile
3.link.lds
4.sdram_init.s(.s是汇编,初始化DDR)
5.write2sd(在BL1和BL2文件夹同目录,linux下烧录)
6.mkv210_image.c (主要作用就是由usb启动时使用的led.bin制作得到由sd卡启动的镜像210.bin)
7.sd_relocate.c
因为执行BL2需要跳转到0x23E00000

BL2:
start.s 为主线
makefile为总纲
任务为:LED闪烁(已写好相关程序)
1.led.c
2.link.lds
3.makefile
4.start.s

总结:
1.Makefile是编译
2.link.lds链接
3.start.s是具体执行的程序、
sdram_init.s
led.c
mkv210_image.c
5.write2sd是linux下烧录的需求

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值