基于ARM的嵌入式Linux内核的研究与移植毕业论文.doc

上传人:文库蛋蛋多 文档编号:2388143 上传时间:2023-02-17 格式:DOC 页数:30 大小:527.50KB
返回 下载 相关 举报
基于ARM的嵌入式Linux内核的研究与移植毕业论文.doc_第1页
第1页 / 共30页
基于ARM的嵌入式Linux内核的研究与移植毕业论文.doc_第2页
第2页 / 共30页
基于ARM的嵌入式Linux内核的研究与移植毕业论文.doc_第3页
第3页 / 共30页
基于ARM的嵌入式Linux内核的研究与移植毕业论文.doc_第4页
第4页 / 共30页
基于ARM的嵌入式Linux内核的研究与移植毕业论文.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《基于ARM的嵌入式Linux内核的研究与移植毕业论文.doc》由会员分享,可在线阅读,更多相关《基于ARM的嵌入式Linux内核的研究与移植毕业论文.doc(30页珍藏版)》请在三一办公上搜索。

1、基于ARM的嵌入式Linux内核的研究与移植 【摘要】:本文首先介绍了当前嵌入式发展状况,以及一些常用的嵌入式系统。接下来讲述了一些linux系统的知识。在移植前还介绍了我们所使用的开发平台以及与移植相关的一些硬件参数。就如PC机一样,系统的启动需要启动程序的引导,嵌入式系统也是一样。在本文我们使用的引导程序是u-boot,所以我们对u-boot的启动过程进行了讲解,并根据我们的开发板进行修改编译,最后可成功引导我们的开发板。接下来再对我们的内核进行相应的修改,主要参考的还是我们的硬件平台,修改的地方有时钟、flash驱动等,编译好后产生bzImage内核文件。要想一个linux系统能正确运行

2、我们还需要文件系统的支持,本文使用的文件系统是yaffs,在制作文件系统时我们还要编译busybox产生linux的常用命令集。我们移植的u-boot、内核文件、文件系统构成了嵌入式linux操作系统,现在我们就可以在系统上面进行驱动的开发和应用程序的开发。【关键词】:嵌入式、U-boot、S3C2440、Linux内核移植。Abstract: The text firstly introduces the current embedded development situation, and some common embedded system. The next I will say s

3、omething about the Linux system. Before pretransplant ,the text also introduces what we use development platform and some hardware with transplant related parameters. Just like the personal computer,if you want to startup System ,start programs is needed to guidance,so as the embedded system.In this

4、 text we use the guidance is u-boot.So we have a detailed interpretation to the process of starting the u-boot,and according to our development board to modified compilation,Finally can be successful lead our development board. Next, well do some modification to the kernel corresponding, refering to

5、 our hardware platform,clock, flash drive, etc have to be modified, after compiled, it will produce bzImage kernel files.If you want a Linux system can operation correctly, we still need file system to support, The text uses yaffs as the file system, while making the file system, we will compile bus

6、ybox to produce common Linux command set. Transplanted u-boot,the kernel file,file system, which we transplanted constitute the embedded Linux operating system,Now we can do the development of the drive and application development in system.Key words: Embedded、U-Boot、S3C2440、Linux kernel porting.引言嵌

7、入式系统已经融合到各行各业、各个领域,在电子产品中无处不在。小到手机、PDA、游戏机、冰箱、电视机常用家用电器,大到汽车、轮船、火车、飞机等,处处都有它的声影,所以嵌入式系统的应用领域相当广泛,前景无比美好。同传统的通用计算机不同,嵌入式系统面向特定应用领域,根据应用需求定制开发。一般来讲,可以把由微处理器加上必要的外围电路,再根据需求对微处理器进行编程,这样组成的一个能够实现一定功能的完整系统叫做嵌入式系统。嵌入式系统式硬件与软件的统一,嵌入式系统中使用的微处理器叫嵌入式处理器。嵌入式处理器种类繁多,本文中使用的三星公司基于ARM的处理器S3C2440。操作系统(Operating Syst

8、em,OS)是一种特殊的系统软件,它把底层的硬件细节封装起来,为运行在它上面的软件提供一个抽象的编程接口,同时它又是系统资源的管理者,管理着系统当中的各种软硬件资源,保证了系统能够可靠地高速运行。而嵌入式操作系统(Embedded Operating System,EOS)指的是在嵌入式系统中使用的操作系统。常见的嵌入式操作系统有:VxWorks、Palm OS、Windows CE、uC/OS-II、嵌入式Linux等。本文中将使用嵌入式Linux,它最大的亮点在于源代码公开并且遵循GPL协议。此文研究Linux2.6内核的移植,并在此基础上加上启动代码uboot和yaffs文件系统,实现一

