艾巴生活网

您现在的位置是:主页>科技 >内容

科技

如何制作一个基于linux(2.6.19内核的小型Linux操作系统)

2024-05-18 12:19:55科技帅气的蚂蚁
ARM9 S3C2410微处理器与Linux的结合越来越紧密,在嵌入式领域得到了广泛的应用。目前,在便携式消费电子产品、无线设备、汽车、网络和存储

如何制作一个基于linux(2.6.19内核的小型Linux操作系统)

ARM9 S3C2410微处理器与Linux的结合越来越紧密,在嵌入式领域得到了广泛的应用。目前,在便携式消费电子产品、无线设备、汽车、网络和存储产品中都可以看到S3C2410与Linux的结合。

S3C2410微处理器是三星为手持终端设计的基于ARM920T内核的低成本、低功耗、高性能微处理器。具有内存管理单元(MMU),采用0.18mm工艺和AMBA新总线结构,主频可达203MHz。同时支持Thumb 16位压缩指令集,因此可以用更少的存储空间获得32位的系统性能。

在众多嵌入式操作系统中,Linux是发展最快、应用最广泛的。性能优异、源代码开放的Linux具有体积小、内核可简化、网络功能完善、可移植性强等优点,非常适合作为嵌入式操作系统。一个基本的Linux操作系统应该包括三个部分:引导程序、内核和根文件系统。

与Linux2.4内核相比,2.6内核吸收了最新的技术,在性能、可扩展性、设备支持和可用性等方面都有了很大的提升。支持更多的架构、处理器、总线、接口和设备;标准化的内部接口;简化了扩展或添加新设备的步骤。

本文重点介绍了如何制作一个基于linux-2.6.19内核的小型Linux操作系统,并移植到S3C2410开发板上。内容包括交叉编译环境的建立,引导程序、2.6.19内核和根文件系统的修改、配置、编译和移植。

系统的生产和移植

建立交叉编译环境

要移植开发一个小型的Linux系统,首先要在搭载RedHat9或更高版本Linux操作系统的主机上配置交叉开发。交叉开发是指在开发主机上安装开发工具,编辑编译目标板的引导程序、内核和文件系统,使其可以在目标板上运行。

鉴于这种发展,需要安装arm-linux-gcc-3.4.1和armv4l-tools工具链。安装完成后,记得将两者的路径添加到系统路径$PATH中。

引导程序

对于计算机系统来说,从开机到操作系统启动都需要一个引导程序。嵌入式linux系统也离不开引导程序,这个程序叫做bootloader [1]。通过这个小程序可以初始化硬件设备,建立内存空间的映射表,从而建立合适的系统硬件环境,为最终调用操作系统内核做准备。

昕薇[4]是韩国米子公司为其ARM9系列产品开发的Bootloader。它小巧灵巧,所以这里选择它作为小型Linux系统的Bootloader。

首先,我们需要修改vivi源代码中的Flash分区信息。新的分区信息如表1所示。

根据表1,在vivi源文件ARCH/S3C2410/SMDK中做相应的修改。C.

然后在配置菜单中导入smdk2410的默认配置。编译成功后,会在vivi源代码目录下生成所需的Bootloader文件,文件名为vivi。

然后,可以将vivi下载到目标板Flash的相应位置。

核心

修改内核

首先修改内核源码linux-2.6.19下的Makefile文件,指定目标代码类型和编译器:subarch:=arm;CROSS _ COMPILE:=/usr/local/arm/3 . 4 . 1/bin/arm-Linux-.

然后根据表1修改Linux-2 . 6 . 19/arch/arm/mach-s3c 2410/common-smdk . c中内核的Flash分区信息。在此提醒读者,2.6.16(含)之前的内核源代码中没有Flash分区信息,需要添加新的分区信息;2.6.17(含)以后,内核的源代码已经包含了Flash分区信息,需要做的就是修改分区信息。

内核的Flash分区信息必须和vivi的Flash分区信息一致。因为vivi的Flash分区中的地址是内核和文件系统下载到Nand flash的真实地址;但是内核启动时,读取内核Flash分区设置的地址;所以如果两者不同,很可能是内核无法正常启动或者文件系统无法读取。

最后修改Linux-2 . 6 . 19/drivers/MTD/NAND/s3c 2410 . c禁止Nand flash错误检测:chip-ECC mode=NAND _ ECC _ None;

内核的配置编译

在配置菜单中导入smdk2410的内核默认配置,然后在此基础上选择需要的功能。比如对Nand Flash和MTD设备的支持,Cramfs文件系统等等。

配置完成后,在终端输入编译命令“make”进行编译。如果内核源代码编译成功,将在linux-2.6.19/arch/arm/boot/下生成内核镜像文件zImage。

最后,在vivi命令提示符模式下使用download命令将内核映像zImage加载到开发板Flash中的适当地址。

根文件系统

Linux系统中的文件和设备是按文件系统组织的。文件系统的存在使得数据和设备能够被有效和透明地访问。linux最简单的根文件系统应该包括支持linux系统正常运行的基本内容,包括系统使用的软件和库,以及所有用来为用户提供基本支持的架构和指令。

在根文件目录rootfs下建立bin、dev、etc、lib、proc、s bin、root、tmp等一系列必要的目录,将需要的配置文件和动态函数库放在相应的目录下。使用BusyBox是减少根文件系统的好方法。BusyBox用很小的体积集成了最常用的linux命令和应用程序,大大简化了制作linux根文件系统的过程。

必须指出的是,2.6.12(含)之前的内核通常使用devfs来管理所有位于/dev下的块设备和字符设备;但是2.6.13(含)以后的内核不再支持devfs,而是使用udev来管理/dev下的设备。详见[5]。所以对于2.6.19内核,为了让系统启动后进入BusyBox控制台,需要在/rootfs/dev下添加一个控制台设备文件:“[root @ localhostdev]# mknod-m 600 console C51”。

目前linux已经能够支持几十种文件系统格式,比如Cramfs和Jfss2、Yaffs。Cramfs是一个只读的flash文件系统,可以保护系统的基本设置不被更改。根文件系统使用Cramfs格式。

使用Cramfs生产工具mkcramfs将根文件目录制作成一个映像文件:rootfs.cramfs

制作根文件系统,在vivi命令模式下将rootfs.cramfs下载到Flash的适当位置。

至此,一个基于2.6.19内核的小型Linux系统已经制作成功,并移植到S3C2410开发板上。

板卡上电后,可以看到系统的启动信息,最后进入BusyBox控制台。

标签

基于2.6内核的Linux结合了其突出的嵌入式特点和ARM9 S3C2410的优异性能,在嵌入式领域有着广阔的应用领域。介绍了如何制作一个基于Linux2.6.19内核的小型Linux系统,并移植到S3C2410开发板上。小型系统的制作和移植是嵌入式开发的基础,必须熟练掌握。