uboot移植二:源码移植烧录工具

一、复制烧录工具的源码文件夹到uboot根文件下面。文件夹中文件如下:


执行脚本./sd_fusing.sh /dev/sdb就能将uboot烧录到开发板的SD卡中,脚本中使用的是linux下的dd命令进行烧录的。

二、uboot烧录后的启动现象如下:


第一个SD checksum error是s5pv210采用第一顺序启动SD0(内部的iNand启动)校验和失败导致的;第一顺序启动失败后会转向第二顺序启动SD2(外部的SD卡),SD卡里面已经烧录了uboot,理应当不会出现校验和失败的情况,但串口依旧打印了SD checksum error,表示SD卡中的uboot校验和失败;接着会转向串口启动,显然此时会启动失败。(注意此时的uboot中的串口还没有初始化,此时串口之所以可以打印信息是由于内部的irom、iram中有对串口的初始化程序)。

三、分析为什么SD卡中的uboot会校验和失败

分析校验和为什么失败,就得从怎样生成校验和入手,生成校验和的支持代码在烧录文件夹的C110-EVT1-mkbl1.c文件中。


从这段代码中可以看出,生成的校验和放在了从开始起的第8个字节处。

我们再看看s5pv210内部是怎样进行校验的


整个头部预留了16个字节。头四个字节放的是BL1的size,根据数据手册,这里应该放8k;第8个字节处放的是校验和checksum;s5pv210内部会按照这样的规则进行校验,而我们生成校验的代码中只填充了checksum。所以我们可以在uboot的头部预留16个字节的空间,头四个字节填充8k,另外12个字节填充0,执行C110-EVT1-mkbl1.c的代码后,会将第8个字节起的4个字节填充上checksum。此时制作uboot镜像的校验代码与s5pv210中的校验相匹配,则会校验通过。

四、修改uboot,重新编译烧录uboot


在uboot的start.S的开头加上16个字节的占位符,其中前四个字节用8k填充,也就是用0x2000

重新编译烧录运行后,得到下面的输出,此时只有iNand没有校验通过,SD卡已经校验通过,从目前的情况分析来看,此时只解决了uboot的烧录运行问题,开发板电源没有常亮,表明开发板供电锁存没有成功,串口初始化没有成功,这些都在uboot启动的第一阶段start.S中,这些均是下一阶段需要解决的问题。



猜你喜欢

转载自blog.csdn.net/Wenlong_L/article/details/80838327