首页 理论教育 S3C44B0X上的μClinux移植实践

S3C44B0X上的μClinux移植实践

时间:2023-11-23 理论教育 版权反馈
【摘要】:片级移植相对板级移植来说要复杂许多,μClinux 发行版本中已经包含S3C44B0X ARM7TDMI 处理器的移植包,因此,只需进行μClinux 板级移植。μClinux 内核移植方法1)配置内核在编译内核的过程中,最烦杂的事就是配置工作。这是调试μClinux 的最有效和最简单的方法。4)中断处理在嵌入式系统中,μClinux 内核一般在SDRAM 中运行,因此,在BootLoader 中必须将中断向量表正确导入到该处的地址。

S3C44B0X上的μClinux移植实践

μClinux 是专为无存储器管理单元(MMU)的微控制器打造的嵌入式Linux 操作系统。

嵌入式系统开发时需要一个交叉开发环境。 交叉开发是指在一台通用计算机上进行软件的编辑编译,然后下载到嵌入式设备中运行调试的开发方式。 移植前首先要准备好建立交叉开发环境的软硬件资源。

由于linux 和μClinux 操作系统提供的应用程序接口几乎是一样的,linux 下的程序几乎不用修改就可放到μClinux 下运行,所以,要移植的程序可以先在主机上调通,然后用交叉编译工具为目标系统重新编译一遍,这样可以加快开发进度。 一般在开发主机上要安装linux操作系统。

(1)μClinux 内核的移植分类

①板级移植:对于μClinux 发行版本中已经支持的嵌入式处理器,通常只需要针对板级硬件进行适当的修改即可。

②片级移植:对于μClinux 发行版本中没有支持的处理器,则需要添加相应处理器的内核移植。

片级移植相对板级移植来说要复杂许多,μClinux 发行版本中已经包含S3C44B0X ARM7TDMI 处理器的移植包,因此,只需进行μClinux 板级移植。

(2)μClinux 内核移植方法

1)配置内核

在编译内核的过程中,最烦杂的事就是配置工作。 实际上,在配置时大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。 选择的原则是将与内核其他部分关系不大且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,减少该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关系紧密而且经常使用的部分功能代码直接编译到内核中。 至于选项,因为比较复杂,编译时应视具体情况,参考有帮助的内容再加以选择。

2)编译内核

配置完成后开始编译μClinux,在工作目录下执行以下命令:

make dep:命令搜索μClinux 编译输出与源代码之间的依赖关系,并以此生成依赖文件。

make lib_only:编译μC-libc 函数库,生成libc.a、libm.a 等函数库。

make user_only:编译用户应用程序。

make romfs:将编译好的用户程序生成Romfs 文件系统(romfs 目录)。

make image:根据romfs 目录生成文件系统映像文件,然后编译内核,生成内核映像文件。

最终在images 目录下生成两个文件:

zImage uClinux:内核2.4.x 的压缩方式可执行映像文件。

romfs.img:文件系统的映像文件。

3)下载、运行、调试内核

通过调试器下载内核并运行或通过BootLoader 将内核烧写到FLASH 中,然后运行μClinux。(www.xing528.com)

(3)μClinux 调试手段

通过串口将显示信息发送到主机,由主机端超级终端工具接收;实时在超级终端输入数据,然后由μClinux 接收。

通过串口将调试信息打印到超级终端。 这是调试μClinux 的最有效和最简单的方法。

(4)μClinux 内核移植主要过程

1)内核配置

内核配置包括板级包配置,如选用S3C44B0X 作为CPU 时,可配置S3C44B0X-MBA44 板级包。

2)体系结构相关代码修改

应根据板级包的配置,修改相应的体系结构相关代码,包括压缩核心启动代码、内核启动代码及板级相关代码。 其中压缩核心启动代码位于linux2.4.x/armnommu/boot/目录下,内核启动代码位于linux2.4.x/armnommu/mach-S3C44B0X 目录下。

3)链接脚本

μClinux 的核心链接脚本位于linux2.4. x/armnommu/vmlinux. lds 文件,压缩核心链接脚本位于inux2.4.x/armnommu/boot/compressed/linux.lds 文件。

4)中断处理

在嵌入式系统中,μClinux 内核一般在SDRAM 中运行,因此,在BootLoader 中必须将中断向量表正确导入到该处的地址

5)加载文件系统

目前所有的μClinux 内核(如2.4 和2.5)都支持Romfs 文件系统,但是,在一些linux 发布中可能没有将其编译进来。 尽管如此,在嵌入式的特殊需求中,Romfs 文件系统仍然被广泛采用。

6)编写驱动程序

μClinux 的驱动程序目录为:linux2.4.x/drivers/。

网卡驱动程序是位于linux2.4.x∥drivers/net/cirrus 的文件。

LCD 驱动程序是位于linux2.4.x∥drivers/video/s3c44b0xfb.c 的文件。

7)编译μClinux 文件系统

编译μClinux 文件系统包括:配置文件系统;编译文件系统源代码,生成μClinux 文件系统;生成Romfs 文件系统,映像及编译Romfs 文件系统,映像到内核中或写到固定位置,并由内核从该位置加载。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