)
背景使用“Purple Pi R1烧录流程”的tftpd32软件的方法每次都会将uboot、kernel、rootfs都依次升级了但是有时候我们不需要全部升级只需要升级三者之一这个时候就需要有办法单独升级了。“Purple Pi R1烧录流程.pdf”的“更新uboot和kernel”章节中关于使用tftp指令升级uboot和kernel的方法需要在ubuntu下安装tftp服务器但是教程中没有说明。下面对在ubuntu下安装tftp服务器的方法做一下简要说明前提ubuntu系统能够“桥接”上网ping www.baidu.com 有数据回传第 1 步安装 tftp安装 tftp 所需的软件。首先需要安装 tftp-hpatftpd-hpa前者是客户端后者是服务程序, 在终端下输入 sudo apt-get install tftp-hpa tftpd-hpa安装 tftp-hpa 和 tftpd-hpa。然后还需要安装 xinetd在终端下输入 sudo apt-get install xinetd安装好 xinetd。第 2 步配置/etc/xinetd.conf配置相关服务文件。进入根目录下的 etc 文件夹cd /etc/首先看目录中有没有一个xinetd.conf 文件如果没有则新建一个有的话查看内容看是否与下面的一致若不一致则修改内容如下:# Simple configuration file for xinetd## Some defaults, and include /etc/xinetd.d/defaults{# Please note that you need a log_type line to be able to use log_on_success# and log_on_failure. The default is the following :# log_type SYSLOG daemon info}includedir /etc/xinetd.d第 3 步配置/etc/default/tftpd-hpa配置 tftp 服务器命令sudo vim /etc/default/tftpd-hpa将内容修改成# /etc/default/tftpd-hpaTFTP_USERNAMEtftpTFTP_DIRECTORY/tftpboot#这是你 tftp 服务器的工作目录自行修改注意在新建工作目录时最好修改其权限为 777命令 sudo chmod 777 /tftpbootTFTP_ADDRESS0.0.0.0:69TFTP_OPTIONS-l -c -s第 4 步配置/etc/xinetd.d/tftp然后进入 xinetd.d 文件夹cd xinetd.d查看是否有一个 tftp 文件如果没有就新建一个如果有的话就查看内容是否与下面的一致不一致则修改内容如下service tftp{socket_type dgramwait yesdisable nouser rootprotocol udpserver /usr/sbin/in.tftpdserver_args -s /tftpboot#log_on_success PID HOST DURATION#log_on_failure HOSTper_source 11cps 100 2flags IPv4}其中 server_args 一行是配置服务器的文件存放的位置就是进行 tftp 传输的时候都是从该文件夹中搜索文件的第 5 步修改权限修改所需文件夹的权限。需要修改的文件夹也就是上一步提到的那个服务器文件存放的文件夹以我的配置文件为例创建一个文件夹sudo mkdir /tftpboot然后把它可以设置成访问权限最宽松的sudo chmod 777 /tftpboot也可以设置成合适的权限。第 6 步重启服务重新启动服务。sudo service tftpd-hpa restart这也是我经常疏忽的一步当配置好 tftp 的配置文件后需要重新启动一下 xinetd在终端中输入 sudo /etc/init.d/xinetd reload重新加载一下进程再输入 sudo /etc/init.d/xinetd restart重启服务。记住每次修改完配置文件后都需要重新启动一下服务。执行次序sudo service tftpd-hpa restartsudo /etc/init.d/xinetd reloadsudo /etc/init.d/xinetd restart注意新增如果在“sudo service tftpd-hpa restart”报错提示需要某一段指令查看具体信息最终将问题定位在“端口号上”需要将“TFTP_ADDRESS0.0.0.0:69”中的端号69改成其他的。测试的时候get xxx与tftpboot文件夹中创建的文件夹要保持一致。tftp升级uboot的相关步骤1、首先运行“source ./Release_to_customer.sh -f nand -p ssd202 -m 256”生成新的images文件夹2、cd ./images 进入images\3、cp uboot_s.bin /tftpboot (注意/tftpboot是tftp服务器的文件夹)4、重启开发板按回车后进入uboot的命令行模式“SigmaStar # ”5、设置好环境变量ipaddr、serverip让开发板的ip地址和ubuntu主机在用一个网段。6、依次运行指令tftp 0x21000000 uboot_s.binnand erase.part UBOOT0nand write.e 0x21000000 UBOOT0 ${filesize}nand erase.part UBOOT1nand write.e 0x21000000 UBOOT1 ${filesize}7、reset重启uboot然后按回车打断查看是否完成uboot更新 可以查看uboot版本号的日期时间就可判断是否已经使用新版的uboot了kernel的升级方法应该和uboot类似运行的指令可以查看images/“[[kernel.es”里面的内容但是我还没测试。# - this is for comment / total file size must be less than 4KBtftp 0x21000000 kernelnand erase.part KERNELnand write.e 0x21000000 KERNEL ${filesize}nand erase.part RECOVERYnand write.e 0x21000000 RECOVERY ${filesize}% - this is end of file symbol