当前位置:文档之家› 嵌入式毕业论文

嵌入式毕业论文

毕业设计(论文)

题目:

系别:

专业:

年级:

姓名:

学号:

指导教师:

摘要

关键词:U-boot 、内核配置、根文件系统(rootfs)

随着ARM芯片以及LINUX操作系统的出现,为嵌入式的发展注入了强劲的活力。本设计实现LINUX操作系统向ARM9平台的移植。U-boot是系统的启动引导程序,要移植LIUNX操作系统,U-boot是必不可少的。LINUX操作系移植成功后,系统还是不能正常启动的,还需要根文件系统(rootfs)支持,这样系统就可以正常启动。但是嵌入式系统往往是为某些特定的功能设计的,所以,系统要想完成某些功能,还需要顶层应用程序的支持。

Abstract

KEY WORDS :U-boot kernel rootfs

With the ARM chip, as well as the emergence of LINUX operating system for embedded development into a strong vitality. LINUX Operating System Design and Implementation of the ARM9 platform to transplantation. U-boot the system boot process, it is necessary to transplant LIUNX operating system, U-boot is a must. LINUX operating system after a successful transplant, the system still does not start, but also the need for root file system (rootfs) support, so the system can be a normal start. However, for embedded systems is often the function of specific design, so, the system in order to complete certain functions, but also the need for top-level application support.

目录

第一章绪论 (4)

第二章课题任务 (5)

第三章设计依据 (6)

一.软件平台的选择 (6)

二.硬件平台的选择 (8)

三.应用程序的选择 (9)

第四章系统规划 (10)

一.系统分析流程 (10)

二.LINUX内核的配置 (12)

三.根文件系统选择 (14)

第五章设计主体 (18)

一.ARM-LINUX交叉工具的制作及安装 (18)

二.U-boot的编译及移植 (18)

三.LINUX内核的配置编译及移植 (20)

四.rootfs的制作及烧写工作 (24)

五.应用程序的移植 (25)

第六章个人体会 (26)

第七章附录 (27)

一.致谢 (27)

二.参考文献 (27)

第一章绪论

随着嵌入式技术的发展,嵌入式的应用领域也越来越广泛。随着IC设计的发展,出现了工业化ARM芯片,可以说ARM是未来嵌入式开发的主宰。ARM 是Advanced RISC Machines的首字母组合,是一类微型处理器的统称。LINUX 操作系统是目前嵌入式操作系统中主流的操作系统,它不同于WINDOWS,LINUX操作系统是完全开源的,这就使嵌入式开发过程大大降低了成本。另外,LINUX操作系统支持多种文件系统,如EXT2、EXT3、MINIX、VFS等等。在ARM开发过程中LINUX操作系统的开发极为重要,LINUX下ARM的BOOTLOAD、内核、文件系统的裁剪、移植、烧录工作以及针对文件系统进行GUI的编写任务,最终形成一成功的GUI界面,成为ARM-LINUX的开发重点。

本设计选用的bootloader 为U-boot ,经过编译后生成二进制文件,将其烧写到ARM平台的NAND FLASH中。内核选用LINUX操作系统LINUX 2.6.14.1版本的内核源码,将其进行修改之后移植到ARM9(S3C2410)的芯片上。文件系统采用busybox软件包经过修改用cramfs 工具生成.img映像文件,烧写到NAND FLASH 中。

ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,主要包括ARM9TDMI和ARM9E-S等系列。本设计采用韩国三星公司生产的ARM9TDMI——s3c2410芯片。

以手机应用为例,2G手机只需提供语音及简单的文字短信功能,而目前的2.5G和未来的3G手机除了提供这两项功能外,还必须提供各种其他的应用功能。主要包括:(1)无线网络设备:手机上网、电子邮件及其他定位服务等功能;

(2)PDA功能:含有用户操作系统(Windows CE、Symbian OS、LINUX等)及其他功能;(3)高性能功能:音频播放器、视频电话、手机游戏等。在2.5G和3G 的应用中ARM9已经全面替代了ARM7。因为ARM9的新特性能够满足各种新需求的同时减少产品研发时间并降低研发费用。

新一代的ARM9处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。

第二章课题任务

本设计完成LINUX下ARM的BOOTLOAD、内核、文件系统的烧录工作,同时主要针对文件系统进行GUI的编写任务,最终形成一成功的GUI界面。

