引言
嵌入式系统的开发与应用是目前发展的一个热点,而嵌入式系统的开发手段在嵌入式开发中起着至关重要的作用。其中,通过以太网调试和运行开发程序的方法在嵌入式系统的开发中得到了广泛应用,本文就此展开说明。
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等,限于篇幅,不再详细介绍。
相关推荐
嵌入式工业以太网的应用研究
1371
以太网接口怎么实现嵌入式系统的网络互连?
嵌入式以太网开发
嵌入式开发与非嵌入式开发的区别
嵌入式开发中的一些硬件相关的概念有哪些
嵌入式开发入门之旅
嵌入式开发入门之旅
嵌入式开发学习方法步骤
嵌入式开发就业方向的问题
嵌入式开发教程之程序设计与开发维护
嵌入式开发是什么意思
嵌入式开发有哪些技巧?
嵌入式开发板环境的搭建
嵌入式开发板有什么功能?
嵌入式开发流程
嵌入式开发流程是怎样的?
嵌入式开发的优缺点是什么?
嵌入式开发要学什么
嵌入式开发要学什么?
嵌入式开发要学什么内容 嵌入式开发学习路线介绍
嵌入式开发要学什么内容 嵌入式开发学习路线介绍
嵌入式开发要学什么内容 嵌入式开发学习路线介绍
Java开发和嵌入式开发
Linux下嵌入式开发环境有哪些?
VScode嵌入式开发如何入门
labview2013 如何设置STM32嵌入式开发环境
一文详解Express Pi嵌入式开发板
什么是嵌入式以太网数字语音广播系统解决方案?
什么是嵌入式?单片机开发与嵌入式开发的区别在哪
什么样的人适合转行嵌入式开发?
关于linux嵌入式开发箱相关问题,求助!!!
分享买来的各种嵌入式开发课件(3)
基于嵌入式以太网控制的接口电路及软硬件实现方法
基于嵌入式模块comX的实时以太网
基于嵌入式系统的以太网接口电路实现设计
基于DSP的嵌入式以太网接口电路设计
基于FPGA的嵌入式以太网接口硬件设计
基于TCP IP协议栈的嵌入式以太网终端设计
基于coLinux的嵌入式开发环境构建
基于双以太网处理器Jupiter实现嵌入式设备网络的设计
如何基 Visual Studio Code来搭建嵌入式开发环境
如何完成嵌入式串行千兆以太网的设计
学FPGA为什么要学以太网控制器
怎么实现嵌入式以太网数字语音广播系统的设计?
怎么实现基于S3C4480X的嵌入式以太网接口设计?
想做以太网通讯开发需要补充哪方面的知识呢?
新手学习嵌入式开发要学什么
新手学习嵌入式开发要学什么?
究竟什么是嵌入式开发
请问嵌入式系统实现以太网,TCP/IP协议栈是都是移植的吗?
请问怎样去设计嵌入式以太网控制器?
谁知道SOPC技术在嵌入式工业以太网中有哪些应用呢?
高性能嵌入式以太网CAN网关怎么实现?
嵌入式以太网接口的研究与设计
29嵌入式开发环境的搭建
7954
电子发烧友App




评论