历史上的今天
今天是:2024年12月22日(星期日)
2020年12月22日 | s5pv210-SD卡启动详解
2020-12-22 来源:eefocus
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下烧录的需求
史海拾趣
|
这是我的毕业设计 希望大家帮帮我 我现在已经焦头烂额了 网上都是基于DSP控制的滤波器 就是没有基于单片机控制的 真的郁闷 我的邮箱是westlife009@tom.com 我的QQ是232125740 欢迎大家一起交流 [ 本帖最后由 westlifeljb 于 2008-5-15 17:15 编 ...… 查看全部问答> |
|
这是一个初学者常问的问题,也是初学者问嵌入式该如何入门的根源。我感觉有两个方面,偏硬和偏软.我不认为嵌入式开发软件占绝对比重,相反,软硬件都懂,才是嵌入式高手所应该追求的,也是高手的必由之路。 硬件道路: 第一步: pcb设 ...… 查看全部问答> |
|
关于vec调试中,怎么调才能让频率正确(具体的参数) 例如:720*572(13.5hz)转换成vga 800*600(75hz)。大小可以跳出,但75hz调不出来 请教大虾指导。… 查看全部问答> |
|
湿度计的读写时序包括读时序和写时序,写时序如下:向 SH T21写8 个数据位 ,然后在第9 个时钟周期 ,读取 SHT21 的应答位 ,应位为 0 ,表示SHT21正确接收到了一个字节 ,也就是 8 个写时序加 1 个读时序。SH T21 读写数据的规则是:DA TA在 SCK时钟的下 ...… 查看全部问答> |
|
*****香版主:IAR422+st-linkII在中断内调试出问题 用IAR442,IAR5.X还未支持ST-LINK II, ST-LINK II也不支高密度的FLASH,IAR422下用st-link II 在中断内断点调试,老是会跳不出中断!何解?打算以后用IAR5.X+WIGGLER+HJTAG.EXE 不知功能如何?有没有ST&nb ...… 查看全部问答> |
|
能量效率更高、功能更强的新型LED固态发光(SSL)产品的发展很快,被认为是照明市场上的主要革命性进步。在许多垂直应用中,如信号灯、汽车、LCD TV背光,LED已经毫无争议地成为传统光源的替代产品。但对于范围更广的通用照明,LED还没有被广泛接受 ...… 查看全部问答> |




