您好, 访客   登录/注册

基于嵌入式Linux系统的应用程序开发

来源:用户上传      作者: 胡迎锋

  [摘 要]嵌入式系统和Linux的有机结合,成为后Pc时代计算机最普遍的应用形式。由于嵌入式Linux具有天生秉承的优势,有越来越多的程序员投身于嵌入式linux系统应用程序的开发,本文结合开发实例介绍了在嵌入式linux系统上开发应用程序的过程。
  [关键词]嵌入式系统inux 软件开发
  
  嵌入式Linux由于代码开放性以及强大的网络功能,在中低端的嵌入式网络设备中应用起来,比起PSOS+,VxWorks等专用系统有许多优势,Linux甚至还支持蓝牙技术,这使得越来越多的企业和科研机构已经把目光转向了嵌入式Linux的开发和应用上。以下通过实例来介绍基于嵌入式Linux的应用软件的开发过程:
  一、宿主机配置
  绝大多数的linux软件开发都是以native方式进行的,即本机(Host)开发、调试、本机运行的方式。这种方式通常不适合嵌入式系统软件开发。通常的嵌入式系统的软件开发采用采用主一从模式。交叉编译调试环境建立在宿主机上,对应的开发板叫做目标板,通过串行口或以太网口,使目标板和宿主机相连。宿主机是INTEL处理器,而目标板上,则是ARM、Motorola PowerPC、ColdFire等等,GNU编译器能提供这样的功能,在编译编译器时可以选择开发所需的宿主机和目标机从而建立开发环境,所以宿主机是必不可少的。
  笔者建议宿主机采用REDHAT9.0,当然REDHAT7.2/7.3的系统也都是可以用的,但鉴于市面上目前能买到的都是REDHAT9.0,所以建议采用REDHAT9.0,安装过程可查阅相关手册。
  宿主机配置中一个常见的问题就是NFS的配置,这里介绍一种较为直接简单的方法:首先在REDHAT LINUX PC机上执行setup,弹出菜单界面后,选中:System services,回车进入系统服务选项菜单,在其中选中[*],然后退出setup界面返回到命令提示符下。
  vim /etc/exports
  将这个默认的空文件修改为只有如下一行内容:
  /(rw)
  然后保存退出(:wq)。然后执行如下命令:
  /etc/re.d/init.d/afs re~tarl
  Shutting down NFS mountd:[0K]
  Shutting down NFS daemon:[0K]
  Shutting down NFS quotas:[0K]
  Shutting down NFS services:[0K]
  Starting NFS servicca:[0K]
  Starting NFS quotas:[0K]
  Starting NFS daemon:[0K]
  Starting NFS mountd:[0K]
  注意,这种方法有个弊端,就是NFS不是每次都自动启动的,即无法像linuxconf命令那样设置成Automatic启动方式,所以每次重启都要执行一下:
  /etc/re.d/init.d/nfa reatarl
  配置完成后,可用如下办法简单测试一下NFS是否配置好了,在宿主机上自己mount自己,看是否成功就可以判断NFS是否配好了。例如在宿主机/目录下执行:
  mount 192.168.0.2:/ /rant
  然后到/mnt/目录下看是否可以列出/目录下的所有文件和目录,可以则说明mount成功,NFS配置生效。
  二、应用软件开发模式
  嵌入式Linux应用程序开发主要有两种模式。
  (1)先在宿主机上调试通过后,再移植到目标板上。这种方法需要跨越嵌入式系统开发中的仿真工具(ICE)的障碍,移植工作相对较复杂,在此不作阐述,请查相关书籍。
  (2)直接在目标板上开发,这是一种通用的开发模式。采用这种方式时将宿主机与目标板通过串口或以太网口连接,在宿主机上运行minicom作为目标板的显示终端,mount上宿主机硬盘直接在目标板上调试应用程序。目标板上程序的调试有两种方法。一种是程序的执行信息通过minicom来进行显示。这是最常用的一种调试手段。另一种是通过log记录文件。例如使用syslog将应用程序运行过程中间信息全部记录 /var/log/sys.1og下。
  三、应用软件开发实例
  这里用一个简单的程序来说明如何进行应用程序的编写和调试。首先宿主机上编写应用程序(这里选用hello.c程序)并且编译通过,makefile文件的编写如下:
  EXEC=hello
  0BJS= hello.o
  FLTFLAGS= - s 8 192
  ALL:S(EXEC)
  S(EXEC):S(OBJS)
  S(LD)S(LDFLAGS)- 0 S@.elfS(OBJS)S(LDLIBS)
  S(CONVERT)cp S(EXEC)../../romfs/bin
  Cp-f hel1o /
  clean:
  -rm-fS(EXEC)*.Elf*.gbd*.o
  按照上面提到的第二种模式的开发流程,启动minicom作为目标板的仿真终端,在minicom下运行如下命令:
  mount 192.168.0.2:/ /rant
  mount宿主机上存放该程序的目录,然后在minicom下执行:
  cd/mnt
  /hello
  运行结果显示“Hello,World”,如果有问题可以切换去编辑编译,再重新执行重新修改后的新程序。这样反复调试、更改、编译再调试,而不再烧写板子,直到应用程序达到要求为止。最后是调用烧写程序,将最终确定的image.bin烧写到板子上,则应用程序就出现在板子上了。
  四、结论
  本文对如何进行基于嵌入式Linux系统应用程序的开发做了详细的说明,使读者通过简单的学习就能迅速掌握软件开发模式,以便今后进一步深入应用程序的开发,也希望本文能激起您在嵌入式Linux系统上开发应用程序的兴趣。
  参考文献:
  [1] Scott Maxwel1:Linux内棱源代码分析[M].北京:机械工业出版社,2000
  [2]王学龙:嵌入式Linux系统设计与应用[M].北京:清华大学出版社,2001
  [3]万加富等:网络监控系统原理与应用[M].北京:机械工业出版社,2000
  [4]邢国良等:基于LinUX的实时操作系统的分析与研究[J].小型徽型计算机系统,2001,22(8):1018―1021
  


转载注明来源:https://www.xzbu.com/3/view-1479484.htm