9、个完整的嵌入式Linux操作系统,并运行在SamsungS3C2440开发板上。第1章 Linux概述第1.1节 Linux的诞生和发展1.1.1. Linux操作系统的诞生Linux操作系统诞生于1991年的10月5日(这是Linus第一次正式向外公布的时间),它是UNIX操作系统的一种克隆系统。以后借助于Internet网络,经过世界各地地计算机爱好者的共同努力,现已经成为当今世界上使用的最多的一种UNIX类操作系统,并且使用的人数还在迅猛增长。1.1.2. Linux操作系统的发展l UNIX操作系统l MINIX操作系统l GNU计划l POSIX标准l Internet网络上面这5点

10、是Linux诞生、发展和成长过程的五大支柱。UNIX最初的开放源代码版本为linux提供了实现的基本原理和算法、GNU计划为linux系统提供了丰富且免费的各种使用工具、POSIX标准的出现为linux提供了实现与标准兼容系统的参考指南、MINIX操作系统为linux的诞生起到了不可忽缺的参考、Internet是linux成长和壮大的必要环境第1.2节 Linux的使用1.2.1. 文件在Linux系统中“一切都是文件”,普通文件、设备文件、管道等都是以目录的形式存在的。一切的操作都是以文件为基础的。这是Linux得一大特色,也是Linux设计上的精巧之处。在Linux系统中,以“.“开始的文

11、件是隐藏文件。1.2.2. 目录目录是一种具有目录属性的文件。Linux的目录为树形结构,且存在唯一的根目录“/“。根目录结构和意义入下表:表1- 1 跟目录结构及意义路 径意 义/bin存放着系统常用的命令。/etc存放各种配置文件/dev存放着设备文件/boot目录中放置了开机会使用到的文件/home用户的主目录/lib系统最基本的动态链接共享库/mnt用来挂载别的文件系统/proc虚拟目录,是内存的映射,可以直接从这个目录中获取系统的信息,由系统自动生成/sbin存放着系统管理程序,只有root才能利用/usr用户程序和库所在的目录/var存放一些不断扩充的东西,如系统日记/lost+f

12、ound当文件系统发生错误时,将一些丢失的片段放置到这个目录下1.2.3. shellshell作为Linux系统的外壳,为用户提供使用操作系统的接口。用户在提示符下输入的命令都由shell先解释让后传给Linux核心。对用户而言,不必关心一个命令式建立在shell内部还是一个单独的程序。同时shell本身就是一个解释性的程序设计语言。Linux中有多种shell,其中默认使用的是bash,而在嵌入式Linux中则常使用busybox。在命令行执行一个程序时,实际上是通过shell来找到这个命令,并执行的。除了shell自带的一些命令,其他的命令就是普通的程序。第2章 开发环境第2.1节 硬件

13、平台(开发板)2.1.1. 开发板总体结构本文研究的课题使用的是天嵌科技TQ2440开发板。开发板采用Samsung公司ARM9芯片S3C2440作为CPU,采用64MB的SDRAM和256MB Nand Flash+2MB Nor Flash的双Flash启动。目标板的总体结构如下图所示:图2- 1 目标板的总体结构2.1.2. 核心板介绍 插针式核心板:采用六层军工布线设计,较强的抗震性能,运行程序稳定高效; CPU: 采用三星公司的ARM9芯片的S3C2440AL作为CPU,稳定运行在400Mhz; SDRAM: 64MB的SDRAM芯片; FLASH: 256MB Nand Flash

