本文参考下面这篇文档写成,更多信息请阅读原文:

http://www.phytec.de/fileadmin/user_upload/images/content/1.Products/SOMs/phyCORE-AM335x/L-818e_1.pdf

TFTP方式

准备工作:

  • 确认上位机的tftp服务工作正常,且目录中有正确的image文件
  • 确认上位机与开发板网络工作正常
    • 我们的开发板默认设置ip为 192.168.3.11,默认的tftp服务器地址为 192.168.3.10
  • 确认开发板调试串口工作正常
  • 另外在barebox中,虽然有 /mnt/tftp 这个目录,但实际上这个目录是不能用tab键来自动补全,也不能用ls来查看目录的,只能输入文件名来下载。
  • barebox使用教程 / Introducing barebox
  • 在下面的文档中,文件名用以下格式,请将[xx]改为您的文件名
    • MLO:[MLO]
    • barebox:[barebox]
    • 内核:[zImage]
    • 设备树:[oftree]
    • 文件系统:[rootfs]



更新bootloader

首先在上电时在按提示进入barebox。

BSP 16.2.0 版本barebox启动log
???

然后更新 MLO。

注意如果是老版本的barebox可能没有 barebox_update 指令需要参考对应版本的BSP更新方法来更新barebox为新版本。

barebox_update -t MLO.nand /mnt/tftp/[MLO]
更新MLO log 注意文件名可能不同,下同
???

更新barebox。

barebox_update -t nand /mnt/tftp/[barebox]
更新barebox log
???


重启开发板,此后开发板都会运行新版本的barebox。

也就是说如果需要再次更新barebox,就可以按照本文的方法来更新。

reset

在reset后用同样的方式进入barebox,继续下面的操作。



更新内核、设备树、文件系统

此时的/dev:

首先擦除kernel

erase /dev/nand0.kernel.bb

将kernel写入nand

cp /mnt/tftp/[zImage] /dev/nand0.kernel.bb 

擦除设备树分区

erase /dev/nand0.oftree.bb

将设备树写入nand

cp /mnt/tftp/[oftree] /dev/nand0.oftree.bb

接下来烧写文件系统
首先格式化nand为ubi格式

ubiformat /dev/nand0.root -y


然后挂载该文件系统

如果在以后调试时,想要只更新内核、设备树、文件系统中的一个,那么可以在先运行该指令后,用ubiupdatevol来更新,不需要ubiformat和ubimkvol。

ubiattach /dev/nand0.root
挂载文件系统 log
???

此时的/dev:

ls /dev
???

在文件系统中分区,首先是内核

注意如果以前已经分过区,就不用再操作一遍,如果觉得操作有误,可以用ubiformat先格式化后重新来过文件系统

ubimkvol /dev/nand0.root.ubi root 0
建立文件系统分区 log
???

此时的/dev/内容:

ls /dev
????


将文件系统写入nand

cp /mnt/tftp/[rootfs] /dev/nand0.root.ubi.root
写入文件系统 log
???


OK,恭喜你已经完成了。

reset

此后,如果要单独更新内核等,只需要进去barebox,然后

ubiattach /dev/nand0.root
ubiattach log
???

然后直接用 ubiupdatevol 更新对应的文件就可以了。


TODO:

  • 步骤号
  • Barebox文档
    • 怎样修改ip地址
    • 怎样测试网络
    • barebox的官方文档
  • 补充bsp manual的其他信息
  • No labels