永发信息网

如何烧写u-boot到SD卡

答案:1  悬赏:60  手机版
解决时间 2021-03-14 05:25
如何烧写u-boot到SD卡
最佳答案
长话短说开始搞SD卡烧写UBOOT,从SD启动UBOOT。从s5pv210_irom_applicationnote_preliminary_20091126.pdf知道,s5pv210启动分BL0、BL1、BL2阶段。BL0是s5pv210内部IROM固化的代码,这段代码根据OM引脚配置状态来选择从哪个外部存储设备加载BL1段代码(实际上BL1代码就是我们编写的UBOOT的前8K代码,这段代码要包含完整的将后半部UBOOT代码复制和清bss段的功能,当然我们要从SD卡启动烧写在上面的UBOOT,OM引脚就必须配置为从SD卡启动配置)。图1从上图可知,从sd启动的时候BL0加载的代码是从第512个字节处开始加载代码,为什么要这样做呢?由于以后功能扩展的需要三星的软件工程师写的固化到IROM中的BL0代码是从SD卡的512字节处加载BL1的,他就是这样写的,我们对应UBOOT放置在SD卡中的位置就要往后移动512字节,后面有介绍怎么指定把uboot写到sd卡指定的位置的命令。还有一定要注意如下所示的地方:图2在BL1之前要加16个字节的头部信息。也就是在真正的UBOOT第一条指令之前要加16个字节的头部信息,于是就有我们所看到的uboot代码如下的用宏定义的一段:[cpp]viewplaincopy#ifdefined(CONFIG_EVT1)&&!defined(CONFIG_FUSED).word0x2000.word0x0.word0x0.word0x0#endif.globl_start_start:bresetldrpc,_undefined_instructionldrpc,_software_interruptldrpc,_prefetch_abort其中的.word0x2000代表BL1size(8K长度),.word0x0为保留字节.word0x0为checksum(后续会通过一个mkbl1工具来计算bl1的checksum并填写这个位置),最后一个.word0x0也为保留字节。再来看看uboot的下面的部分,如果bl0正常读取了bl1,代码就会到如下段:[cpp]viewplaincopyldrr0,=PRO_ID_BASEldrr1,[r0,#OMR_OFFSET]//读OM引脚的配置状态bicr2,r1,#0xffffffc1#ifdefCONFIG_VOGUESldrr0,=ELFIN_GPIO_BASEldrr1,=0x00000001strr1,[r0,#GPH0CON_OFFSET]ldrr1,=0x5500strr1,[r0,#GPH0PUD_OFFSET]ldrr1,=0x01strr1,[r0,#GPH0DAT_OFFSET]#endifcmpr2,#0x0@512B4-cyclemoveqr3,#BOOT_NAND//根据OM引脚配置状态来给R3寄存器赋予代表系统是从何冲外部存储器启动的配置值。cmpr2,#0x2@2KB5-cyclemoveqr3,#BOOT_NANDcmpr2,#0x4@4KB5-cycle8-bitECCmoveqr3,#BOOT_NANDcmpr2,#0x6@4KB5-cycle16-bitECCmoveqr3,#BOOT_NANDcmpr2,#0x8@OneNANDMuxmoveqr3,#BOOT_ONENANDcmpr2,#0xcldrsp,_TEXT_PHY_BASEsubsp,sp,#12movfp,#0ldrr0,=0xff000fffbicr1,pc,r0cmpr2,#0x14moveqr3,#BOOT_NOR#if0cmpr2,#0x8moveqr3,#BOOT_SEC_DEV#endifcmpr2,#(0x1//ldrsp,=0xd0036000ldrsp,=0xd0035400//BL1段的函数进行操作的堆栈位置,这里我修改了堆栈到了0xd0035400是由于图2中所示BL0代码进行了它自己代码堆栈的初始化,而RW/ZIregionHeap的最低部就位于0xd0035400,为了不修改BL0堆栈和BL0代码已经写好的一些函数功能(会在下面用到),我将堆栈修改到了0xd0035400subsp,sp,#12movfp,#0bllowlevel_init//这里会进行始终,内存,串口初始化之后运行到ldrsp,_TEXT_PHY_BASE//由于上面一步已经初始化了DRAM,所以在这里将以后的堆栈设置到了DRAM中的位置(以后BL2代码中函数都是基于此堆栈)subsp,sp,#12movfp,#0ldrr0,=0xff000fffbicr1,pc,r0beqnand_bootcmpr1,#BOOT_ONENANDbeqonenand_bootcmpr1,#BOOT_MMCSDbeqmmcsd_bootcmpr1,#BOOT_NORbeqnor_bootcmpr1,#BOOT_SEC_DEVbeqmmcsd_boot//代码判断要拷贝后,读取之前存入到用户使用寄存器中的值来判断此次启动从何种外部存储设备启动,这里为sd卡启动~~~~~省略若干代码~~~~~~~~mmcsd_boot:#ifDELETEldrsp,_TEXT_PHY_BASEsubsp,sp,#12movfp,#0#endifblmovi_bl2_copy//最后BL1代码来到此处从sd卡拷贝剩余的代码bafter_copy
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
某种玩具汽车去年的成本价为200元,若按定价
秋天的云几十个字作文
龙元二手车交易行在什么地方啊,我要过去处理
tell 和telling有什么区别吗?
孝感到应城需要多长时间
甲数是a,比乙数的3倍还多0.2,求乙数是多少
昆明裕泰兴商贸有限公司在什么地方啊,我要过
工司为员工买社保,扣270元那么工司出多少?
感动中国人物江一燕议论文
什么中草药可以避孕
眉山市尚义镇寿灵村是不是要修安置点,谢谢
悦郁主题酒吧在哪里啊,我有事要去这个地方
may后可加动词的三单形式吗
湖南卫视美肤宝元宵喜乐会节目短信互动发信息
铭铭超市怎么去啊,有知道地址的么
推荐资讯
为什么我玩腐烂国度,按w确是冲刺,求解
东坝乡连丰村卫生所地址在什么地方,想过去办
茶山镇在哪里啊,我有事要去这个地方
知聊禁止登录三天,绑定了微信用微信登录可以
衤字旁加块的后半部分 读什么?
有那些中草约是敷在脖子,腰可以祛湿解毒的
某市发行足球彩票,计划发行总额的42%作为奖
200度的烤漆房,人在里面能待吗
http://www.yh978.cn/是骗人的网站么
快递加急运费多少
天苍苍野茫茫中的苍苍是什么意思
肚脐眼周围很疼,特别是肚脐眼右侧一按压就疼
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?