Linux操作系统多数Intemet设备内核移植过程及方法

您所在的位置:网站首页 linux内核makefile分析 Linux操作系统多数Intemet设备内核移植过程及方法

Linux操作系统多数Intemet设备内核移植过程及方法

2023-03-27 11:14| 来源: 网络整理| 查看: 265

微处理器的形成为价钱低廉、结构精巧的CPU和外设的联接提供了稳定可靠的硬件构架,这样,限制嵌入式系统发展的困局就突出表现在了软件方面。虽然从八十年代末开始,早已相继出现了一些嵌入式操作系统(比较知名的有Vxwork、pSOS、Neculeus和WindowsCE)。但这种专用操作系统都是商业化产品,其昂贵的价位使许多高端产品的小公司望而兴叹;并且,源代码封闭性也大大限制了开发者的积极性。而Linux的开放性,致使许多人都觉得Linux特别适宜多数Intemet设备。Linux操作系统可以支持不同的设备和不同的配置。Linux对厂商不偏不倚,但是成本极低,因此很快成为用于各类设备的操作系统。嵌入式linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引诸多的厂商步入这一领域。

1嵌入式linux操作系统

Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix相像、以核心为基础、全显存保护、多任务、多进程的操作系统。可以支持广泛的计算机硬件,包括X86、Alpha、Sparc、MIPS、PPC、ARM、NEC、MOTOROLA等现有的大部份芯片。Linux的程序源码全部公开,任何人都可以按照自己的须要剪裁内核,以适应自己的系统。文章以将linux移植到ARM920920T内核的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用tarixvfarm—linux一3.3.4.bar.bz2命令解压到/usr/local/arm下即可。

2.2更改Makefile

arm linux内核启动分析_arm linux内核移植_arm linux 内核 编译

更改内核目录树皮下的Makefile时,可先指明交叉编译器。设计时,可向Makefile中添加如下内容:

ARCH?=arm

CROSS_COMPILE?=arm-linux-之后设置PATH环境变量,使其可以找到其交叉编译工具链,之后运行vi~/.bashrc,再添加如下内容:

exportPATH=/usr/local/arln—linux一3.4.4/bin:$PATH

2.3设置Flash分区

此处一共要更改3个文件,分别如下:

(1)在arch/arm/machsmachs33cc24102410/devs.c文件中添加如下内容:

arm linux 内核 编译_arm linux内核移植_arm linux内核启动分析

#include

#include

#include

之后再完善NandFlash分区表;同时完善NandF1ash芯片支持,最后加入NandFlash芯片并支持到NandFlash驱动。

另外,还要更改arch/arm/machsmachs33cc24102410/devs.C文件中的s3c_device_nand结构体变量,同时添加对dev成员的形参。

(2)指定启动时初始化

内核启动时,可以根据对分区的设置进行初始配置,之后更改arch/am4mach—s3c2410/machsmdk2410.e文件下的smdk2410_devices[]linux压缩命令,指明初始化时包括在上面所设置的flash分区信息,并添加如下句子:

&s3c_device_nandarm linux内核移植,

(3)严禁FlashECC校准

内核通常都是通过UBOOT讲到NandFlash的。UBOOT则通过软件ECC算法来形成ECC校准码,这与内核校准的ECC码不一样,内核中的ECC码是由S3C2410中NandFlash控制器形成的。所以,这儿选择严禁内核ECC校准。

更改drivers/mtd/nand/s3c2410.C下的s3c2410_nand_init_chip()函数,可在该函数体最后加上如下一条句子:

chip->eccmode=NAND_ECC_NONE;

3内核配置过程

3.1支持启动时挂载devfs

arm linux内核启动分析_arm linux内核移植_arm linux 内核 编译

为了使内核支持devfs以及在启动且在/sbin/init运行之前能手动挂载/dev为devfs文件系统,应更改fs/Keonfig文件linux学习论坛,找到menu“Pseudofilesystems”并添加如下句子:

3.2配置内核形成.config文件

Linux内核裁减的配置菜单命令有好几个配置方式,这几个方式实现的功能类似,只是与用户的交互界面不同。其中:

makeconfig是基于文本的、最为传统的配置界面,可步入命令行;

makemenuconfig是基于文本菜单的配置界面;

makexconfig是基于图形窗口模式的配置界面arm linux内核移植,在Xwindow下推荐使用该界面。

在这3种方式中,makemenuconfig使用最为广泛,这儿选用的是makemenuconfig的配置方式。相应的配置有三种选择,它们分别代表的涵义如下:

arm linux 内核 编译_arm linux内核启动分析_arm linux内核移植

“Y”:将该功能编译进内核;

“N”:不将该功能编译进内核;

“M”:将该功能编译成可以在须要时动态插入到内核中的模块。

运行makemenuconfig时,在smdk2410_defeonfig基础上,其所增删的内核配置项如下:

(1)降低对模块的支持

Loadablemodulesupport--->

关键词:armlinux内核移植剪裁过

加入陌陌

获取电子行业最新资讯



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3