当前位置:文档之家› 嵌入式Linux系统的搭建与配置过程

嵌入式Linux系统的搭建与配置过程

1.摘要 (2)2.UBOOT,LINUX内核,文件系统的介绍及相互关系..3 2.1嵌入式系统简介 (3)2.2嵌入式Linux概述 (3)2.3UBOOT简介 (4)3.UBOOT的启动过程 (6)4.内核的主要功能和裁剪 (7)4.1Linux的编译 (7)4.2嵌入式Linux的配置和剪裁 (8)5.文件系统的制作过程 (8)6.交叉编译器的搭建和环境变量的设置 (9)7.驱动程序的编写过程与关键点 (11)7.1Linux网络驱动程序的结构 (11)7.2网络驱动程序的基本方法 (12)7.3网络驱动程序中用到的数据结构 (12)7.4常用的系统支持 (14)7.5编写Linux网络驱动程序中需要注意的问题 (18)8.参考文献 (20)嵌入式系统是以应用为中心,以计算机为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序4部分组成,用于实现对其它设备的控制、监视或管理等功能。

其广泛应用于控制领域、消费电子产品等行业,已成为现代电子领域的重要研究方向之一。

嵌入式Linux的研究已经成为当前信息技术研究的热点,它的应用蕴含着巨大的商业价值,并且己经广泛的应用于各种信息家电、通讯产品、工业控制中。

论文首先介绍了ARM和嵌入式Linux操作系统的特点和当前的发展概况。

然后阐述了嵌入式Linux 开发流程以及移植到具体硬件平台需要完成的工作,如U-Boot的移植、Linux内核的编译与裁剪、文件系统的制作、驱动程序的编写等。

关键字:嵌入式;ARM;嵌入式Linux;Linux内核;驱动程序2.LINUX,UBOOT,文件系统的介绍及相互关系2.1嵌入式系统简介嵌入式系统是以应用为中心,以计算机为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

单片机、单板机控制系统以及一些专用的工业控制计算机都可以称作嵌入式系统,它是嵌入式系统领域的重要组成部分,只是更着重于对各自硬件系统的研究。

嵌入式系统更着重于对软件系统进行研究,顺应了软硬件协同设计以及应用需求的发展。

目前,嵌入式系统己逐步发展成为一门学科,朝着系统化和规范化的方面发展。

嵌入式系统学科和产业的发展使得设计人员能够从容地面对越来越复杂的应用需求,通过软件和硬件的模块化设计大大地简化和加快应用系统的开发.嵌入式系统主要包括硬件和软件两部分。

硬件包括处理器、存储器及外部设备、I/0端口和图形控制器等;软件部分包括操作系统(OS)和用户应用程序。

嵌入式系统硬件的核心是嵌入式微处理器。

它的功能、外设集成度、速度、功耗、体积、成本、可靠性和电磁兼容性等方面均受到应用要求的制约,是各个半导体厂商之间竞争的热点。

嵌入式系统的软件是实现嵌入式系统功能的关键,软件要求固化存储,代码的高质量、高可靠性和高实时性在许多场合也是基本要求。

多任务嵌入式操作系统是知识集成的平台,是嵌入式系统走向工业标准化道路的基础,是嵌入式系统研究的重要方向。

现在人们讲嵌入式系统时,某种程度上是指近些年来比较热门的具有操作系统的嵌入式系统。

2.2嵌入式Linux概述Linux操作系统源于芬兰一位大学生—LinusTorvalds的课余作品,随着Intemet的发展,Linux操作系统在全球计算机爱好者的关怀下,不断地发展和成长,己成为当前最流行的免费操作系统,任何人都可以自由的使用Linux源程序。

嵌入式Linux操作系统的组成,我们可以和PC机相对应来理解,在PC机上,Windows 的启动大致有BIOS、内核、文件系统和初始化程序几个部分;那么相对而言,嵌入式Linux的移植有Bootloader、Linux内核、文件系统、初始化和用户的应用程序几部分,Bootloader完成系统的初始化和引导。

Linux操作系统具有以下几大特点:(1)开放源码,丰富的软件资源Linux遵循GPL(GNU通用许可证),用法律保障了用户免费获得内核源代码的权利。

由于嵌入式系统千差万别,往往需要针对某一具体应用去修改和优化系统,这样,能否获得源代码就至关重要。

Linux是自由的操作系统,它的开放源代码使用户获得了最大的自由度。

Linux上的软件资源十分丰富,每种通用程序在Linux上都可以找到,并且每天都在增加。

在Linux上往往不需要从头做起,而是先选择一个类似的自由软件,进行二次开发。

这就大大节省了开发工作量,缩短了开发时间。

(2)功能强大的内核,性能高效、稳定、多任务Linux的内核非常稳定。

它的高效和稳定性已经在各个领域,尤其在网络服务器领域得到了事实的验证,而且Linux内核小巧灵活,易于裁剪。

这使Linux能很适合嵌入式系统的应用。

(3)支持多种体系结构Linux能支持X86,ARM,MIPS,POWERP,ALPHA,SPARC等多种体系结构。

目前,Linux己被移植到数十种硬件平台上,几乎所有流行的CPU,Linux都支持。

(4)完善的网络通信、图形和文件管理机制Linux自产生之日起就与网络密不可分,网络是Linux的强项。

