引言
嵌入式系统的开发与应用是目前发展的一个热点,而嵌入式系统的开发手段在嵌入式开发中起着至关重要的作用。其中,通过以太网调试和运行开发程序的方法在嵌入式系统的开发中得到了广泛应用,本文就此展开说明。
mClinux特点简介
1. 取消了内存管理单元MMU,具有完整的网络功能。
2. 完备的文件系统支持,采用了romfs文件系统作为根文件系统,相对于一般的ext2文件系统要求更少的空间。
3. 使用了flat可执行文件格式:elf格式有很大的文件头,flat文件对文件头和一些段信息做了简化。
4. 体积小,可移植性强。

图1 开发环境示意图
常见的基于mClinux的嵌入
式系统开发环境的构建方法
在嵌入式系统的开发过程中,通常都要建立交叉编译环境,图1为常见的嵌入式系统开发环境示意图,基于以太网下的调试一般应将宿主机和用户板接入到局域网中,本文以mClinux +S3C4510B的开发环境为例进行说明。通常的做法是在宿主机上安装RedHat Linux操作系统,并同时安装针对ARM开发的工具链arm-elf-tools。这样,在宿主机上编辑和编译好的用户程序,就可以通过以太网,将编译后的可执行文件下载到用户板来运行。下载方式主要有以下几种。
FTP方式
首先需要打开一个超级终端,设置好相应的通讯参数,再给系统上电,就可以在超级终端里看到mClinux的启动信息。这里指明宿主机的IP地址是:10.5.22.247,用户板的IP地址是:10.5.22.8,执行如下命令来配置用户板的IP:
# ifconfig eth0 10.5.22.8
eth0 指网络设备。需要注意的是,用户板的IP地址需和宿主机的IP地址在同一网段,否则难以正常的访问宿主机。
这时如果可以ping通宿主机,就可以通过FTP方式访问宿主机的网络资源了。
接下来选择用户程序的存放目录。应注意,如果用户板用的是romfs文件系统,那么只有少数几个目录可以访问(如tmp ,var等)。选好存放目录之后,就可以通过FTP方式访问宿主机了,键入如下命令:
# cd /tmp
# ftp 10.5.22.247
然后输入用户名和密码以确定是否具有访问权限,成功登陆之后,需要确定文件传送格式。FTP可以用binary和ascii两种方式来传送文件,这里选择的是binary方式。输入以下指令来获取文件:
# binary
# get filename
# bye
执行# bye后就可以退出FTP。这时可以键入ls命令来查看文件是否已经传到选定的目录下。接下来要做的是改变文件的权限,如果没有可执行权限,在用户板中就无法运行程序。
# chmod 755 filename
这里的参数“7”表示拥有读、写和执行的权限;“5”仅代表拥有读和执行的权限。完成以上配置后,就可以用如下命令执行用户程序了:
# ./filename
NFS方式
使用NFS (NetWork File System)方式可以使嵌入式应用程序的开发和调试变得更为方便,并在不同的机器、不同的操作系统间共享文件,因此,NFS在嵌入式开发中得到了广泛的应用。目前,在mClinux-2.4-x版本下配置NFS相对比较困难,下面就配置问题进行详细说明。
服务器(Sever)端的设置
首先需要设置 Linux下的/etc/exports文档,它是NFS的主要设定文档。在Linux下的shell终端,进行如下操作:
# vim /etc/exports
将这个默认的空文件修改为只有如下一行内容:
/home/tmp *(rw,no_root_ squash)
这就表示在任何情况下,客户端都可以访问服务器端的/home/tmp目录。
接下来要在服务器端开启如下的两个进程:
1.开启NFS服务
# /etc/rc.d/init.d/nfs start
启动NFS服务: [ OK ]
Starting NFS quotas: [ OK ]
启动NFS 守护进程: [ OK ]
启动NFS mounted : [ OK ]
2.开启portmap服务
# /etc/rc.d/init.d/portmap start
配置完成后,可用如下办法简单测试一下NFS是否配置成功(注意在Linux下要将防火墙关闭):在宿主机上自己mount自己,看是否成功。例如,在宿主机/目录下执行:
mount 10.5.22.247:/root/ /home/zhang/mount
然后到/home/zhang/mount/目录下看是否可以列出/root/目录下的所有文件和目录。若可以,则说明NFS在服务器端的配置成功。
客户端(Client)的设置
相对于Sever端的设置,Client端使用的是 mClinux, 设置起来相对复杂一些,需要对mClinux的内核重新编译,并进行相关配置。需要设置Customize Kernel Settings 和 Customize Vender/User Setings(NEW)两项。
1. 对Customize Kernel Settings进行配置
[ * ] Customize Kernel Settings
进入File systems的设置,可以看到Network file systems---,将NFS File system support选中。
2.设置Customize Vender/User Setings(NEW)
[ * ] Customize Vender/User Setings(NEW)
在Customize Vender/User Setings 项目中,选择Network Applications之后,需要其中的portmap服务,[*] portmap即可。然后选择mount和umount服务使mClinux支持mount和umount指令。mClinux-2.4-x的内核对NFS mount的支持不够,这使得在mClinux上添加NFS服务存在一些困难,而在较新的mClinux版本mClinux-2.6-x中重写了对NTFS文件系统的支持。在BusyBox中选择mount和umount及mount NFS support三项即可,这样客户端的配置完成。最后重新编译内核,指令如下:
# make menuconfig ------------- 内核配置
# make dep -------------寻找依存关系
# make clean------------清除以前构造内核时生成的文件
# make lib_only-----------该命令编译库文件
# make user_only----------编译用户应用程序文件
# make romfs ----------生成romfs文件系统
# make image----------生成romfs.o文件
# make
重新编译后,会在.../image/目录下生成image.rom文件,它是压缩了的内核在rom的映像文件,将其烧写到用户板的Flash即可。用户板重新启动之后,新的内核已经开始工作,这时就可以在终端里进行NFS mount了(以在minicom为例)。输入如下指令:
#mount -t nfs 10.5.22.247:/home/tmp /var/tmp /nfsmount -o nolock
# mount
执行完两条指令后,在Linux下的minicom里会看到如下信息:
Rootfs on / type rootfs (rw)
/dev/rom0 on / type rootfs (ro)
/proc on/proc type proc (rw)
/dev/ram0 on/var type ext2 (rw)
/dev/ram1 on /disk type ext2 (rw)
10.5.22.247:/home/tmp on /var/tmp type nfs (rw,v3,rsize=8192,hard, udp,nolock,addr=10.5.22.2)
这样就将宿主机的/home/tmp目录挂载到了用户板的/var/tmp目录。
结语
通过以上两种方式的比较,可以看到,就开发的效率来说,NFS的方式明显具有优势。毕竟,用户开发的程序往往不能一次就调试成功,采用NFS方式使得多人同时开发一个程序成为可能。事实上,除了文中提到的两种方式以外,还有其它以太网环境下的嵌入式开发手段,如telnet等,限于篇幅,不再详细介绍。
基于嵌入式系统的以太网控制器设计
5895
嵌入式工业以太网控制器的设计和应用
1198嵌入式工业以太网的应用研究
6655
高性能嵌入式工业以太网监控系统电路设计
1395
以太网接口怎么实现嵌入式系统的网络互连?
嵌入式以太网开发
嵌入式开发中的一些硬件相关的概念有哪些
嵌入式开发板环境的搭建
嵌入式开发流程
嵌入式开发流程是怎样的?
嵌入式开发要学什么
嵌入式开发要学什么内容 嵌入式开发学习路线介绍
Linux下嵌入式开发环境有哪些?
VScode嵌入式开发如何入门
分享买来的各种嵌入式开发课件(3)
基于嵌入式以太网控制的接口电路及软硬件实现方法
基于嵌入式模块comX的实时以太网
基于DSP的嵌入式以太网接口电路设计
基于TCP IP协议栈的嵌入式以太网终端设计
基于双以太网处理器Jupiter实现嵌入式设备网络的设计
如何完成嵌入式串行千兆以太网的设计
怎么实现嵌入式以太网数字语音广播系统的设计?
怎么实现基于S3C4480X的嵌入式以太网接口设计?
想做以太网通讯开发需要补充哪方面的知识呢?
请问嵌入式系统实现以太网,TCP/IP协议栈是都是移植的吗?
请问怎样去设计嵌入式以太网控制器?
谁知道SOPC技术在嵌入式工业以太网中有哪些应用呢?
基于CP2200 的嵌入式系统以太网接口设计
15基于嵌入式调试器的网络通信方法设计与实现
9基于ARM 嵌入式以太网接口设计与实现Design and
52嵌入式以太网工业设备接入系统的设计
12嵌入式以太网接口的研究与设计
29嵌入式设备与以太网互连系统的设计
13高性能嵌入式工业以太网监控系统设计
14基于以太网和嵌入式Web Server的控制系统设计研究
25基于ARM的嵌入式开发
83基于OpenTCP的嵌入式以太网模块设计
15嵌入式以太网设计
1007
嵌入式以太网数字语音广播系统技术设计
1067
变电站自动化设备中嵌入式以太网设计
38基于FPGA的嵌入式三态以太网设计
64基于OR1200微处理器的嵌入式以太网设计
32基于PXA270嵌入式开发板的GPS定位系统设计
1506RTL8019AS实现嵌入式以太网设计.rar
164TMS320LF2407与LAN91C111型嵌入式以太网接口电路的实现
4281
嵌入式开发

