嵌入式linux远程升级自己的程序(如何利用linux网络协议远程更新软件和操作系统)

本文目录
- 如何利用linux网络协议远程更新软件和操作系统
- 嵌入式Linux的GDB远程调试如何实现呢
- 嵌入式LINUX开发板怎样通过USB外接无线wifi实现系统和应用程序的升级更新
- itms平台正在对此设备进行远程升级什么情况
- 如何在嵌入式LINUX中增加自己的设备驱动程序
- 如何在linux嵌入式开发板上开机自动运行用户应用程序
如何利用linux网络协议远程更新软件和操作系统
首先从 Red Hat LINUX 的启动安装程序开始。从 Red Hat LINUX 的官方安装装手册上我们可以看到主要的几种启动方式:CDROM、软驱及从 dos 环境运行光碟上的 dosutils\\autoboot.bat 文件三种方式,对于我们来说这还是不够的,我们的 LINUX 工作站是没有软驱和光驱的,当然更加不会有 dos。通过分析各发行版第一张光盘的 /images目录下的 boot*.img 文件我们发现,这些启动镜像文件其实只有两个主要的文件:vmlinuz 内核和 initrd.img,initrd.img是一个压缩的最小文件系统。将这两个文件提取到己有的 LINUX 系统 /boot 目录下,在系统的 bootloader(一般是 LILO 或者 GRUB)配置文件中加入相应的配置行即可启动安装程序。以 Red Hat 7.2 和 GRUB 为例(使用 Red Hat 8.0 的网络启动镜像文件):
嵌入式Linux的GDB远程调试如何实现呢
有道启新嵌入式研究院——远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通过串口或TCP连接。使用GDB标准远程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调试功能。调试stub是嵌入式系统中的一段代码,作为宿主机GDB和目标机调试程序间的一个媒介而存在。
就目前而言,嵌入式Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机程序、用KGDB调试系统内核和用gdbserver调试用户空间程序。这三种调试方法的区别主要在于,目标机远程调试stub的存在形式的不同,而其设计思路和实现方法则是大致相同的。
而我们最常用的是调试应用程序。就是采用gdb+gdbserver的方式进行调试。在很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序。采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试。Gdbserver在目标系统中运行,gdb则在宿主机上运行。
***隐藏网址***
#tar jxvf gdb-6.4-tar-bz2
#cd gdb-6.4
#./configure --target=arm-linux --prefix=/usr/local/arm-gdb -v
#make
(这一步的时候可能会有问题,提示一个函数中(具体函数名不记得了)parse error,就是unsigned前边多了一个”}”,你用vi进入那一行把它删掉就行了。)
#make install
#export PATH=$PATH:/usr/local/arm-gdb
进入gdbserver目录:
#./configure --target=arm-linux –host=arm-linux
#make CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc
(这一步要指定arm-linux-gcc的位置,可能跟你的不一样)
没有错误的话就在gdbserver目录下生成gdbserver可执行文件,把它烧写到flash的根文件系统分区,或通过nfs mount的方式都可以。只要保证gdbserver能在开发板上运行就行。
下面就可以用gdb+gdbserver调试我们开发板上的程序了。在目标板上运行gdbserver,其实就是在宿主机的minicom下,我的red hat linux装在vmware下的。我是在minicom下#mount 192.168.2.100:/ /tmp后做的(这里参数-o nolock可以不加,不加这一步执行得反而更快些),hello和gdbserver都是位于linux根目录下,把主机根目录挂在到开发板的/tmp目录下。
要进行gdb调试,首先要在目标系统上启动gdbserver服务。在gdbserver所在目录下输入命令:
(minicom下)
#cd /tmp
#./gdbserver 192.168.2.100:2345 hello
192.168.2.100为宿主机IP,在目标系统的2345端口开启了一个调试进程,hello为要调试的程序。
出现提示:
Process /tmp/hello created: pid=80
Listening on port 2345
(另一个终端下)
#cd /
#export PATH=$PATH:/usr/local/arm-gdb/bin
#arm-linux-gdb hello
(gdb) target remote 192.168.2.223:2345
(192.168.2.223为开发板IP)
出现提示:
Remote debugging using 192.168.2.223:2345
0x40002a90 in ??()
同时在minicom下提示:
Remote debugging from host 192.168.2.100
(gdb)
连接成功,这时候就可以输入各种gdb命令如list、run、next、step、break等进行程序调试了。
以上针对通过nfs mount和tftp的方式,只能在主机上调试好后下载到开发板上运行,如果有错误要反复这个过程,繁琐不说,有些程序只能在开发板上调试。所以笔者采用了gdbserver的远程调试方式。希望对大家调试程序有用!
嵌入式LINUX开发板怎样通过USB外接无线wifi实现系统和应用程序的升级更新
开发板
能连wifi就说明可以接入局域网了,在开发板上开一个tcp服务,通过tcp上传升级包到板子上,然后执行
刷机
或者更新应用的操作就好了,跟新应用程序的话只需要解压替换就好了,要注意检查文件的
MD5
什么的,要是需要刷机的话,文件有问题,刷完机板子就起不来了
itms平台正在对此设备进行远程升级什么情况
说明设备有问题正在远程修复。
出现该提示,说明设备正在进行自动升级,从服务器下载文件,在本地进行安装,更新更多功能。
解决方法:在远程升级时只需等待即可,不用进行其他操作,耐心等待即可,如果在升级安装过程中断电或者关闭,会对设备造成损坏导致无法使用。
扩展资料:
设备远程升级修复程序:
远端设备中的基础守护单元接收升级指令,并对远端设备中的圈存机单元和基础业务服务单元进行监测,判断圈存面单元和基础业务服务单元是否处于工作状态,如果处于工作状态,要等待处于空闲状态时,会自动切换到系统维护状态,并将状态修改为升级中,准备开始进行升级。
基础守护单元根据远程交易终端管理系统的升级指令中所包含的升级包路径下载升级包,并启动升级程序,升级程序会先启动模拟的系统维护界面,然后关闭交易终端软件。
升级程序从基础守护单元下载升级包后自动检测升级包版本是否与本地版本冲突,检测通过后,先对本地版本进行备份,然后解压升级包并覆盖本地程序的目录。
升级程序对圈存机单元或基础业务服务单元进行升级;正常完成升级过程,则发送升级成功消息到远程交易终端管理系统,并更新本地状态文件,进行系统更新的远端设备升级完成。
如何在嵌入式LINUX中增加自己的设备驱动程序
Linux驱动程序的使用可以按照两种方式编译,一种是静态编译进内核,另一种是编译成模块以供动态加载。由于uClinux不支持模块动态加载,而且嵌入式LINUX不能够象桌面LINUX那样灵活的使用insmod/rmmod加载卸载设备驱动程序,因而这里只介绍将设备驱动程序静态编译进uClinux内核的方法。
下面以UCLINUX为例,介绍在一个以模块方式出现的驱动程序test.c基础之上,将其编译进内核的一系列步骤:
(1)
改动test.c源带代码
第一步,将原来的:
#include
#include
char
kernel_version=UTS_RELEASE;
改动为:
#ifdef
MODULE
#include
#include
char
kernel_version=UTS_RELEASE;
#else
#define
MOD_INC_USE_COUNT
#define
MOD_DEC_USE_COUNT
#endif
第二步,新建函数int
init_test(void)
将设备注册写在此处:
result=register_chrdev(254,"test",&test_fops);
(2)将test.c复制到/uclinux/linux/drivers/char目录下,并且在/uclinux/linux/drivers/char目录下mem.c中,int
chr_dev_init(
)函数中增加如下代码:
#ifdef
CONFIG_TESTDRIVE
init_test();
#endif
(3)在/uclinux/linux/drivers/char目录下Makefile中增加如下代码:
ifeq($(CONFIG_TESTDRIVE),y)
L_OBJS+=test.o
Endif
(4)在/uclinux/linux/arch/m68knommu目录下config.in中字符设备段里增加如下代码:
bool
’support
for
testdrive’
CONFIG_TESTDRIVE
y
(5)
运行make
menuconfig(在menuconfig的字符设备选项里你可以看见我们刚刚添加的’support
for
testdrive’选项,并且已经被选中);make
dep;make
linux;make
linux.text;make
linux.data;cat
linux.text
linux.data
》
linux.bin。
(6)
在
/uclinux/romdisk/romdisk/dev/目录下创建设备:
mknod
test
c
254
0
并且在/uclinux/appsrc/下运行make,生成新的Romdisk.s19文件。
到这里,在UCLINUX中增加设备驱动程序的工作可以说是完成了,只要将新的linux.bin与Romdisk
如何在linux嵌入式开发板上开机自动运行用户应用程序
应用程序本身就是在内核启动后运行的。
你得有传递文件的程序 比如ftp。建立好用户,用网络远程登录你开发板的linux,就能随时运行你想要的程序了。你得有linux系统使用的基础知识。
内核模块本身也可以动态加载
用root帐号 远程登录你的linux使用 insmod 命令加载模块 rmmod 移除已加载的模块。
内核和文件系统 调试好后就不需要频繁的编译内核了。 用网络把可执行文件传递给开发板就可以

更多文章:
avantage怎么设置为中文(Avantage安装丢失GIT)
2026年10月15日 03:00
activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)
2026年10月14日 20:30
excel连接sql数据库教程(excel怎么连接sql数据库)
2026年10月14日 19:40