14、+ 2MB Nor Flash 双Flash启动; 电源:专业电源芯片提供1.25V给CPU供电,3.3V给核心板供电; Bootloader:采用功能强大的U-BOOT, 支持一键USB下载、TFTP网线下载; 扩展性:提供多达192脚的扩展接 口,几乎引出了S3C2440的全部资源,接口均采用2.0间距, 方便客户二次开发时购买底板用接口; 核心板尺寸: 37mm78mm。2.1.3. 底板介绍 串口: 板载一个五线异步串行口, 波特率最高115200bps,另外扩展出两个串口, Wince和linux下均提供三串口源码; 网络接口:板载100M 网络接口, DM9000网卡, 带联接和传

15、输指示灯; USB接口:板载USB1. 1 HOST接口,板载USB1. 1 Device接口; SD/MMC接口:板载一个SD卡接口, 可接32GB SD卡; 外扩IDE接口:集成在底板的总线接口里面,提供linux驱动; 音频接口:板载IIS接口芯片UDA1341, 一路立体声音频输出接口可接耳机或音箱,可录音; LCD和触摸屏接口: 板上集成了4线电阻式触摸屏接口的相关电路;分别有40pin 和50pin LCD接口引出了LCD控制器的全部信号;支持黑白、4级灰度、16级灰度、256色、4096色STN液晶屏, 屏幕分辨率可达到1024*768像素;可接7寸10寸液晶屏;接配套的VGA转

16、接板,实现VGA输出; 时钟源: 板载RTC内部实时时钟(带有后备锂电池); 调试及下载接口: 板载一个10pinJTAG接口,支持ADS1.2等单步调试,有配套ADS调试手册; 复位电路: 板载一个复位按键, 采用专用复位芯片进行复位,稳定可靠; 电源接口: 5V电源供电, 带电源开关指示灯; AD功能: 板载可调电阻接到ADC引脚上用来验证模数转换; IIC功能: 板载Atmel24C02芯片验证IIC功能; PWM功能 : 板载测试PWM功能的蜂鸣器; Camera接口:板载摄像头接口,可接OV9650,实现网络监控,linux,Wince下均有驱动支 持; 用户按键: 板载四个用户按键

17、;有驱动支持,使用外部中断; 板载外扩接口:多达30多位GPIO, 多达10多路中断,16路数据线, 25路地址线,片选信号等; 底板尺寸:105mm128mm。2.1.4. LCD触摸屏的介绍 尺寸:3.5寸 显示面积:70.08(H)mm52.56(V)mm 显示颜色:16.7兆色 (24位) 分辨率:320RGB240(横屏) LED 背光 对比度:300:1 亮度:320cd/m2(流明) 使用温度:-20到60 触摸屏使用次数:超过100,000次 响应时 间:10ms 驱动板自带两个接口:40pin的0.5间距的FPC接口和50pin的2.0间距的插针接口; 提供5V和3.3V两种

18、电压供电,缺省状态是3.3V供电. 提供接口部分的原理图,方便您的使用. LCD驱动板的尺 寸:103mm83mm第2.2节 交叉开发环境2.2.1. 交叉开发环境的介绍嵌入式系统是专用的计算机系统,由于其处理能力和存储能力较弱及特殊的处理器结构,使嵌入式系统中不能安装开发软件。所以,在进行嵌入式开发时,往往采用交叉编译的方式。所谓交叉编译是指在宿主机(host)中编辑和编译程序,并在目标机(target)中运行由主机编译得到的可执行代码。2.2.2. 交叉开发环境的建立1. 在Windows中安装虚拟机,并在虚拟机中安装Ubuntu10.04操作系统2. 在Ubuntu中安装安装交叉编译器a

19、rm-linux-xxx3. Windows中安装一些工具软件,如串口通信,Flash下载的软件等第3章 U-Boot的研究与移植第3.1节 U-Boot概述UBoot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目,从FADSROM、8xxROM 、PPCBOOT逐步发展演化而来,其源码目录、编译形式与Linux内核很相似。事实上,不少UBoot源码就是相应Linux内核源程序的简化, 尤其是一些设备的驱动程序, 从U-Boot源码的注释中能体现这一点。但是U-Boot不仅仅支持嵌入式Linux系统的引导, 当前,它还支持NetBSD。VxWorks、QNX、