嵌入式以太网解决方案:集设计方案、开发工具于一体
1549
嵌入式开发环境介绍,嵌入式文件系统要求分析
1459
基于Xilinx FPGA的嵌入式串行千兆以太网设计
3913基于STM32的嵌入式以太网门禁系统设计
1137
嵌入式开发就业前景分析_嵌入式领域的职业发展方向
19874嵌入式开发语言有哪些_最全面嵌入式开发语言概述
10380
嵌入式开发环境的搭建
9105
学嵌入式开发入门_学嵌入式开发需要看哪些书籍
39387嵌入式C实现延时程序的不同变量的区别 几种Linux嵌入式开发环境的简单介绍
2161
嵌入式开发好学吗_嵌入式开发职业发展方向是什么
10098嵌入式开发者必备的基础硬件知识
3360嵌入式开发市场的现状研究及持续的C和C++优势
982嵌入式开发教程之基于ARM7的LCD设计与实现
9基于工业以太网嵌入式DNC集成通讯控制系统研究与开发
6嵌入式开发(一):嵌入式开发新手入门
79嵌入式开发前景怎么样?嵌入式开发有哪些优势?
2嵌入式系统移植-01嵌入式基本概念,嵌入式开发环境搭建,目标机搭建,TFTP服务搭建,NFS服务搭建
10嵌入式开发
3嵌入式开发资料免费分享
47嵌入式开发
4嵌入式开发Linux入门
31嵌入式开发培训怎么样?嵌入式开发培训多少钱
12嵌入式开发(一):嵌入式开发新手入门(转载后续需要修改补充)
17python做嵌入式开发_Python和嵌入式的区别是什么?可以做嵌入式开发吗?
14嵌入式开发培训学什么?嵌入式开发板知识讲解
16嵌入式开发概述(20190325小结)
15VScode嵌入式开发之入门教程
44嵌入式以太网功能实现架构、电路设计与应用
2664不懂PHY,如何轻松完成嵌入式以太网功能?
2395
Linux系统的嵌入式开发是什么
2974ProfiNet嵌入式板卡,主流替代可实现ProfiNet工业以太网的应用实例
993
电子发烧友App



评论