感谢支持
我们一直在努力

嵌入式Linux固件升级

开发需求


? 基于TCP/IP完成驱动模块和应用程序的更新、升级


特殊声明


该文档中驱动程序和应用程序统称为“固件”。


? 主  机:VMWare–Fedora 9


? 开发板:yc2440–64MB Nandflash;Kernel:2.6.24.4


? 编译器:arm-linux-gcc-4.0.0


设计原理图



说明:


?  开发板启动FileServer应用程序,作为TCP/IP的Server端,提供接收升级文件的服务。


? 当需要进行固件升级时,PC启动FileClient应用程序,作为TCP/IP的Client端,提供发送升级文件的服务。


? Shell脚本文件StartShell判断是否有固件需要升级,如果有更新现有固件后,启动更新后的固件,如果没有,启动现有固件。





















文件名称


所在目录


功能


FileClient


Linux PC下任意目录


PCTCP/IP客户端,


向开发板发送升级固件。


FileServer


Linux开发板


/tmp/update/


开发板TCP/IP服务端,


接收客户端发送的升级固件。


StartShell


Linux开发板


/etc/init.d/


替换相应固件,


启动相应固件。


 

实现步骤
1.      配置启动文件(开发板:192.168.1.168)


在开发板中,编辑开机启动脚本/etc/init.d/rcS


#cp ~/StartShell /etc/init.d/


#vi /etc/init.d/rcS


在该文件的最后面,填写下面信息:


./StartShell


重新启动开发板。


2.      发送更新文件文件(Linux PC:192.168.1.200)


#./fileclient ./AppMain 192.168.1.168


#./fileclient ./helloworld.ko 192.168.1.168


上述更新文件,被发送至开发板的/tmp/update/(FileServer所在的目录)目录中。


重新启动开发板,文件升级完成。


注:如果要动态加载驱动模块,首先必须在开发板上创建/lib/modules/2.6.24.4目录。


附件:
?  TCP/IP源码文件


http://www.linuxidc.com/Linux/2011-02/32265.htm


注:TCP/IP 服务尽量使用大端口号,如:50000,否则服务器端会有Bind失败的情况出现。


服务器端如果有防火墙,需要开放该端口号,否则客户端会有connect失败的情况出现。


? StartShell脚本


#! /bin/sh


#判断是否有新的驱动文件,如果有进行替换


if [ -f /tmp/update/helloworld.ko ]


then


        echo “it is a new ko file”


 


        rm /lib/modules/helloworld.ko -f


        cp /tmp/update/helloworld.ko /lib/modules/


        rm /tmp/update/helloworld.ko -f


 


else


        echo “it is not a new ko file”


fi


insmod helloworld


#判断是否有新的应用程序文件,如果有进行替换


if [ -f /tmp/update/AppMain ]


then


        echo “it is a new app file”


 


        rm /root/application/AppMain -f


        cp /tmp/update/AppMain /root/application/


        chmod 777 /tmp/update/AppMain


        rm /tmp/update/AppMain -f


              


else


        echo “it is not a new app file”


fi


 


#启动应用程序


cd /root/application/


./AppMain &


 


#启动TCP/IP服务程序


cd /tmp/update/


./FileServer &

赞(0) 打赏
转载请注明出处:服务器评测 » 嵌入式Linux固件升级
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