20、RTEMS、ARTOS、LynxOS嵌入式操作系统。其目前要支持的目标操作系统包括0P enB S D 、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项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。选择

21、U-Boot的理由:l 开放源码l 支持多种嵌入式操作系统内核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOSl 支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScalel 较高的可靠性和稳定性l 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等l 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等l 较为丰富的开发调试文档与强大的网络技术支持3.1.1. U-Boot的目录结构U-Boot的源代码目录结构十分清晰,主要的目录及结构如表3-1所示。表

22、3- 1 U-Boot的代码结构目 录说 明board目标板相关文件,主要包含SDRAM、Flash驱动common与体系结构无关的文件,实现各种命令的C文件cpu与处理器相关的文件,其中的子目录都是以U-Boot所支持的CPU为名。每个特定的子目录都包括cpu.c、interrupt.c、start.s。其中cpu.c初始化CPU、设置指令cache和数据cache等;interrupt.c设置系统的各种中断和异常;start.s是U-Boot启动时执行的第一个文件,它主要是设置系统堆栈和工作方式docU-Boot的说明文档drivers通用设备的驱动程序,例如各种网卡、串口、Flash等f

23、s支持文件系统的文件include头文件,还有对各种硬件平台支持的汇编文件,系统配置文件和对文件系统支持的文件net与网络有关的代码,BOOTP协议、TFTP协议、RARP协议和NFS文件系统的实现post上电自检文件目录lib_arm与ARM体系结构相关的代码tools创建S-Rrcord格式文件和U-Boot images的工具3.1.2. U-Boot的启动过程U-Boot的启动过程可以分为三个阶段。首先在Flash中运行汇编程序,将Flash中的启动代码部分复制到SDRAM中,同时创造环境准备运行C程序;然后在SDRAM中执行,对硬件进行初始化;最后设置内核参数的标记列表,复制镜像文件

24、,进入内核的入口函数。以本开发板为例来做详细的说明。1. 在Flash中运行CPU入口函数/cpu/arm920t/stsrt.s具体工作包括: 设置异常的入口地址和异常处理函数 配置PLLCON寄存器,确定系统的主频 屏蔽看门狗和中断 初始化I/O寄存器 关闭MMU功能 初始化寄存器空间,设置刷新频率 将U-Boot的内容复制到SDRAM中 设置堆栈的大小2. 跳转到SDRAM中执行/lib_arm/board.c中的start_armboot()函数该函数将完成如下工作: 设置通用端口 设置处理器类型 设置启动参数地址 设置环境变量,初始化环境 设置串口的波特率 设置串口的工作方式 设置I

25、D号、每个分页的起始地址等信息,并将信息送入到相应的结构体中 设置SDRAM的起始地址和大小 将环境变量的地址送到全局变量的结构体中 开启中断 设置延时等待,从而确定目标板是进入下载模式还是装载镜像文件启动内核3. 装载模式下系统将内核从Flash和Ramdisk复制到SDRAM中第3.2节 U-Boot的移植基于此开发板的U-Boot天嵌已有提供,但从移植的角度考虑,主要修改一下文件(以下目录是基于天嵌的U-Boot): 目标板的头文件,位于目录/include/configs/EmbedSky.h 目标板的.c源文件,位于目录/board/EmbedSky/EmbedSky。这是SDRAM

26、的驱动程序 Flash的驱动程序,位于目录/board/EmbedSky/flash.c 串口驱动,位于目录/cpu/arm920t/s3c24x0/serial.c在移植的过程中,有下列一些需要注意的问题:1. U-Boot移植参考板这是进行U-Boot移植首先要明确的。可以根据目标板上CPU、FLASH、SDRAM的情况,以尽可能相一致为原则,先找出一个与所移植目标板为同一个或同一系列处理器的U-Boot支持板为移植参考板。对U-Boot移植新手,建议依照循序渐进的原则,目标板文件名暂时先用移植参考板的名称,在逐步熟悉U-Boot移植基础上,再考虑给目标板重新命名。在实际移植过程中,可用L