另外,它支持ext2,fatl6,fat32,romfs等多种文件操作系统。

在图形系统方面,Linux上既有成熟的xWindow,也有embedcd QT,MiniGUI等嵌入式图形用户界面GUI,还有ysvgalib,framebuffer等优秀工具,可以适合不同的用途。

(5)支持大量的周边硬件设备,驱动丰富Linux上的驱动己经非常丰富了,支持各种主流硬件设备和最新硬件技术,而且随着Linux的广泛应用,许多芯片厂家也已经开始提供Linux上的驱动。

这一步促进了Linux各种硬件平台上的应用。

(6)大小功能都可定制Linux继承了Unix的优秀设计思想,内核与用户界面是完全独立的。

它非常灵活,各部分的可定制性都很强,能适合多种需求。

2.3UBOOT简介U—Boot是一个非常复杂的东酉,它也体现了嵌入式系统的一个非常重要的特征:自己定制。

它脱胎于PC机的Linux,可从网站上直接下载,U.Boot和其它任何BOOTLOADER都是一样的,主要实现对系统进行初始化、系统引导、FLASH操作等功能。

开发平台的U.Boot主要是对板子的硬件进行初始化,包括:时钟和PLL、定时器、调试串D(DebugDART)等等。

有了U.B00t我们可以在主机的超级终端通过调试串口和目标机进行通信和设置。

2.3.1编译U-Boot在Linux系统下,用下面的命令对U.Boot进行编译$cdU.BOOT;进入目录Smakeat91rm9200dk_eonfig;编译Smakeall$gzip_cu-boot.bin>u-boot.gz;压缩为gz文件编译boot.bin$cdBootSmake编译loader.bin$cdLoaderSmake2.3.2U.Boot命令在本系统中,采用的是U-Boot,U-Boot在嵌入式系统中相当于Pc机的BIOS加上操作系统引导头部的内容,并且引导操作系统进行装载和运行,U.Boot启动后有一系列的命令,使得我们能够方便的对FLASH、RAM进行操作,U.Boot 已经对系统的频率、定时器进行了设置,初始化了一个调试串口,我们可以通过串口或者以太网进行数据的下载。

下面是U.Boot常用的命令:go一在地址’addr’处开始程序执行run一运行命令bootm一从内存中进行应用程序影像运行bootp一通过网络用BootP/TFTP协议来启动影像tf砸boot一通过网络用TFTP协议、设置服务器和客户机的IP地址进行影像文件传送loadb一通过串口线(kermitmode)来装载二进制文件pfintcnv一打印环境变量.setcnv一设置环境变量saveenv一保存环境变量到内存下面是U.Boot的简单环境变量baudrate一波特率bootdelay--Boot延迟bootcmd--Boot命令bootargs—Boot参数ipaddr一客户机IP地址servefip一服务器地址loadaddr一装载地址etlladdr一网卡MAC地址3.UBOOT的启动过程嵌入式Linux系统一般没有自举程序,必须通过启动程序来引导硬件系统进入操作系统。

启动程序的工作包括:改变系统时钟、关闭WATCHDOG、初始化存储控制器等。

本文针对本嵌入式控制系统所需的硬件方案,植入Uboot1-3.4启动程序。

U-Boot是一种功能强大的引导转载程序。

它不仅支持Linux、Vxworks等操作系统,还支持PowerPC、ARM等多种系列处理器。

Uboot启动过程分为两个阶段。

第一阶段由汇编来实现,用于完成依赖于CPU体系结构的初始化,并调用第二阶段的代码。

第二阶段由C语言实现,完成相关初始化后,进入命令循环以等待用户命令,或将参数传给内核,引导Linux内核启动。

图中给出了Uboot的启动流程。

Uboot-1.3.4中对at91rm9200dk系列的开发板有很好的支持,只需做少量修改即可使用。

但是在目前U-Boot-1.3.4引导系统中,不能识别本论文中采用的8MB NOR Flash(SPANSION公司的S29GL064N90TFI04)和1GB NAND Flash (SAMSUNG公司的K9K8G08U0A)两款芯片,需要自行移植。

4.Linux的编译,内核配置和裁剪4.1Linux的编译在配置内核前的须做必要的设置,主要在内核原码中设置文件Makefile,用下列指令打开Makefile文件:$viMakefile在Makefile中主要设置两个地方:ARCH CROSSCOMPILE。

ARCH:=arm;表示目标板为arm。

CROSS COMPILE=交叉编译工具的地址;设置交叉编译工具的地址,例如CRoSSCOMPILE=lusr/10cal/arm/2.95.3、birdarm.1inux。

还要在脚本文件mkimage中把路径改为9200/bootldr/u-boot-1.0.O/tools。

(具体的路径和你的u-boot放的位置有关)然后按如下命令顺序进行内核编译即可:内核配置:Smake menuconfig或makcxeon!ig内核编译:Smaketiean$make dep$make$./mkimage;运行mkimage脚本文件4.2嵌入式Linux的配置和剪裁在Linux下,用makemenuconfig或makexeontig进入配置界面。

在内核配置中,一般有四种选择:Y(选择)、N(不选)、M(模块)和数字,用户可以根据剪裁需要进行设置,最后配置完毕,选择是否对配置结果进行保存?保存为.eonfig文件。

相关主题