服务器维护小知识ARM9
S3C2410微处理器与Linux的结合越来越紧密,渐渐在嵌入式领域得到广泛的应用。目前,在便携式消费类电子产品、无线设备、汽车、网络、存储产品等都可以见到S3C2410与Linux相结合的身影。
S3C2410微处理器是一款由Samsung公司为手持终端设计的低价钱、低帧率、高性能,基于ARM920920T核的微处理器。它带有显存管理单元(MMU),采用0.18mm工艺和AMBA新型总线结构,显存可达203MHz。同时,它支持Thumb
16位压缩指令集,因而能以较小的储存空间获得32位的系统性能。
在诸多嵌入式操作系统中,Linux目前发展最快、应用最为广泛。性能优良、源码开放的Linux具有容积小、内核可裁减、网络功能健全、可移植性强等众多优点,特别适宜作为嵌入式操作系统。一个最基本的Linux操作系统应当包括:引导程序、内核与根文件系统三部份。
服务器维护小知识与Linux2.4内核相比,2.6内核吸收了最新的技术,在性能、可检测性、器件支持和可用性方面有了大幅度提升;支持更多的体系结构、处理器、总线、接口和设备;标准化了内部插口;简化了扩充或添加新设备的步骤等。
本文侧重介绍怎么制做一个基于linux-2.6.19内核的大型Linux操作系统,并将它移植到S3C2410开放板上。内容包括交叉编译环境的构建linux空间,引导程序、2.6.19内核、根文件系统的更改、配置、编译、移植等。
系统的制做移植
服务器维护小知识构建交叉编译环境
要移植、开发大型Linux系统,首先要在安装了RedHat9或更高版本Linux操作系统的主机上配置交叉开发环境。交叉开发是指在开发主机上安装开发工具,编辑、编译目标板的引导程序、内核和文件系统,使其能在目标板上运行。
针对本次开发,须要安装arm-linux-gcc-3.4.1以及armv4l-tools工具链。在安装完毕后,切忌要将二者的路径分别添加到系统路径$PATH中。
引导程序
服务器维护小知识对于计算机系统来说redhat服务器操作系统下载,从开机上电到操作系统启动须要一个引导程序。嵌入式linux系统同样离不开引导程序,这个引导程序称作Bootloader[1]。通过这段小程序,可以初始化硬件设备、建立显存空间的映射表,因而构建适当的系统硬件环境,为最终调用操作系统内核做好打算。
vivi[4]是日本MIZI公司为其ARM9系列产品而研制的Bootloader,小而灵巧,这儿选用它作为大型Linux系统的Bootloader。
首先要更改vivi源代码中的Flash分区信息redhat服务器操作系统下载,新的分区信息如表1所示。
依据表1,在vivi源码arch/s3c2410/smdk.c文件中做出相应的更改。
之后在配置菜单中导出smdk2410的默认配置,编译成功将在vivi源代码目录下生成所需的Bootloader文件,文件名为vivi。
接着,便可把vivi下载到目标板Flash的相应位置。
内核
更改内核
首先,更改内核源码linux-2.6.19下的Makefile文件,指定目标代码类型与编译器:SUBARCH
:=arm;CROSS_COMPILE:=。
之后,在linux-2.6.19/arch/arm/mach-s3c2410/common-smdk.c中按照表1更改内核中的Flash分区信息。这儿提醒读者,2.6.16(含)曾经内核的源码中没有Flash分区信息,所以须要降低新的分区信息;而在2.6.17(含)之后内核的源码中已含Flash分区信息,须要的只是更改分区信息。
内核Flash分区信息必须与vivi的Flash分区信息相一致。由于,vivi的Flash分区中的地址是内核及文件系统下载到Nand
flash的真正地址;而内核在启动时读的却是内核Flash分区设定的地址;所以,若二者不同,则很可能造成不能正常启动内核或读取文件系统。
最后,更改linux-2.6.19/drivers/mtd/nand/s3c2410.c,严禁Nandflash差错测量:
chip-》eccmode=NAND_ECC_NONE;。
内核的配置编译
服务器维护小知识在配置菜单中导出内核对smdk2410的默认配置,再在此基础上选择所需的功能。如Nand
Flash及MTD设备的支持,Cramfs文件系统的支持等。
配置完毕,在终端输入编译命令“make”进行编译。命令核源码编译成功,将在linux-2.6.19/arch/arm/boot/下生成内核映像文件zImage。
最后,在vivi命令提示模式下使用下载命令,将内核映像zImage加载到开发板Flash中的适当地址。
根文件系统
服务器维护小知识Linux系统中的文件和设备是通过文件系统来组织的。文件系统的存在致使数据和设备可以被有效而透明地存取访问。一个linux的最简根文件系统应当包括支持linux系统正常运行的基本内容,包括系统使用的软件和库,以及所有拿来为用户提供基本支持的构架和指令。
在根文件目录rootfs下构建bin、dev、etc、lib、proc、sbin、root、tmp等一系列必备的目录,把所需的配置文件、动态函数库放在相应的目录。采用BusyBox是缩小根文件系统的好办法。BusyBox以很小的容积集成了最常用的linux命令和应用程序,大大简化了制做linux根文件系统的过程。
有一点必须强调的是,在2.6.12(含)之前的内核一般是用devfs来管理坐落/dev下的所有块设备和字符设备;但在2.6.13(含)以后的内核已不支持devfslinux空间,而转用udev来管理/dev下的设备,详见[5]。所以,针对2.6.19内核,要使系统启动后步入BusyBox控制台,还需在/rootfs/dev下添加控制台设备文件:“[root@localhost
dev]#mknod-m600consolec51”。
目前,linux早已才能支持几十种文件系统格式,如常用的Cramfs、Jfss2、Yaffs等。Cramfs
是一种只读的闪存文件系统,可以保护系统的基本设置不被修改。根文件系统就使用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开发板上。大型系统的制做与移植是进行嵌入式开发的基础,必须熟练把握。