27、inux命令查找移植参考板的特定代码,如grep r EmbedSky ./ 可确定出在U-Boot中与EmbedSky板有关的代码,依此对照目标板实际进行屏蔽或修改。同时应不局限于移植参考板中的代码,要广泛借鉴U-Boot中已有的代码更好地实现一些具体的功能。2. U-Boot烧写地址不同目标板,对U-Boot在FLASH中存放地址要求不尽相同。事实上,这是由处理器中断复位向量来决定的。也就是说,U-Boot烧写具体位置是由硬件决定的,而不是程序设计来选择的。程序中相应U-Boot起始地址必须与硬件所确定的硬件复位向量相吻合。3. CPU寄存器参数设置根据处理器系列、类型不同,寄存器名称与作

28、用有一定差别。必须根据目标板的实际,进行合理配置。一个较为可行和有效的方法,就是借鉴参考移植板的配置,再根据目标板实际,进行合理修改。这是一个较费功夫和考验耐力的过程,需要仔细对照处理器各寄存器定义、参考设置、目标板实际作出选择并不断测试。4. 串口调试能从串口输出信息,即使是乱码,也可以说U-Boot移植取得了实质性突破。串口是否有输出,除了与串口驱动相关外,还与FLASH相关的寄存器设置有关。因为U-Boot是从FLASH中被引导启动的,如果FLASH设置不正确,U-Boot代码读取和执行就会出现一些问题。因此,还需要就FLASH的相关寄存器设置进行一些参数调试。同时,要注意串口收发芯片相

29、关引脚工作波形。依据笔者调试情况,如果串口无输出或出现乱码,一种可能就是该芯片损坏或工作不正常。5. 与启动 FLASH相关的寄存器BR0、OR0的参数设置应根据目标板FLASH的数据手册与BR0和OR0的相关位含义进行合理设置。这不仅关系到FLASH能否正常工作,而且与串口调试有直接的关联。6. 关于CPLD电路目标板上是否有CPLD电路丝毫不会影响U-Boot的移植与嵌入式操作系统的正常运行。事实上,CPLD电路是一个集中将板上电路的一些逻辑关系可编程设置的一种实现方法。其本身所起的作用就是实现一些目标板所需的脉冲信号和电路逻辑,其功能完全可以用一些逻辑电路与CPU口线来实现。7. SDR

30、AM的驱动串口能输出以后,U-Boot移植是否顺利基本取决于SDRAM的驱动是否正确。与串口调试相比,这部分工作更为核心,难度更大。MPC8xx目标板SDRAM驱动涉及三部分。一是相关寄存器的设置;二是UPM表;三是SDRAM上电初始化过程。任何一部分有问题,都会影响U-Boot、嵌入式操作系统甚至应用程序的稳定、可靠运行。所以说,SDRAM的驱动不仅关系到U-Boot本身能否正常运行,而且还与后续部分相关,是相当关键的部分。8. 补充功能的添加在获得一个能工作的U-Boot后,就可以根据目标板和实际开发需要,添加一些其它功能支持。如以太网、LCD、NVRAM等。与串口和SDRAM调试相比,在

31、已有基础之上,这些功能添加还是较为容易的。大多只是在参考现有源码的基础上,进行一些修改和配置。另外,如果在自主设计的主板上移植U-Boot,那么除了考虑上述软件因素以外,还需要排查目标板硬件可能存在的问题。如原理设计、PCB布线、元件好坏。在移植过程中,敏锐判断出故障态是硬件还是软件问题,往往是关系到项目进度甚至移植成败的关键,相应难度会增加许多。第4章 Linux内核的研究与移植Linux内核移植是开发适合于自己特定硬件平台系统的重要部分,只有在bootloader引导内核启动之后,才能运行自己的应用程序,所以掌握内核移植技术是系统开发的重要基础。第4.1节 Linux内核结构Linux内核

