基于ADSP—BF533的μClinux嵌入式系统移植与开发
4 μClinux内核的编译和移植
作为操作系统的核心,μClinux内核负责管理系统的进程、内存、设备驱动程序、文件系统和网络系统,决定着系统的各种性能。μClinux内核采用模块化的组织结构,通过增减内核模块的方式来增减系统的功能。
4.1 内核配置
虽然μClinux的内核代码大部分独立于处理器和其体系结构,但是最底层的代码还是基于特定系统的。虽然各个系统存在相同之处,但是它们的中断处理上下文、内存映射的维护、任务上下文和初始化过程是独特的。这些例行程序放置在μClinux代码树的aroh/目录下。这里需要根据自己的硬件平台来配置内核代码。配置过程如下:
可以从官方网站http://blackfin.μClinux.org处下载μClinux-list的内核源代码。运行解压命令:将tar- xvfμClinux-dist.tar.gz解压完毕后,就会生成/μClinux-dist目录,加入该目录后按如下顺序编译内核:
(1)make menuconfig;进入菜单方式配置指令;
(2)选择所使用的平台类型和所使用的库
本文设计的目标板选择:AnalogDevices/BF533一EZ-KIT和μC-libc库。在配置栏中,选择Load an AlternateConfiguration File,按确认,退出配置栏;
(3)make dep;寻找依存关系;
(4)make clean;清除以前构造内核时生成的所有目标文件、模块文件和一些临时文件;
(5)make lib_only;编译库文件;
(6)make user_only;编译用户应用程序文件;
(7)make tomfs;生成romfs文件系统;
(8)make image;生成镜像文件然后通过Jtag口输入到目标板;
(9)make;通过各个目录的makefile文件进行,会在各目录下生成一大堆目标文件。
在上述步骤完成后,就完成了对μClinux源码的编译工作。最后会在/μClinux-dist/images目录下看到3个内核文件:linux.dxe,linux.bin和zlmage.bin。如果编译不成功,需要根据编译过程的提示信息找到错误并重新编译,直到成功为止。
4.2 修改配置内核代码
直接由源代码编译生成的内核映像文件一般不会启动成功,需要根据自己的目标板进行配置。需要修改系统启动初始化文件crt0_ram.s,sysinit.c和ram.1d。
在crt0_ram.s中需要根据自己的目标板修改基地址、存储器大小和起始地址。在sysinit.c中需要修改片选设置,分别对FLASH和 SDRAM进行片选设置。在ram.1d中修改内核连接加载地址。做完上面的修改,重新编译生成linux.dxe等文件。
4.3 μClinux内核的下载与执行
μClinux内核有2种可选的运行方式:一种是在FLASH上直接运行;另一种是加载到内存中运行,系统启动时从FLASH中读取压缩的内核代码(存储器空间有限,所以一般需要压缩内核代码)到内存中解压,然后开始执行,这种方法比第一种的速度更快(RAM的存取速度比FLASH的快)。所以选取第二种方法。
编译好的内核文件可以由Visual DSP++开发装置,通过网口或串口把linux.dxe下载到目标板的FLASH中,从设定的入口地址(一般为Oxl000)执行即可启动内核。
启动μClinux就可以在超级终端看到μClinux的欢迎信息和简单的shell提示符,界面如图3所示。
5 在μClinux下添加应用程序
为了方便,μClinux用户层的应用程序代码都放在/μClinux-dist/user/目录下,否则要自己重新定义很多宏,而且容易出错。具体实现过程如下:
(1)在工作目录的user目录下创建应用程序的文件夹user/app然后编写应用程序,编写方法和普通的应用程序一样;
(2)在文件/user/Makefile里添加如下一句以便把用户的应用加入到μClinux系统的编译列表中;
dir_MYM(CONFIG_USER_MYAPP)+=app
(3)在/config/config.in里加入如下语句:
这样在编译时会多1个配置选项,当选择这一选项时,字符串"CONFIG USER MYAPP"就会定义为"Y,参考上一个步骤,dir Y+=app,应用会被编译入内核
(4)为便于内核配置在/eonfig/config.help中加入有关该应用的帮助说明;
(5)回到/μClinux-dist目录,执行make编译μClinux系统内核和这里的应用程序。
6 结 语
对于嵌入式系统开发人员来说,要将嵌入式操作系统应用到嵌入式系统中,首先要做的工作是根据不同的硬件平台移植操作系统,掌握移植的方法非常重要。
本文所述的移植方法已经成功应用于多个项目的开发。所述的移植虽然是针对Blackfin处理器芯片ADSP-BF533,但重点阐述的是移植的思路和方法。对将μClinux移植到其他处理器为核心的硬件平台也有借鉴作用。
本文从如何将嵌入式操作系统μClinux与特定硬件相结合出发,分析移植μClinux到ADSP-BF533的过程。
- 基于S3C44B0X+μcLinux的嵌入式以太网设计(07-08)
- μClinux下SDRAM数据交换区的生成和使用(06-04)
- 基于μCLinux的USB芯片FT245BL驱动程序实现(11-27)
- 嵌入式操作系统任务切换方法对比分析(07-02)
- ARM-μCLinux嵌入式系统启动引导的实现(07-26)
- 基于ARM7系列芯片嵌入式平台上实现的设计方案(05-03)