这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 嵌入式uClinux及其应用开发(2)续

共1条 1/1 1 跳转至

嵌入式uClinux及其应用开发(2)续

工程师
2008-05-16 17:32:56     打赏
编译uClinux内核

作为操作系统的核心,uClinux内核负责管理系统的进程、内存、设备驱动程序、文件系统和网络系统,决定着系统的各种性能。uClinux内核的源代码是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用,因此,在广大编程人员的支持下,uClinux的内核版本不断更新,新的内核修改了旧的内核的缺陷,并增加了许多新的特性,用户如果想在自己的系统中使用这些新的特性,或想根据自己的系统量身定制更高效、更稳定可靠的内核,就需要重新编译内核。一般说来,更新的内核版本会支持更多的硬件,具有更好的进程管理能力,运行速度会更快、更稳定,并且一般都会修复旧版本中已发现的缺陷等,因此,经常选择升级更新的系统内核是必要的。

uClinux内核采用模块化的组织结构,通过增减内核模块的方式来增减系统的功能,因此,正确合理的设置内核的功能模块,从而只编译系统所需功能的代码,会对系统的运行进行如下几个方面的优化:

—                     用户根据自身硬件系统的实际情况定制编译的内核因为具有更少的代码,一般会获得更高的运行速度。

—                     由于内核代码在系统运行时会常驻内存,因此,更短小的内核会获得更多的用户内存空间。

—                     减少内核中不必要的功能模块,可以减少系统的漏洞,从而增加系统的稳定性和安全性。

uClinux的内核源代码可以从许多网站上免费下载,内核的发布一般有两种形式,一种是完整的内核版本,完整的内核版本一般是.tar.gz文件,使用时需要解压。另一种是通过对旧的版本发布补丁(patch),达到升级的效果。

本例所采用的在Linux下使用的交叉编译器和uClinux-Samsung-20020318.tar.gz源码均来自网站http://mac.os.nctu.edu.tw

在准备好uClinux的内核源代码后,利用交叉编译器就可以编译生成运行在硬件目标板上的uClinux内核。

http://mac.os.nctu.edu.tw上下载uClinux内核源代码uClinux-Samsung-20020318.tar.gz,保存到宿主机的用户目录。运行解压命令:

tar xzvf  uClinux-Samsung-250020318.tar.gz

解压完毕后,就会在用户目录下生成uClinux-Samsung目录,以下命令进入到该目录中:

$ cd uClinux-Samsung

1.     键入命令:

make menuconfig

内核配置。该命令执行完毕后生成文件.config,它保存这个配置信息。下一次再做make menuconfig的时候将产生新的.config文件,原来的.config被改名为.config.old。

此时会出现菜单配置对话框,要求进行目标平台的选择,如图7.6所示,输入回车后,出现供选择的具体的供应商和产品列表,在这里我们选择:Samsung/4510B,如图7.7所示,在库的选择上,我们选择uC-libc,其他选项暂时不用修改,保存好设置后,存盘退出。

图7.6  目标平台配置

 

图7.7  选择合适的产品类型

2.键入命令:make dep

该命令用于寻找依存关系。

3.  键入命令:make clean

该命令清除以前构造内核时生成的所有目标文件,模块文件和一些临时文件。

1.  键入命令:make lib_only

该命令编译库文件。

2.  键入命令:make user_only

该命令编译用户应用程序文件。

3.  键入命令:make romfs

该命令生成romfs文件系统。

4.  键入命令:make image

注意做到这一步的时候可能会出现错误的信息提示,类似于:

arm-elf-objcopy: /home/nie/uClinux-Samsung/linux-2.4.x/linux: No such file or directory

make[1]: *** [image] Error 1

make[1]: Leaving directory `/home/nie/uClinux-Samsung/vendors/Samsung/4510B'

make: *** [image] Error 2

这是因为第一次编译时还没有romfs.o,所以出错,等romfs.o编译好了以后,如果再进行内核的编译,就不会出现这个错误信息了。它完全不影响内核的编译,可以完全不必理会这个错误信息。继续进行编译工作。

5.  键入命令:make

通过各个目录的Makefile文件进行,会在各目录下生成一大堆目标文件。

上述步骤完成后,就完成了对uClinux源码的编译工作。整个编译过程视计算机运行速度而定,大约需要十几分钟左右。

在编译内核的时,建议在Linux平台下进行。

7.3.4  内核的加载运行

当内核的编译工作完成之后,会在/ uClinux-Samsung/images目录下看到两个内核文件:image.ram和image.rom,其中,可将image.rom烧写入ROM/SRAM/FLASH Bank0对应的Flash存储器中,当系统复位或上电时,内核自解压到SDRAM,并开始运行。

image.ram可直接在系统的SDRAM中运行,使用ADS(或SDT)集成开发环境将系统的SDRAM映射到起始地址为0x0处,并将image.ram载入从0x8000开始的SDRAM中,加载完毕后,修改PC指针寄存器的值为0x8000并执行。

注意该内核默认串行口COM1为输入输出控制台,波特率为19200,8个数据位,1个停止位,无校验。




关键词: 嵌入式     uClinux     及其     应用开发     编译     内核    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]