32、主要由5个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。 进程调度模块(SCHED)用来负责控制进程对CPU资源的使用。所采取的调度策略是各进程能公平合理地访问CPU,同时保证内核能及时地执行硬件操作。Linux使用了简单的基于优先级的进程调度算法选择新的进程。 内存管理模块(MM)用于确保所有进程能够安全地共享机器主内存,同时,内存管理模块还支持虚拟内存管理方式,使得Linux支持进程使用比实际内存空间更多的内存容量。并可以利用文件系统把暂时不用的内存数据块交换到外部存储设备上去,当需要时再交换回来。 内存管理从逻辑上分为硬件无关部分和硬件有关部分。硬件无关部分提供了进

33、程的映射和逻辑内存的对换;硬件有关部分为内存管理硬件提供了虚拟接口。 文件系统模块(VFS)用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其他操作系统兼容的多种文件系统格式。 进程间通信模块子系统(IPC)用于支持多种进程间的信息交换方式。 网络接口模块(NET)提供对多种网络通信标准的访问并支持许多网络硬件。 网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议;网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。图4- 1 Linux内核

34、系统模块结构及相互依赖关系由上图可以看出,所有的模块都与进程调度模块存在依赖关系。因为它们都需要依靠进程调度程序来挂起(暂停)或重新运行它们的进程。通常,一个模块会在等待硬件操作期间被挂起,而在操作完成后才可继续运行。例如,当一个进程试图将一数据块写到软盘上去时,软盘驱动程序就可能在启动软盘旋转期间将该进程置为挂起等待状态,而在软盘进入到正常转速后再使得该进程能继续运行。另外3个模块也是由于类似的原因而与进程调度模块存在依赖关系。其他几个模块的依赖关系有些不太明显,太同样也很重要。进程调度子系统需要使用内存管理来调整一特定进程所使用的物理内存空间。进程通信子系统则需要依靠内存管理器来支持共享内

35、存通信机制。这种通信机制允许两个进程访问内存的同一区域以进行进程间信息的交换。虚拟文件系统也会使用网络接口来支持网络文件系统(NFS),同样也能使用内存管理子系统提供内存虚拟盘(ramdisk)设备。而内存管理子系统也会使用文件系统来支持内存数据块的交换操作。除了这些依赖关系外,内核中的所有子系统还要依赖于一些共同的资源。这些资源包括所有子系统都会调用的内存分配和回收函数、打印警告或出错信息函数以及一些系统调试函数。从单内核的角度可以把内核结构描述成如图4-2所示的结构框图。图4- 2 Linux内核结构框图第4.2节 Linux内核的编译Linux源代码只有经过编译之后,才能在开发板上运行,

36、下面详述具体内容。4.2.1. 编译准备从http:/www.kernel.org/pub/linux/kernel/v2.6/网址中下载linux-2.6.30.4.tar.bz2内核到到工作目录中进行解压,进入解压后的工作目录。1. 用vi打开目录下的Makefile,指明交叉编译器#vi Makefile2. 在193行“ARCH ?= (SUBARCH)”和194行“CROSS_COMPILE ?=”将其改为:ARCH=armCROSS_COMPILE=arm-linux-3. 设置PATH环境变量,使其可以找到交叉编译工具链(我的交叉编译工具在/kernel/embedsky/opt

37、/EmbedSky/4.3.3/bin下)export PATH=$PATH:/kernel/embedsky/opt/EmbedSky/4.3.3/bin4. 修改平台的时钟频率,以满足开发板的工作频率。修改文件arch/arm/mach-s3c2440/math-smdk2440.c的163行,把16934400改为12000000,因为开发板使用的就是12MHz的外部时钟源输入。5. TQ2440开发板使用的uboot中设定了机器码为168,所以内核中需要修改机器码,否侧会出现不能启动的情况。机器码保存在内核源代码的“arch/arm/tools/mach-types”文件中,在379行

38、,把原来的362改为168保存即可。4.2.2. Nand Flash驱动移植进行Nand Flash的移植,其实Linux里面已经做好了Nand Flash的驱动,我们只需要就行修改就可以进行使用了。1. 修改内核源码“arch/arm/plat-s3c24xx/common-smdk.c”文件,在文件的109行有一个结构体名为:smdk_default_nand_part,记载了Nand Flash的分区信息,将其修改为如下所表示:static struct mtd_partition smdk_default_nand_part=0 = .name=“uboot”,.offset=0x0

