新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 教你轻松控制uClinux 嵌入式开发过程

教你轻松控制uClinux 嵌入式开发过程

作者: 时间:2012-04-19 来源:网络 收藏

  通常,如果应用程序不是在fork()之后立即调用exec(),就有必要在fork()被替换成vfork()之前做仔细的检查。

  2.应用程序

  尽管的Flat可执行格式并不会直接影响应用程序和它们的执行,但是它允许许多普通Linux下的ELF可执行格式所不允许的选项。比如,Flat可执行格式带来两个衍生系统—完全重定位和位置无关代码(Position-Independent Code,简称PIC)的变体。完全重定位系统将对应用程序的代码和数据进行重定位,而PIC系统通常只需要对数据进行部分重定位。

  对者最有用的特性就是运行时空间大小不变(Execute-In-Place,简称XIP)。这样应用程序可以直接从闪存(Flash)或ROM 中运行,因为只需要应用程序所需占用的内存即可。不是所有的平台都实现了XIP,因为它需要编译器的支持以及Flat可执行格式的PIC形式。

  下的Romfs是惟一支持XIP的文件系统。要实现XIP,应用程序就必须被连续地装载到文件系统。 Flat格式还在它的头部定义了应用程序的栈大小。要增加分配给应用程序的栈,只需要简单地修改该部分,可以使用flthdr命令实现,格式如下:

  flthdr -s flat-executable

  Flat格式还允许整个可执行文件被压缩,以尽量缩小占用ROM的空间。它还有一个次要的作用就是使应用程序完全地装载到一个连续的RAM块中。既想节省ROM空间,又想使用XIP的时候,还可以选择Data-Segment-Only压缩形式。

  生成一个完全压缩的可执行文件:

  flthdr -z flat-executable

  只是生成压缩数据段:

  flthdr -d flat-executable

  特别小心共享库

  uClinux下的共享库各有不同。目前可用的解决方法需要修改编译器,并需要开发者特别小心。其实,当前的uClinux发行版本中提供了uC-libc和uClibc库,最好的方法是以这两个库为例子来创建自己的共享库。

  另外,uClinux下的共享库必须是Flat格式的可执行文件,并且要真正实现共享,必须实现XIP。如果不实现XIP,共享库就会为每个使用它的应用程序创建一份拷贝,这还不如使用静态链接应用程序。

  小结

  uClinux趋向于更深入的嵌入式系统,它需要更少的内存,并可直接在ROM上运行。如果初次在uClinux下开发的人遇到没有硬件驱动、有严格的资源限制,以及没有内存保护等一系列的情况,最好的入手方法就是使用uClinux仿真器(见图2)。

  图2 uClinux仿真器Xcopilot

  强调以上这些问题有助于开发者提前做好准备,避免在uClinux下工作时常遇到陷阱和误解。


上一页 1 2 3 下一页

关键词: uClinux 嵌入式开发

评论


相关推荐

技术专区

关闭