首先,是LINUX操作系统的内移植。包括内核版本的选择,根文件系统的制作,应用程序的移植等等。在ARM开发过程中LINUX操作系统的开发极为重要,本设计完成LINUX下ARM的BOOTLOAD、内核、文件系统的烧录工作,同时主要针对文件系统进行GUI的编写任务,最终形成一成功的GUI界面。本设计要求学生掌握S3C2410的基本中断知识,以及与外部液晶通信的相关知识。在设计过程中学生要先了解U-BOOT、内核、文件系统的大体结构,利用所学知识熟悉对芯片的烧录工作。然后先从顶层对文件系统进行编辑,通过编辑文件系统形成对液晶屏幕的大体设计,本设计要求学生在液晶屏幕上制作一常用设备界面,并且通过挂载键盘驱动实现键盘对液晶的控制。

第三章设计依据

一.软件平台的选择

LINUX系统属于开放源代码软件,由于LINUX系统具有稳定、安全、网络负载力强、占用硬件资源少等技术特点,自问世以来得到了迅速推广和应用,并已发展为当今世界的主流的嵌入式操作系统之一。

LINUX在嵌入式的广泛应用不是偶然的,这就取决于LINUX操作系统特点。

1、完全免费

LINUX是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了LINUX的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变。这让LINUX吸收了无数程序员的精华,不断壮大。

2、完全兼容POSIX 1.0标准

这使得可以在LINUX下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到LINUX奠定了基础。许多用户在考虑使用LINUX 时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。

3、多用户、多任务

LINUX支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,LINUX可以使多个程序同时并独立地运行。

4、良好的界面

LINUX同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Windows 系统,用户可以使用鼠标对其进行操作。在X-Windows环境中就和在Windows 中相似,可以说是一个LINUX版的Windows。

5、丰富的网络功能

互联网是在Unix的基础上繁荣起来的,LINUX的网络功能当然不会逊色。它的网络功能和其内核紧密相连,在这方面LINUX要优于其他操作系统。在LINUX中,用户可以轻松实现网页浏览、文件传输、远程登陆等网络工作。并且可以作为服务器提供WWW、FTP、E-Mail等服务。

6、可靠的安全、稳定性能

LINUX采取了许多安全技术措施,其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。LINUX由于需要应用到网络服务器,这对稳定性也有比较高的要求,实际上LINUX在这方面也十分出色。

7、支持多种平台

LINUX可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha 等处理器的平台。此外LINUX还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的LINUX 2.4版内核已经能够完全支持Intel 64位芯片架构。同时LINUX也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。

8、操作系统的低占用率

LINUX是由内核(kernel)以及在其之上的实用程序构成的,内核负责管理计算机的各种资源,如处理器和内存,而且必须保证合理地分配资源。当LINUX 启动时,内核被调入内存,并一直驻留在内存中直到关机断电。同大多数的Unix 或者类Unix系统类似,LINUX的内核在设计的时候被设计的尽量很小,把许多工作交给内核以外的实用程序执行。通过利用LINUX这个特点,用户在安装LINUX的时候可以定制安装的应用程序的多少,在某些情况下用户可以仅安装一个LINUX的核心。

9、低移植成本低

LINUX能够在几乎所有的计算机平台上运行,包括PC、PC服务器、UNIX 服务器、中型机、大型计算机上,给用户的应用软件在不同的平台之间的移植创造了极为便利的条件。

例如,企业级用户随着业务的不断增长,硬件平台从小型的PC服务器升级到较高端的UNIX服务器,甚至更高端的中型机或大型机的情况是极为常见的。过去,由于PC服务器使用的是Windows 操作系统,而UNIX 服务器使用的操作系统,中型机和大型机使用的是厂商提供的专用系统,所以在不同的平台之间的软件移植,可能会发生中间件软件的版本更换,应用软件的重新编译,甚至是应用软件源代码的修改,很可能需要比较大的人力物力的投入,而如果采用了LINUX 操作系统,不同平台之间的移植就会容易的多。

综合LINUX的以上优点,本设计的软件平台采用Ubuntu LINUX 8.10作为主机(host)的开发平台。

LINUX系统内核选用2.6版本的内核LINUX-2.6.14.1。因为LINUX系统2.6版本的内核自2003推出至今,一直在不断升级,小版本号一直在变化,选用这款2.6.14.1的内核是因为其移植较最新版本的内核移植过程更为复杂,使我在一直过程中更能深一步了解移植的过程,学到更多的经验,故而选择这款内核。

