九鼎S5PV210开发板的SD卡启动、uboot tftp升级内核镜像

 

Note: 我的S5PV210板子的磁盘是emmc版本,不是nandflash版本。

 

1. SD卡内烧录uboot镜像,然后作为启动盘来启动emmc中的内核镜像和根文件系统。

只要破坏emmc内的uboot镜像,就可以使其从sd2启动 (因为emmc内没了完整的uboot,自然就无法启动内核)

然后使用SD卡烧录的工具软件在SD卡内烧录uboot镜像,启动盘就制作好了。

有了启动盘,就可以把uboot程序跑起来,

而uboot的作用是支持多种方式升级内核,例如tftp升级、SD卡升级,等等。

 

2. Uboot内使用tftp 升级内核

先设置好三个环境变量

之后在uboot内去ping PC windows主机

登录uboot后,网线连接板子与PC机,PC主机windows上ipconfig,以太网适配器有可能会显示:媒体已断开连接。实际上不要紧的,板子仍然可以ping通PC机windows的。
我们需要windows的IP地址。
要获取windows的IP地址,网线连接好,让板子先进到linux系统,再在windows上ipconfig就可以看到IP地址了(以太网适配器 以太网),然后重新进入uboot去ping。

只要ping后显示host 是alive的信息即表示ping成功。

 

3. 保证能ping通后,执行下载或烧录(或叫升级也行)新的内核

实测该tftp升级内核命令是搬移到内存DDR去,而不是磁盘emmc去。测试方法是搬移到DDR的内核镜像,在整机断电后重启就会失效。

 

之后执行bootm 30008000 或者 bootm 30008000 zImage

PS:bootm由boot和m构成,这里m指的就是memory,即ddr内存,

所以当使用bootm时,若ddr中没有内核镜像,则会启动失败。

可见启动新内核成功了。

 

然后遗憾的是现在还不能称之为升级新内核成功,因为只要现在的板子一断电,重新上电,uboot自动加载的内核依然是emmc内的旧内核。而我们已有的tftp只是把内核从PC主机上搬到了Linux板子上的DDR里,并没有覆盖写入到板载emmc的旧内核的位置。

我们可以通过uboot内的mmc或者movi指令来将DDR内的内核烧写到emmc内去。

重新进入uboot,

在uboot内执行help movi, 可以了解下movi命令的用法

 

和之前一样,先用tftp把zImage搬到DDR

现在,即使整机断电重启,启动的内核也是新的内核了。

看到这里可能会有疑问,为什么在执行movi命令时,也不指定将DDR里的kernel烧写到emmc的哪个起始地址去呢?

因为uboot里面有个分区表,uboot的分区表和内核的分区表是一样的,已经记录了磁盘emmc内的分区信息了。所以我们在使用movi命令烧写kernel时就不需要再指定emmc的地址了。

换句话说: uboot内部知道kernel分区在磁盘emmc中的具体地址,而我们命令中只需要告诉现在烧写进去的是kernel这个分区即可

 

4. 将emmc上的kernel镜像加载到DDR,如下图所示

 

5. 九鼎SD卡升级介绍

进入uboot

既然uboot已经启动了,uboot程序已经在跑了,这时候就可以把出SD卡拔出来,

然后创建个x210文件夹,里面放置uboot、内核、根文件系统镜像。

插上SD卡,执行上图该命令,应该就可以一次性完成升级uboot、内核和根文件系统镜像了。

九鼎科技相关文档如下图

 

 

 

.

posted @ 2021-01-30 17:48  一匹夫  阅读(841)  评论(0编辑  收藏  举报