39、0000000,.size=0x00040000,1 = .name=“kernel”,.offset=0x00200000,.size=0x00200000,2 = .name=“yaffs2”,.offset=0x00400000,.size=0x0FB80000,;2. 修改Nand Flash的读写匹配时间,修改common-smdk.c文件修改前165行的smdk_nand_info结构体,修改内容如下:(这部分不做也可)static struct s3c2410_platform_nand smdk_nand_info = .tacls= 10,.twrph0= 25,.twrph

40、1= 10,.nr_sets= ARRAY_SIZE(smdk_nand_sets),.sets= smdk_nand_sets,;3. 修改内核源代码“drivers/mtd/nand/Kconfig”文件,添加对各种容量Nand Flash的支持,在165行处添加如下内容:choiceprompt“Nand Flash Capacity select”depends on MTDhelpEmbedSky Board Nand Flash Capacity selectconfig EmbedSky_more_than_256MB_NANDboolean“256MB1G Nand for B

41、oard”depends on MTDhelpSet 256MB1GB Nand partsendchoice4.2.3. 配置内核Linux内核是一个社区共同开发的作品,具备一个现代操作系统的所有功能,并能对绝大多数硬件提供支持。然而对于具体的开发板来说,大多数功能并不需要,为了尽可能减少编译出来的内核体积,在配置内核时,对需要的功能进行配置和去除不需要的模块是主要内容。1. 运行 make menuconfig,进入配置菜单界面,如下图所示:图4- 3 配置菜单2. 利用默认配置单做自己的配置单这里推荐的一种做法,就是先调用自带的一个默认配置单,该配置单在内核源代码的“arch/arm/c

42、onfigs/”目录下面,名为:“s3c2410_defconfig”,改配置文件里面选择了几乎所有的和s3c24xx系列CPU相关的配置选项,我们完全可以在该配置单的基础上进行配置。在配置菜单中选择选项:“Load an Alternate Configuration File”,然后调用刚刚说到的那个配置文件,如图4-4::图4- 4然后进入到如图4-5所示的界面,输入刚刚提到的路径和配置文件名称回车即可:图4- 5 加载配置文件然后返回到配置界面,进入到“System Type”选项下的配置单,如图4-6:图4- 6 system type选项卡然后对平台进行配置,如下所示:System

43、 type -S3C2410 Machines -* SMDK 2410/A9M410 IPAQ H1940 Acer N30 family Simtec Electronics BAST (EB2410ITX) NexVision OTOM Board AML M5900 Series BAST PC104 IRQ support TCT Hammer Board待添加的隐藏文字内容2 Thorcom VR1000 QT2410S3C2412 Machines - SMDK2413 SMDK2412 VMSTMSS3C2440 Machines - Simtec Electronics AN

44、UBIS Simtec IM2440D20 (OSIRIS) module HP iPAQ rx3715* SMDK2440 NexVision NEXCODER 2440 Light Board* SMDK2440 with S3C2440 CPU moduleS3C2442 Machines - SMDK2440 with S3C2442 CPU moduleS3C2443 Machines - SMDK2443配置完毕这个地方后,退回到最初的配置单。再在配置单中添加上对Nand Flash支持的配置选项,配置如下:Device Drivers - Memory Technology De

45、vice (MTD) support -* MTD partitioning support RedBoot partition table parsing Command line partitiontable parsing Direct char device access to MTD devices-*- Common interface to block layer for MTD devices Caching block device access to MTD devices NAND Device Support -* NAND Flash support for S3C2

46、410/S3C2440 SoC* S3C2410 NAND Hardware ECCNand Flash Capacity select (256MB1GB Nand for Board) -(X) 256MB1GB Nand for EmbedSky Board配置好后,选择选项“Save an Alternate Configuration File”将其保存为:“.config”文件,因为编译系统时会调用该文件,如图4-7、4-8所示:图4- 7图4- 8保存为“.config”文件后,退出配置单。4.2.4. 编译镜像然后输入:#make zImage,就可以进行编译了,编译完毕后,会在内核源码的“arch/arm/boot/”目录下面生成名为“zImage”的 ,不过在此之前还需要对相关文件系统的支持,请见下章。第5章 文件系统的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号