文件系统的选择是具有通用性质的,我在这里选用busybox工具集。熟悉LINUX的人对busybox一定不陌生,它被非常形象地成为嵌入式LINUX系统的“瑞士军刀”,因为它将许多常用的UNIX(LINUX的前身)命令和工具集合到了一个单独的可执行程序当中,这样就为文件系统的移植提供了很大的方便。这些常用的命令对于嵌入式系统而言已经足够了,所以选用busybox软件包制作文系统。

二.硬件平台的选择

硬件平台选用韩国三星公司的ARM9处理器——S3C2410,S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用0.18um制造工艺的32位微控制器。该处理器拥有:独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM的Timer ,I/O口,RTC,8路10位ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。S3C2410处理器最高可运行在203MHz。而且s3c2410的价格比较便宜,在实十几美元左右,可以说是物美价廉。

核心板的尺寸仅相当于名片的2/3大小,尺寸如此小巧的嵌入式核心板是国内首创。开发商可以充分发挥想象力,设计制造出小体积,高性能的嵌入式应用产品。

(1)S3C2410芯片集成了大量的功能单元,包括:

◆内部1.8V,存储器3.3V,外部I/O3.3V,16KB数据Cache,16KB

指令Cache,MMU。

◆内置外部存储器控制器(SDRAM控制和芯片选择逻辑)。

◆LCD控制器,一个LCD专业DMA。

◆4个带外部请求线的DMA。

◆3个通用异步串行端口(IrDA1.0,16-Byte Tx FIFO and 16-Byte Rx

FIFO),2通道SPI

◆一个多主I2C总线,一个I2S总线控制器。

◆SD主接口版本1.0和多媒体卡协议版本2.11兼容。

◆两个USB HOST,一个USB DEVICE(VER1.1)。

◆4个PWM定时器和一个内部定时器。

◆看门狗定时器。

◆117个通用I/O。

◆56个中断源。

◆24个外部中断。

◆电源控制模式:标准、慢速、休眠、掉电。

◆8通道10位ADC和触摸屏接口。

◆带日历功能的实时时钟。

◆芯片内置PLL。

◆设计用于手持设备和通用嵌入式系统。

◆16/32位RISC体系结构,使用ARM920T CPU核的强大指令集。

◆带MMU的先进的体系结构支持WinCE、EPOC32、LINUX。

◆指令缓存(Cache)、数据缓存、写缓存和物理地址TAG RAM,减

小了对主存储器带宽和性能的影响。

◆ARM920T CPU核支持ARM调试的体系结构。

◆内部先进的位控制器总线(AMBA)(AMBA2.0,AHB/APB)。

(2)系统管理

◆小端/大端支持

◆地址空间:每个BANK128MB(全部为1GB)。

由于ARM9芯片的功能强大,管脚丰富,开发资源丰富,在综合其价位,决定选用三星公司的这款s3c2410芯片作为硬件平台。

三.应用程序的选择

应用程序是简单的MP3播放器移植,这里做的工作主要是系统的搭建,应用程序只是作为检测系统而作的辅助工作。以此证明系统的可靠、安全、稳定的性质。

第四章系统规划

一.系统分析流程

第一步:U-boot的制作

第二步:Linux内核的配置

第三步:Rootfs的制作

第四步:应用程序的移植

图4-1

从系统的流程图可以看出,U-Boot是系统构建的第一步。

U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与LINUX内核很相似,事实上,不少U-Boot源码就是相应的LINUX内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。但是U-Boot不仅仅支持嵌入式LINUX系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, LINUX, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。这是U-Boot中Universal的一层含义。另外一层含义则是U-Boot除了支持PowerPC 系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。

以上两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对LINUX的支持最完善。其它系列的处理器和操作系统基本是在2002年11 月PPCBOOT改名为U-Boot后逐步扩充的。从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang Denk[以下简称W.D]本人精湛专业水平和持着不懈的努力。当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开

发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。

选择U-Boot的理由:

1.开放源码;

2.支持多种嵌入式操作系统内核,如LINUX、NetBSD, VxWorks, QNX,

RTEMS, ARTOS, LynxOS;

3.支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale;④较

高的可靠性和稳定性;

4.较高的可靠性和稳定性;

5.高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品

发布等;

6.丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、

EEPROM、RTC、键盘等;

7.较为丰富的开发调试文档与强大的网络技术支持;

U-Boot主要目录结构

- board目标板相关文件,主要包含SDRAM、FLASH驱动;

