• TCP/IP源码文件http://download.csdn.net/source/2996852注: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 -fcp /tmp/update/helloworld.ko /lib/modules/rm /tmp/update/helloworld.ko -felse
echo "it is not a new ko file"fiinsmod helloworld#判断是否有新的应用程序文件,如果有进行替换if [ -f /tmp/update/AppMain ]then
echo "it is a new app file"rm /root/application/AppMain -fcp /tmp/update/AppMain /root/application/chmod 777 /tmp/update/AppMainrm /tmp/update/AppMain -felse
echo "it is not a new app file"fi#启动应用程序cd /root/application/./AppMain &#启动TCP/IP服务程序cd /tmp/update/./FileServer &Embedded Linux firmware upgrade
Development requirement • Based on TCP/IP to complete the driver modules and application updates, upgrades
Special Statement
Drivers program and application program in this document are collectively called the "firmware".
• Main machine: VMWare-Fedora 9
• Development Board: yc2440-64MB Nandflash; Kernel: 2.6.24.4
• Compiler: arm-linux-gcc-4.0.0
Design schematic
Description:
• Start FileServer application on development board, as the TCP/IP server, providing service to receive the upgrade file.
• When you need a firmware upgrade, PC starts FileClient application, as the TCP/IP client, providing service to send the upgrade file.
• Shell script file StartShell determine whether there is the firmware need to upgrade, if it is existed, launch the updated firmware, if not, start the existing firmware.
FiledirectoryfunctionFileClientany directory in linux PCPC TCP/IP client,
Send upgrade firmware to
development board.FileServer/tmp/update/ inlinux development boardDevelopment board TCP/IP server,receive the upgrade firmware from client.StartShell/etc/init.d/ inlinux development boardReplace firmware,Start frimware. Implementation steps
1. Configuration startup files (development board: 192.168.1.168)
In the development board, edit the boot script file /etc/init.d/rcS, input the following information:
# cp ~ /StartShell /etc/init.d/
# vi /etc/init.d/rcS
Finally, in the end of the document, input the following information:
./StartShell
The update file is sent to the development board of the /tmp/update/(FileServer
directory) directory.
Restart the development board, file upgrade is OK.
Note: If you want to dynamically load the driver module, first the directory
/lib/modules/2.6.24.4 must be created in development board. Attachment:
• TCP/IP source code file http://download.csdn.net/source/2996852
Note:
TCP/IP service port to make use of large numbers, such as: 50000, otherwise there will be bind server failure situation.
If the server has a firewall, you need to open up the port number, otherwise the client will connect failure situation.
• StartShell script
#! /bin/sh
# Determine whether there is a new driver file, if there is to be replaced
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
# Determine whether there is a new application file, if there is to be replaced
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
# Start the application program
cd /root/application/
./AppMain &
# Start TCP/IP service program
cd /tmp/update/
./FileServer &