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