频道栏目
首页 > 资讯 > 其他综合 > 正文

s5pv210-SD卡启动详解

17-08-21        来源:[db:作者]  
收藏   我要投稿

杭州夜晚没有星星?记忆中上一次看到星星是在家中的大树下听爷爷讲故事的时候。
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下烧录的需求

相关TAG标签
上一篇: SSM 登录演示
下一篇:移动编程开发教程_cocoapods
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站