- common独立于处理器体系结构的通用代码,如内存大小探测与故障检测;- cpu 与处理器相关的文件。如mpc8xx子目录下含串口、网口、

LCD驱动及中断初始化等文件;

- driver通用设备驱动,如CFI FLASH驱动(目前对INTEL FLASH支持较好)- doc U-Boot的说明文档;

- examples可在U-Boot下运行的示例程序;如hello_world.c,timer.c;- include U-Boot头文件;尤其configs子目录下与目标板相关的配置头文件

是移植过程中经常要修改的文件;

- lib_xxx处理器体系相关的文件,如lib_ppc, lib_arm目录分别包含与PowerPC、ARM体系结构相关的文件;

- net与网络功能相关的文件目录,如bootp,nfs,tftp;

- post上电自检文件目录。尚有待于进一步完善;

- rtc RTC驱动程序;

- tools用于创建U-Boot S-RECORD和BIN镜像文件的工具;

U-Boot支持的主要功能

U-Boot可支持的主要功能列表系统引导支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;基本辅助功能强大的操作系统接口功能;可灵活设置、传递多个关键

参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤对LINUX 支持最为强劲;支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM;CRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好;设备驱动串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持;上电自检功能SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号;特殊功能XIP内核引导;

因为我们的目标板是arm体系的平台,所以不能只单纯的用主机(host)上的编译工具直接编译,那样就会造成程序无法运行,最终导致移植工程失败。所以我们将要GCC编译工具进行改装,生成交叉工具。

下面就是交叉编译工具(arm-LINUX-gcc)的制作流程

下载源码包解压

修改demo-arm9tdmi.sh脚本文件

修改 arm9tdmi.dat 文件

执行demo-arm9tdmi.sh脚本

添加环境变量

4-2交叉编译工具的制作

二.LINUX内核的配置

有了U-boot和交叉编译工具,接下来就要对内核进行配置。

今天的LINUX是全球被最广泛移植的操作系统内核。从掌上电脑iPAQ到IBM S/390(一种可以同时跑成千上百个LINUX的大型电脑),甚至于有人成功的将LINUX内核在新力出品的游戏机PS2及PS3和微软出品的游戏机Xbox上

使用。

LINUX也是IBM "Blue Gene" Blue Gene的操作系统。直至2008年11月,全球前五百大超级电脑(TOP 500)有高达87.8%的比例采用LINUX为它们的作业系统,最快的超级电脑IBM_Roadrunner正是采用LINUX的。

LINUX目前可以在以下结构上运行:

◆Acorn:Archimedes,A5000和RiscPC系列

◆ARC International的Argonaut RISC Core (ARC)

◆ARM 系列:

◆Atmel A VR32

◆Axis Communications的ETRAX CRIS

◆Fujitsu FR-V

◆Alpha 系列:

◆Hewlett-Packard的Integrity家族使用Intel Itanium CPU

◆Renesas Technology(日立的前身)H8 系列

◆Intel IA-64 Itanium,Itanium II

◆IBM的S/390(31-bit)

◆IBM的zSeries 与System z9 大型主机(64-bit)

◆x86 系列:

◆三菱的M32R

◆MIPS 架构:

◆Freescale(Motorola的前身)68K 架构(68020,68030,68040,68060):

◆NEC v850e

◆Power Architecture:

◆PowerPC 系列:

◆SPARC:

◆日立SuperH:SEGA Dreamcast

◆IBM的AS/400

◆新力的Playstation 2

从以上的数据不难看出,LINUX能够在几乎所有的计算机平台上运行,包括ARM、X86、PC、PC服务器、Atmel、UNIX服务器、MIPS 架构、中型机、大型计算机上,给应用软件在不同的平台之间的移植创造了极为便利的条件。而且LINUX是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了LINUX的修改、编写工作,程序员可以根据自己

的兴趣和灵感对其进行改变。这让LINUX吸收了无数程序员的精华,不断壮大。正是因为LINUX系统支持多种平台,移植性强,而且内核可裁剪等特点,故而选用LINUX内核。具体到本设计,则选用LINUX-2.6.14.1版本的内核。

以下是LINUX-2.6.14.1版本的内核的配置流程。

修改Makefile文件

设置nandflash

Make menuconfig配置内核支持

编译生成内核映像文件zImage

执行make 生成内核映像文件zImage

zImage烧写到目标板

4-3 linux内核配置流程图

三.根文件系统选择

