2017毕业论文-完成LINUX下arm的交互开发工作.doc_第1页
2017毕业论文-完成LINUX下arm的交互开发工作.doc_第2页
2017毕业论文-完成LINUX下arm的交互开发工作.doc_第3页
2017毕业论文-完成LINUX下arm的交互开发工作.doc_第4页
2017毕业论文-完成LINUX下arm的交互开发工作.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河北软件职业技术学院毕业设计(论文)题 目:系 别:专 业:年 级:姓 名:学 号:指导教师:摘 要关键词:U-boot 、内核配置、 根文件系统(rootfs)随着 ARM芯片以及LINUX操作系统的出现,为嵌入式的发展注入了强劲的活力。本设计实现LINUX操作系统向ARM9平台的移植。U-boot是系统的启动引导程序,要移植LIUNX操作系统,U-boot是必不可少的。LINUX操作系移植成功后,系统还是不能正常启动的,还需要根文件系统(rootfs)支持,这样系统就可以正常启动。但是嵌入式系统往往是为某些特定的功能设计的,所以,系统要想完成某些功能,还需要顶层应用程序的支持。AbstractKEY WORDS :U-boot kernel rootfsWith 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. 完目 录第一章 绪论3第二章 课题任务4第三章 设计依据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 版本的内核源码,将其进行修改之后移植到ARM9(S3C2410)的芯片上。文件系统采用busybox软件包经过修改用cramfs 工具生成.img映像文件,烧写到NAND FLASH 中。ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,主要包括ARM9TDMI和ARM9E-S等系列。本设计采用韩国三星公司生产的ARM9TDMIs3c2410芯片。以手机应用为例,2G手机只需提供语音及简单的文字短信功能,而目前的25G和未来的3G手机除了提供这两项功能外,还必须提供各种其他的应用功能。主要包括:(1)无线网络设备:手机上网、电子邮件及其他定位服务等功能;(2)PDA功能:含有用户操作系统(Windows CE、Symbian OS、LINUX等)及其他功能;(3)高性能功能:音频播放器、视频电话、手机游戏等。在25G和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-。因为LINUX系统2.6版本的内核自2003推出至今,一直在不断升级,小版本号一直在变化,选用这款的内核是因为其移植较最新版本的内核移植过程更为复杂,使我在一直过程中更能深一步了解移植的过程,学到更多的经验,故而选择这款内核。文件系统的选择是具有通用性质的,我在这里选用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播放器移植,这里做的工作主要是系统的搭建,应用程序只是作为检测系统而作的辅助工作。以此证明系统的可靠、安全、稳定的性质。第四章 系统规划一.系统分析流程 第二步:Linux内核的配置第一步:U-boot的制作第三步: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)的制作流程下载源码包解压解压源码包解压下载源码包解压修改 arm9tdmi.dat 文件执行demo-arm9tdmi.sh脚本修改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 AVR32 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-版本的内核。以下是LINUX-版本的内核的配置流程。修改Makefile文件设置nandflashMake menuconfig配置内核支持编译生成内核映像文件zImage 执行make 生成内核映像文件zImagezImage烧写到目标板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文件系统的制作流程:4-4 根文件系统的制作流程图 下载busybox1.00,tar.gz,并解压make menuconfig进行配置make install进行安装建立设备文件目录及文件编译生成根文件系统的映像文件烧写入nandflash第五章 设计主体一.ARM-LINUX交叉工具的制作及安装1. 下载得到crosstools.tar.gz.2. 把源码包拷贝到一指定目录下,解压:$ sudo mkdir /usr/local/arm$ sudo tar jxvf crosstools.tar.gz C /usr/local/arm3. 切换到超级用户,进入解压目录,修改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.bz26. 将生成的cross-3.3.2.tar.bz2拷贝到/home/fang/local目录下并解压缩:cp a /fang/crosstools/cross-3.3.2.tar.bz2 /home/fang/localcd /home/fang/localtar jxvf cross-3.3.2.tar.bz27. 添加环境变量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.BAT,在窗口中输入0, 回车;0,回车;0, 回车;如下图:图5-1 U-boot烧写这样就将生成的u-boot.bin烧写到了nandflash中了。三.LINUX内核的配置编译及移植1. 下载LINUX 内核:LINUX-.tar.bz2并解压2. 修改Makefile 找到ARCH 和CROSS_COMPILE,修改ARCH ?= ARMCROSS_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,; /*加入nandflash分区*/struct s3c2410_platform_nand superlpplatform=tacls:0,twrph0:30,twrph1:0sets: &nandset,nr_sets:1,;注:sets :支持的分区集nr_set:分区个数 /*加入nandflash芯片支持到nandflash驱动*/struct_platform_device s3c_device_nand = .name = “s3c2410-nand”,.id = 1,.num_resources = ARRAY_SIZE(s3c_nand_resource),.resource = s3c_nand_resource,/*添加 nand flash 设备*/.dev = .platform_data = &superlpplatform ;将文件中与“加入nandflash芯片支持到nandflash驱动”相同的部分注释掉,并保存退出。4.指定启动时初始化系统启动时会根据对分区的设置进行初始化配置,所以要对初始化配置进行设置。 vim arch/arm/mach-s3c2410/mach-smdk2410.c 在 static struct platform_device *smdk2410_device _initdata 中添加:&s3c_device-nand, 保存退出。5.注释掉 arch/arm/kernel/setup.c 中的prase_tag_cmdline() 中的strcpy()函数。保存退出。6.禁止flash ECC校验修改drivers/mtd/nand/s3c2410.c 找到s3c2410_nand_init_chip()函数,在该函数的最后一行添加chip-二次沉默的= NAND_ECC_NONE;注:因为内核是要通过U-boot写到nandflash中,U-boot通过软件的ECC 算法产生ECC 的校验码与内核校验的ECC码不同,内核的ECC码是由s3c2410中的nandflash控制器产生的,所以禁止ECC校验。7.支持启动时挂载devfs为了我们的内核支持devfs以及在启动时并在/bin/init运行之前能自动挂载/dev为devfs文件系统,需要修改fs/Kconfig文件vim fs/Kconfig,找到”menu Pseudo filesystems” 添加如下语句:config DEVFS_FSbool /dev file system support (OBSOLETE)default yconfig DEVFS_MOUNTbool Automatically mount at bootdefault ydepends on DEVFS_FS保存并退出。8.将arm/arch/configs/smsk2410_defconfig配置文件 拷贝到根目录,重命名为 .config执行 cp arm/arch/configs/smsk2410_defconfig .config9执行 make menuconfig,等待弹出界面进行配置。进入配置界面Loadable module support-Enable loadable module support Automatic kernel module loading System Type-S3C2410 DMA supportBoot options-将“Ddefault kernel command string”配置为:noinitrd root=/dev/mtdblock2 init=/LINUXrc console=ttySAC0,115200 rootfstype=jffs2Root是根文件系统的分区,console=tt SAC0,115200是将输出终端配置为串口。rootfstype=jffs2:是所使用的根文件系统类型。Floating point emulation-NWFPE math emulation支持浮点运算,这是运行二进制文件所必需的。Device Drivers-Memory Technology Devices(MTD)-MTD partitioning support/*支持 mtd 分区,使前面devs.c里设置的分区有效。*/ Command line partition table parsing/*支持命令行设置 flash 分信息*/RAM/ROM/FLASH chip- Detect flash chips by Common Flash Interface(CFI)probe Detect nonCIFSupport for Intel/Sharp flash chips Support for AMD/Fujitsu flash chips Support ROM chips in bus mapping NAND Flash Device Drivers- NAND Device Support NAND Flash support for S3C2410/s3c2440 SoCCharacter devices- Nandstandard serial port supportS3C2410 RTC DriverFile systems-Second extended fs suppor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论