基于μClinux的嵌入式应用程序的开发
发布时间:2008/5/27 0:00:00 访问次数:381
嵌入式系统范同非常广泛,从简单的单片机系统到主频高达几百兆的使用操作系统的非计算机系统,都可以称为嵌入式系统。随着各行业电子系统应用要求的提高,嵌入式系统也越来越复杂,硬件要求速度快、集成度高、外部接口多,软件则要求功能丰富、模块化、易于扩展。arm能够很好满足复杂嵌入式系统的要求,因此arm芯片成为当前嵌入式应用最重要的硬件平台。嵌入式硬件平台性能的提高,使嵌入式操作系统的使用成为必然。
1 嵌入式系统与μclinux
基于arm的嵌入式系统是当前最典型的嵌入式系统。嵌入式系统框图如图1所示。系统的硬件主要部件是arm7系列的s3c44b0x处理器。当系统中需要使用各种各样的外围设备时,开发的难度相当大,使用操作系统可以提高升发的效率。因此,嵌入式操作系统是嵌入式系统极为重要的组成部分。它具有通用操作系统的基小特点,而又增加了实时高效性、硬件依赖性、应用专一性等新特点。常见的嵌入式操作系统有:vxworks、uc/os-ii、windows ce、μclinux等。μclinux操作系统是一种性能优良、源码公开且被广泛应用的免费嵌入式操作系统,因此很多无mmu单元的嵌入式系统都使用μclinux作为操作系统。
2 μclinux的移植
μclinux是依赖于硬件系统的,与pc上运行的linux系统有较大的区别。因此在arm系统中使用μclinux时,需要对内核进行裁剪,再添加一些需要的驱动程序,才能在不同的嵌入式碰件系统中运行。μclinux操作系统一般都是先在安装linux的计算机上编译调试,然后再下载到目标系统板上运行,这一过程就是μclinux的移植。
2.1 bootloader的设计
bootloader就是在操作系统内核运行之前运行的一段程序。嵌入式系统的bootloader程序烧录在系统地址的0x0处,即每次上电后先运行bootloader,完成硬件系统的初始化、建立内存空间的映射图和μclinux的引导工作。完整的bootloader引导流程描述。
bootloader的主要任务对时钟、中断、i/o等芯片资源进行初始化,为μclinux的运行做好准备。
2.2 μclinux移植的方法
2.2.1 建立交叉编译环境
首先从网上下载gnu开发软件包arm-elf-tools-20030312.sh,然后到源码目录下执行sh arm-elf-tools-20030312.sh,这样在pc上建立了arm体系结构的编译器、连接器、调试器,可以用来编译os内核,制作文件系统等。
2.2.2 在windows下安装ads工具
ads是arm公司推出的新一代arm集成开发工具。在硬件开发板完成后,可用ads各硬件模块进行测试。
把代码解压缩到工作目录下,运行tar xjvfμclinux-dist-51eda.tar.bz2, 它会把全部的文件解压缩到home/μclinux-dist的目录下。然后进入目录运行menuconfig,对μclinux进行配置,订制自己的系统。
注意对于编译uclinux,不能简单地通过make来实现。为了编译最后得到的镜像文件,我们需要linux的内核以及romfs。对于我们的s3c44b0x的移植来说,romfs是被编译到内核里面去的。因此,在编译内核前需要一个romfs。为了得到romfs的image,我们又需要编译用户的应用程序。而为了编译用户的应用程序,我们又需要编译c运行库,这里我们用的c运行库是uclibc。根据上面的分析,我们使用以下步骤编译μclinux。
(1) make dep:建立文件之间的依赖关系,make会根据这个依赖关系来确定哪些义件需要重新编译、哪些文件可以跳过。
(2) make lib only:编译uclibc。
(3) make user only:编译用户的应用程序,包括初始化进程init,和用户交互的bash。
(4) make romfs:它会在μclinux的目录下生成一个romfs目录并且把user目录下的文件、以及vendors目录下特定系统所需要的文件组织起来,以便下面生成romfs的单个镜像所用。
(5) make image:是生成romfs的镜像文件和生成linux的镜像。
(6) make linux:用上面make image生成的romfs.o文件编译linux内核。
(7) make image:执行了这一步之后,就会在images目录下找到3个文件:image.ram,image.rom,romfs.img。其中,image.ram和image.rom就是我们需要的镜像文件。
2.2.4 加载μclinux内核
μclinux内核
嵌入式系统范同非常广泛,从简单的单片机系统到主频高达几百兆的使用操作系统的非计算机系统,都可以称为嵌入式系统。随着各行业电子系统应用要求的提高,嵌入式系统也越来越复杂,硬件要求速度快、集成度高、外部接口多,软件则要求功能丰富、模块化、易于扩展。arm能够很好满足复杂嵌入式系统的要求,因此arm芯片成为当前嵌入式应用最重要的硬件平台。嵌入式硬件平台性能的提高,使嵌入式操作系统的使用成为必然。
1 嵌入式系统与μclinux
基于arm的嵌入式系统是当前最典型的嵌入式系统。嵌入式系统框图如图1所示。系统的硬件主要部件是arm7系列的s3c44b0x处理器。当系统中需要使用各种各样的外围设备时,开发的难度相当大,使用操作系统可以提高升发的效率。因此,嵌入式操作系统是嵌入式系统极为重要的组成部分。它具有通用操作系统的基小特点,而又增加了实时高效性、硬件依赖性、应用专一性等新特点。常见的嵌入式操作系统有:vxworks、uc/os-ii、windows ce、μclinux等。μclinux操作系统是一种性能优良、源码公开且被广泛应用的免费嵌入式操作系统,因此很多无mmu单元的嵌入式系统都使用μclinux作为操作系统。
2 μclinux的移植
μclinux是依赖于硬件系统的,与pc上运行的linux系统有较大的区别。因此在arm系统中使用μclinux时,需要对内核进行裁剪,再添加一些需要的驱动程序,才能在不同的嵌入式碰件系统中运行。μclinux操作系统一般都是先在安装linux的计算机上编译调试,然后再下载到目标系统板上运行,这一过程就是μclinux的移植。
2.1 bootloader的设计
bootloader就是在操作系统内核运行之前运行的一段程序。嵌入式系统的bootloader程序烧录在系统地址的0x0处,即每次上电后先运行bootloader,完成硬件系统的初始化、建立内存空间的映射图和μclinux的引导工作。完整的bootloader引导流程描述。
bootloader的主要任务对时钟、中断、i/o等芯片资源进行初始化,为μclinux的运行做好准备。
2.2 μclinux移植的方法
2.2.1 建立交叉编译环境
首先从网上下载gnu开发软件包arm-elf-tools-20030312.sh,然后到源码目录下执行sh arm-elf-tools-20030312.sh,这样在pc上建立了arm体系结构的编译器、连接器、调试器,可以用来编译os内核,制作文件系统等。
2.2.2 在windows下安装ads工具
ads是arm公司推出的新一代arm集成开发工具。在硬件开发板完成后,可用ads各硬件模块进行测试。
把代码解压缩到工作目录下,运行tar xjvfμclinux-dist-51eda.tar.bz2, 它会把全部的文件解压缩到home/μclinux-dist的目录下。然后进入目录运行menuconfig,对μclinux进行配置,订制自己的系统。
注意对于编译uclinux,不能简单地通过make来实现。为了编译最后得到的镜像文件,我们需要linux的内核以及romfs。对于我们的s3c44b0x的移植来说,romfs是被编译到内核里面去的。因此,在编译内核前需要一个romfs。为了得到romfs的image,我们又需要编译用户的应用程序。而为了编译用户的应用程序,我们又需要编译c运行库,这里我们用的c运行库是uclibc。根据上面的分析,我们使用以下步骤编译μclinux。
(1) make dep:建立文件之间的依赖关系,make会根据这个依赖关系来确定哪些义件需要重新编译、哪些文件可以跳过。
(2) make lib only:编译uclibc。
(3) make user only:编译用户的应用程序,包括初始化进程init,和用户交互的bash。
(4) make romfs:它会在μclinux的目录下生成一个romfs目录并且把user目录下的文件、以及vendors目录下特定系统所需要的文件组织起来,以便下面生成romfs的单个镜像所用。
(5) make image:是生成romfs的镜像文件和生成linux的镜像。
(6) make linux:用上面make image生成的romfs.o文件编译linux内核。
(7) make image:执行了这一步之后,就会在images目录下找到3个文件:image.ram,image.rom,romfs.img。其中,image.ram和image.rom就是我们需要的镜像文件。
2.2.4 加载μclinux内核
μclinux内核