文件系统是LINUX操作系统的重要组成部分,LINUX文件具有强大的功能。文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有LINUX 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。

LINUX 最早的文件系统是Minix,但是专门为LINUX 设计的文件系统——扩展文件系统第二版或EXT2被设计出来并添加到LINUX中,这对LINUX产生了重大影响。EXT2文件系统功能强大、易扩充、性能上进行了全面优化优化,也是现在所以LINUX发布和安装的标准文件系统类型。

每个实际文件系统从操作系统和系统服务中分离出来,它们之间通过一个接口层:虚拟文件系统或VFS来通讯。VFS使得LINUX可以支持多个不同的文件

系统,每个表示一个VFS 的通用接口。由于软件将LINUX 文件系统的所有细节进行了转换,所以LINUX核心的其它部分及系统中运行的程序将看到统一的文件系统。LINUX 的虚拟文件系统允许用户同时能透明地安装许多不同的文件系统。

在LINUX文件系统中,作为一种特殊类型/proc文件系统只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。/proc文件系统是一个伪文件系统,用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。

在LINUX文件系统中,EXT2文件系统、虚拟文件系统、/proc文件系统是三个具有代表性的文件系统,本论文试图通过对他们的分析来研究LINUX文件系统机制。并且在分析这三种文件系统的基础上对LINUX文件系统操作进行了解、研究(本论文选取了open和close两种操作进行研究)。在第二部分中将介绍EXT2文件系统;第三部分论述虚拟文件系统的特点;第四部分简要介绍/proc 文件系统;最后,介绍两种具体文件系统操作的实现。就本设计而言,选用LINUX 支持的只读文件系统——Cramfs文件系统。

Cramfs是Compressed Rom File System的英文缩写,它是LINUX Torvalds 在Transmeta任职时,所参与开发的文件系统。它是针对LINUX内核2.4之后的版本所设计的一种新型只读文件系统,采用了zlib 压缩,压缩比一般可以达到1:2,但仍可以作到高效的随机读取,LINUX系统中,通常把不需要经常修改的目录压缩存放,并在系统引导的时候再将压缩文件解开。因为Cramfs不会影响系统的读取文件的速度,而且是一个高度压缩的文件系统。因此非常广泛应用于嵌入式系统中。

在嵌入式的环境之下,内存和外存资源都需要节约使用。如果使用RAMDISK方式来使用文件系统,那么在系统运行之后,首先要把Flash上的映像文件解压缩到内存中,构造起RAMDISK环境,才可以开始运行程序。但是它也有很致命的弱点。在正常情况下,同样的代码不仅在Flash中占据了空间(以压缩后的形式存在),而且还在内存中占用了更大的空间(以解压缩之后的形式存在),这违背了嵌入式环境下尽量节省资源的要求。

使用CramFS文件系统就是一种解决这个问题的方式。CramFS是一个压缩格式的文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时候,马上计算出该数据在CramFS中的位置,将它实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。CramFS中的解压缩以及解压缩之后的内存中数据存放位置都是由CramFS文件系统本身进行维护的,用户并不需要了解具体的

实现过程,因此这种方式增强了透明度,对开发人员来说,既方便,又节省了存储空间。

一个完整的cramfs文件系统通常包含以下几个目录:

/LINUXrc 启动脚本文件,由Boot Loader核心命令行确定init=/LINUXrc,加载/etc目录为ramfs,(cramfs为只读文件系统),拷贝/mnt/etc

到/etc,配置文件目录重新加载根文件系统和/etc文件系统,执行

init进程。

/bin引导启动所需的命令或用户可能用的命令。

/sbin系统管理员服务程序,其中最重要的是供内核初始化之后执行/sbin/init进程,系统启动时由init解释并运行/etc/inittab, inittab将指

导int去调用一个系统初始化程序/etc/init.d/rcS。

/etc特定机器的配置文件以及用户数据存放目录,其中的所有内容是在内核运行后,由LINUXrc 从/mnt/etc拷贝得到的。

/lib文件系统上的程序所需的动态库。

/dev驱动程序存放目录,可以在这里存放自己编写的驱动程序。

/usr 用于存放用户程序和配置文件的目录,可以根据需要进行设置。目录下的/usr/etc/rc.local执行本地所需要的初始化,如安装核心模块,进行

网络,运行应用程序,启动图形界面等。/etc/modules.conf在系统运行

期间自动加载模块。

/mnt用于设备安装的目录。/mnt/etc/init.d/rcS完成各个文件系统的Mount,执行/usr/etc/rc.local;通过rcS可以调动dhcp程序配置网络。rcS执行

