微处理器的产生为价格低廉、结构小巧的CPU和外设的连接提供了稳定可靠的硬件架构,这样,限制嵌入式系统发展的瓶颈就突出表现在了软件方面
微处理器的发生为价格低廉、结构细巧的CPU和外设的衔接供给了安稳牢靠的硬件架构,这样,约束嵌入式体系开展的瓶颈就突出表现在了软件方面。虽然从八十年代末开端,现已连续呈现了一些嵌入式操作体系(比较闻名的有Vxwork、pSOS、Neculeus和Windows CE)。但这些专用操作体系都是商业化产品,其昂扬的价格使许多低端产品的小公司望而生畏;并且,源代码封闭性也大大约束了开发者的积极性。而Linux的开放性,使得许多人都以为Linux十分合适大都Intemet设备。Linux操作体系能够支撑不同的设备和不同的装备。Linux对厂商不偏不倚,并且本钱极低,因此很快成为用于各种设备的操作体系。嵌入式linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会招引许多的厂商进入这一范畴。
1 嵌入式linux操作体系
Linux为嵌入操作体系供给了一个极有招引力的挑选,它是个和Unix相似、以中心为根底、全内存保护、多使命、多进程的操作体系。能够支撑广泛的计算机硬件,包含X86、Alpha、Sparc、MIPS、PPC、ARM、NEC、MOTOROLA等现有的大部分芯片。Linux的程序源码悉数揭露,任何人都能够根据自己的需求裁剪内核,以习惯自己的体系。文章以将linux移植到ARM920T内核的s3c2410处理器芯片为例,介绍了嵌入式linux内核的裁剪以及移植进程,文中介绍的根本原理与办法技巧也可用于其它芯片。
2 内核移植进程
2.1 树立穿插编译环境
穿插编译的使命首要是在一个平台上生成能够在另一个平台上履行的程序代码。不同的CPU需求有不同的编译器,穿插编译好像翻译相同,它能够把相同的程序代码翻译成不同的CPU对应言语。
穿插编译器完好的装置涉及到多个软件装置,最重要的有binutils、gcc、glibc三个。其间,binutils首要用于生成一些辅助东西;gcc则用来生成穿插编译器,首要生成arm—linux—gcc穿插编译东西;glibc首要是供给用户程序所运用的一些根本的函数库。
自行树立穿插编译环境一般比较复杂,并且很简单犯错。本文运用的是开发板自带的穿插编译器,即CROSS一3.3.4.穿插编译器,该编译只需将光盘中的arm—linux一3.3.4.bar.bz2用tar ixvf arm—linux一3.3.4.bar.bz2指令解压到/usr/local/arm下即可。
2.2 修正Makefile
修正内核目录树根下的Makefile时,可先指明穿插编译器。设计时,可向Makefile中增加如下内容:
ARCH ?=arm
CROSS_COMPILE?=arm-linux-然后设置PATH环境变量,使其能够找到其穿插编译东西链,然后运转vi~/.bashrc,再增加如下内容:
export PATH=/usr/local/arln—linux一3.4.4/bin:$PATH
2.3 设置Flash分区
此处一共要修正3个文件,别离如下:
(1)在arch/arm/machs3c2410/devs.c文件中增加如下内容:
#include
#include
#include
然后再树立Nand Flash分区表;一起树立Nand F1ash芯片支撑,最终参加Nand Flash芯片并支撑到Nand Flash驱动。
别的,还要修正arch/arm/machs3c2410/devs.C文件中的s3c_device_nand结构体变量,一起增加对dev成员的赋值。
(2)指定发动时初始化
内核发动时,能够根据对分区的设置进行初始装备,然后修正arch/am4mach—s3c2410/machsmdk2410.e文件下的smdk2410_devices[],指明初始化时包含在前面所设置的flash分区信息,并增加如下句子:
&s3c_device_nand,
(3)制止Flash ECC校验
内核一般都是经过UBOOT写到Nand Flash的。UBOOT则经过软件ECC算法来发生ECC校验码,这与内核校验的ECC码不相同,内核中的ECC码是由S3C2410中Nand Flash控制器发生的。所以,这儿挑选制止内核ECC校验。
修正drivers/mtd/nand/s3c2410.C 下的s3c2410_nand_init_chip ()函数,可在该函数体最终加上如下一条句子:
chip->eccmode=NAND_ECC_NONE;
3 内核装备进程
3.1 支撑发动时挂载devfs
为了使内核支撑devfs以及在发动且在/sbin/init运转之前能主动挂载/dev为devfs文件体系,应修正fs/Keonfig文件,找到menu“Pseudo filesystems”并增加如下句子:
3.2 装备内核发生.config文件
Linux内核削减的装备菜单指令有好几个装备办法,这几个办法完结的功用相似,仅仅与用户的交互界面不同。其间:
make config是根据文本的、最为传统的装备界面,可进入指令行;
make menuconfig是根据文本菜单的装备界面;
make xconfig是根据图形窗口形式的装备界面,在Xwindow下引荐运用该界面。
在这3种办法中,make menuconfig运用最为广泛,这儿选用的是make menuconfig的装备办法。相应的装备有三种挑选,它们别离代表的意义如下:
“Y”:将该功用编译进内核;
“N”:不将该功用编译进内核;
“M”:将该功用编译成能够在需求时动态刺进到内核中的模块。
运转make menuconfig时,在smdk2410_defeonfig根底上,其所增删的内核装备项如下:
(1)增加对模块的支撑
Loadable module support—>
- Enable loadable module support
- Automatic kernel module loading
System Type——>
4 内核编译与下载
4.1 内核编译
编译内核时,可运转以下指令:其一是#make clean,即整理环境,确保没有不正确的依靠文件存在;二是#make dep,行将内核源码树中每个子目录发生的“.depend”文件树立起依靠联系;三是#make zImage,用于树立紧缩的linux内核映像。
4.2 下载zImage到开发板
下载zImage到开发板的办法许多,常见的有网络下载(如FTP、TFTP等方法)、串口下载、USB下载等。本文选用FTP方法来移植Linux内核映像文件到方针机NAND FLASH中。代码如下:
CRANE2410#tftp 0x30008000 zImage
至此,该嵌入式Linux的编译和移植作业便告悉数完结。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/263159.html