您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术Microwindows在基于单片机嵌入式系统中的移植 正文
Microwindows在基于单片机嵌入式系统中的移植

Microwindows在基于单片机嵌入式系统中的移植

点击数:7332 次   录入时间:03-04 11:56:46   整理:http://www.55dianzi.com   嵌入式系统-技术

参数的配置应该


       还有其他某些相关的配置参数,应根据实际情况进行配置。至此,完成了对Microwindows的配置工作,下面需要根据CLinux的特性,对Microwindows的源代码进行相应修改。具体需要修改的地方包括三个方面:

       在打开帧缓冲设备时,需要调用void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize)函数,将屏幕缓冲区映射到用户地址空间。在基于PC机开发时,由于在Linux系统下,参数flags默认为MAP_SHARED,即对映射区域的写入数据会复制回文件内,而且允许其他映射该文件的进程共享。由于CLinux是没有MMU(内存管理单元)的,因此参数flags应为MAP_FIXED ,即如果参数start所指的地址无法成功建立映射时,则放弃映射,不对地址做修正。因此,应该修改文件/SRC/drivers/scr_fb.c,将mmap()函数中的flags参数改为MAP_FIXED。

       如果此时直接编译经过配置和修改源代码的Microwindows,会提示出现“undefined reference to ‘_ _CTOR_LIST’”和“undefined reference to ‘_ _DTOR_LIST’”的错误。这是由于原来在libgcc中是有_ _CTOR_LIST和_ _DTOR_LIST参数定义的,但在CLinux的交叉编译链中,该符号被删掉。在elf2flt的link script中提供了这两个符号的定义,使用CLinux的交叉编译链编译可执行程序就必须用-elf2flt选项。因此应在编译的选项里加上“-elf2flt”,修改的文件包括demos文件夹下各个相关文件夹的Makefile文件。

       由于CLinux缺少MMU硬件的支持,无法实现fork( )函数,而只能使用vfork( )函数,因此在含有fork( )函数的文件中应加入相应的条件编译指令,用vfork( )来代替fork( )。
   

www.55dianzi.com     以上3个修改是比较重要,至此已完成了整个MICroWindows在S3C44B0X 嵌入式 开发板中的移植,编译即可。最后,将编译好的演示程序复制到CLinux内核中,再编译内核,将编译好的内核映像文件下载至RAM中,即可运行演示。  

       结语

       本文主要论述了Microwindows的体系结构,并且介绍了在PC机上和基于S3C44B0X的嵌入式开发板上运行的步骤和方法,指出了在开发过程应该注意的问题。下面就可以利用相应的开发工具开发Microwindows的应用程序,从而实现相应的功能。



参考文献
1. www.microwindows.org
2. 钟忻.嵌入式Linux系统开发中的关键技术的研究与实现. [D]
3. 吴明晖.基于ARM的嵌入式系统开发与应用.[M] .北京:人民邮电出版社,2004

上一页  [1] [2] 


本文关键字:单片机  嵌入式  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术