完以后,就会打开Shell。

/proc系统状态文件目录,目录中的文件可以用于访问有关内核的状态、计算机的属性、正在运行的进程的状态等信息。尽管/proc 中的文件

是虚拟的,但它们仍可以使用任何文件编辑器或像'more', 'less'或'cat'

这样的程序来查看。

以下是cramfs文件系统的制作流程:

下载busybox—1.00,tar.gz,并解压make menuconfig进行配置

make install进行安装

建立设备文件目录及文件

编译生成根文件系统的映像文件

烧写入nandflash

4-4 根文件系统的制作流程图

第五章设计主体

一.ARM-LINUX交叉工具的制作及安装

1.下载得到crosstools.tar.gz.

2.把源码包拷贝到一指定目录下,解压:

$ sudo mkdir /usr/local/arm

$ sudo tar jxvf crosstools.tar.gz –C /usr/local/arm

3.切换到超级用户,进入解压目录,修改demo-arm9tdmi.sh脚本文件:

(1) 修改软件包下载路径到用户根目录的downloads:

TARBALLS_DIR = $HOME/downloads

(2) 修改生成的交叉工具存放目录:

RESULT_DIR = $HOME/crosstools

(3) 修改编译依赖工具为:

将#eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls,dat`的“#”去掉。

4.修改arm9tdmi.dat 文件

将生成的目标文件名改为arm-LINUX-,即:

TARGET = arm-LINUX-

5.执行demo-arm9tdmi.sh脚本,即:

./ demo-arm9tdmi.sh 这样就生成了交叉工具cross-3.3.2.tar.bz2

6. 将生成的cross-3.3.2.tar.bz2拷贝到/home/fang/local目录下并解压缩:

cp –a /fang/crosstools/cross-3.3.2.tar.bz2 /home/fang/local

cd /home/fang/local

tar jxvf cross-3.3.2.tar.bz2

7. 添加环境变量

sudo vim /etc/profile 在文件的末尾添加如下代码:

export PATH=/home/fang/local/bin/:$PATH 并保存退出。

在终端中输入

source /etc/profile 这样交叉编译工具就可以正常使用了。

二.U-boot的编译及移植

U-boot是通过GCC和Makefile组织编译的,顶层的Makefile首先可以定置开发平台的定义,然后递归调用各级子目录下的Makefile,最终把

编译过的程序链接成U-boot.img 映像。 1.U-boot 的编译 在U-boot 顶层目录中执行

./make smdk2410_config ,

make

这两条命令执行后就会生成System.map ,u-boot ,u-boot.bin ,u-boot.srec 四个映像文件,System.map :是u-boot 映像的符号表,u-boot 是u-boot 映像的ELF 格式,u-boot.bin 是u-boot 映像的原始二进制格式,u-boot.srec 是u-boot 映像的S-Record 格式,因为目标板中没有任何系统,所以这里选用u-boot 映像的原始二进制格式文件u-boot.bin 。 2.U-boot 的加载

使用烧写工具将u-boot.bin 烧写到nandflash 中。

(1) 将SJF2410_BIOS.BAT 文件中的内容替换成u-boot.bin ,如

sjf2410 /f:u-boot.bin ,运行SJF2410_BIOS.BA T ,在窗口中输入 0,回车; 0,回车;

0,回车;如下图:

这样就将生成的u-boot.bin 烧写到了nandflash 中了。

图5-1 U-boot 烧写

三.LINUX内核的配置编译及移植

1. 下载LINUX 内核:LINUX-

2.6.14.1.tar.bz2并解压

2. 修改Makefile

找到ARCH 和CROSS_COMPILE,修改

ARCH ?= ARM

CROSS_COMPILE ?= arm-LINUX-

3.设置nandflash分区

(1) 修改arch/arm/mach-s3c2410/devc.s

在其中添加

#include

#include

#include

在文件尾添加

/* 为nandflash 划分分区(nand Controller)*/

Static struct mtd_partition partition_info[] ={

{

name : ―boot’’,

size: 0x00100000,

offset :0x0,

},{

name : ―kernel’’,

size: 0x00300000,

offset :0x00100000,

},{

name : ―root’’,

size: 0x02800000,

offset :0x00400000,

},{

name : ―user’’,

size: 0x01400000,

offset :0x02c00000,

}

};

相关主题
文本预览
相关文档 最新文档