嵌入式核心板固件更新

支持DEL的嵌入式核心板中带有U-Boot启动器,可以通过TFTP更新核心板的固件。DEL中的UBoot支持ConnectCard i.MX28,ConnectCard i.MX53和一些Connect ME9210等产品。如果您的产品不适用DEL固件更新的方法,请参考DEY的固件更新方法。

DEL使用Digi ESP for Embeded Linux这个IDE进行内核文件系统定制以及应用程序开发。DEL的安装光盘是带有IDE安装程序和BSP驱动包和工具链的Kubuntu系统光盘。当您安装好DEL系统开发环境后,它已经集成好进行固件更新所需的终端工具,TFTP服务器等,您可以直接在开发环境中进行固件更新。您也可以通过Windows的串口终端和TFTP服务器来进行固件更新。以下我们会介绍这两种方法。

首先,你的Windows系统中需要运行TFTP服务器,并在TFTP服务器指定的目录中存放有要更新的镜像。DEL镜像可以新建个内核项目编译出来,或是从官网下载相关的镜像。适用于Windows的TFTP服务器也可以从Digi的官网下载。 Digi TFTP服务器软件 Digi TFTP服务器是个绿色软件,您最好解压在磁盘上不带中文路径的目录下,点击配置按钮,把server选项卡按如下方式配置。

配置好tftp服务器后,如果您的镜像还没放到c:\tftpboot\,请手动拷贝到该目录下。

除了TFTP服务器外,还需要一个终口终端程序来与核心板的进行交互。一般可以用超级终端或是putty等支持串口的终端程序。比如我们用Putty,使用USB转串口,在windows上的串口号是com5,可以按如下方式配置putty为串口终端。

硬件上把电脑和核心板开发套件通过网线和串口线连接好,其中电脑端的IP要配置成核心板UBoot中的参数serverip指定的IP地址,并且和核心板的IP地址ipaddr在同一个网段。确保这些没有问题后,就可以通过点击TFTP服务程序左上角的小三角箭头运行TFTP服务,等待来自核心板的请求。

在核心板上,通过U-Boot的update命令,可以进行固件更新,完整的命令参数,请参考U-Boot用户手册或是在UBoot中输入

#help 命令名

来查阅。 比如下面命令用来更新Linux内核和文件系统固件

#update linux [tftp] [linux内核镜像文件名]
#update rootfs [tftp] [rootfs镜像文件名]

在这一章节,我们来学习如何利用虚拟机中的DEL开发环境来进行DEL固件更新。 首先把DEL光盘安装在一个virtualbox的虚拟机中,并升级到最新的5.9.8以上。为了使核心板同DEL虚拟机能在同一个网段,DEL的虚拟机的网络还要采用桥接模式,把DEL虚拟机的IP设置为192.168.42.1也就是默认的serverip地址,核心板上的默认IP保持不变。不同的电脑网络接口各不相同,下图仅供参考。

在虚拟机中,可以用下面命令快速配置虚拟机的IP地址

$sudo ifconfig eth0 192.168.42.1 netmask 255.255.255.0 up 

当然您也可以通过修改/etc/network/interfaces网络接口定义来修改DEL主机的IP地址。

如果您在电脑上使用的是USB转串口,还需把USB转串口透到虚拟机中,可以从虚拟机上方的菜单中Device>USB>勾选对应的USB转串口设备,如下图用的是FTDI芯片的USB转串口线缆。

Linux中的USB转串口通常会分配到/dev/ttyUSB0作为设备号,要使Digi ESP能够使用该串口来进行终端通信,需要给予一定权限,可以通过命令

$sudo chmod 666 /dev/ttyUSB0 

这样,您就可以利用Digi ESP中的Terminal来作为串口终端工具。 在ESP中,通过Window>Show View>Terminal来打开终端工具,点击该工具上方的表格状的配置按钮,打开Terminal配置,这里我们配置为串口终端,如下图所示:

点击ok,就打开了该串口终端,核心板上console口的输出将会在显示在这里。 打开核心板电源开关,并按任意键使U-Boot停止自动启动,如下图所示,这样就可以在U-Boot环境中操作相关命令。

打开电源,在U-Boot界面按任意健停留在U-Boot中而不是自启动进入系统。

先试一下能否从核心板ping通主机,如果无法ping通,检查网络设置和连线,确保连接和设置正常:

在进行更新固件之前,我们需要确保已经正确分区,可以通过flpart命令来初始化系统分区

#flpart

根据提示按“r”,“l”,“q”来初始化内置的flash为linux分区表,分区表变化时会提示是否保存,可以输入y或直接回车,如果有误操作,列出的分区表不是您所需要的,可以输入n来取消所有设定,重新设置。

接下来就可以用update命令进行固件更新了,默认地不输入后面参数,用tftp的方式和默认的文件名进行固件更新操作

#update linux
#update rootfs

更新完成后,可以通过dboot命令从U-Boot中进入DEL系统

#dboot linux flash 

如果我们希望配置开机启动进入Linux,只需配置一下U-Boot的自启动变量

#setenv bootcmd dboot linux flash
#saveenv