版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录第1章 EL-ARM-860实验系统的资源介绍 (1第2章基于linux操作系统的ARM系统实验 (26实验一 Linux的实验环境的搭建 (26实验二 BootLoader引导程序 (31实验三 linux的移植、内核、文件系统的生成与下载 (38实验四 linux驱动程序的编写 (49实验五 linux应用程序的编写 (54实验六基于linux的键盘驱动程序的编写 (56实验七基于linux的基本绘图应用程序的编写 (59实验八基于linux的键盘应用程序的编写 (62实验九基于linux的跑马灯应用程序的编写 (65实验十 USB播放mp3的实验 (68实验十一 MMC/SD卡实验
2、(70实验十二 TV OUT实验 (71第1章 EL-ARM-860实验系统的资源介绍ARM实验箱硬件资源概述EL-ARM-860型教学实验系统属于一种综合的教学实验系统,该系统采用了目前在国内普遍认同的CPU:Omap35xx,32位微处理器,实现了多模块的应用实验。它是集学习、应用编程、开发研究于一体ARM实验教学系统。用户可根据自己的需求选用不同类型的CPU 适配板,兼容ARM7与ARM9及更高CPU,而不需要改变任何配置,同时,实验系统上的Tech_V 总线能够拓展较为丰富的实验接口板。用户在了解Tech_V标准后,更能研发出不同用途的实验接口板。除此之外,在实验板上有丰富的外围扩展资
3、源(数字、模拟信号发生器,数字量IO输入输出,语音编解码、人机接口等单元,可以完成ARM的基础实验、算法实验和数据通信实验、以太网实验。 图1-1-1 EL-ARM-860实验教学系统的底箱功能框图1.1 实验系统的硬件资源总览CPU单元:Omap35xx(ARM:V7 Cortex-A8;DSP:TMS320C64x+ 430-MHz;动态存储器:32位宽度DDR:128MB;海量存储器:NANDFLASH:256MB; USB单元: 1个主/从USB接口;网络单元:标准RJ-45 10M/100M以太网接口,芯片LAN9115;音频:1路输入,1路输出;视频:LCD输出,TV输出;8个输入
4、按键;触摸屏输入; 3.3V JTAG仿真接口;主从USB接口;SD/MMC卡接口;UART单元: 2个,最高通信波特率115200bps;语音单元: IIS格式,芯片UDA1341TS,采样频率最高48KHz;LCD单元: 8.4吋,65536色,640X480像素;触摸屏单元:四线电阻屏,640X480,8.4吋;SD卡单元:通信频率最高25MHz,兼容MMC卡;键盘单元: 4X4键盘,带8位LED数码管;芯片HD7279A;数字输入输出单元:8个拔码开关及8个LED发光管;A/D转换单元:芯片自带的8路10位A/D,满量程2.5V;信号源单元:方波输出;标准键盘及PS2鼠标接口;达盛公司
5、的Tech_V总线接口;达盛公司的E_Lab总线接口;1个设备接口,芯片PDIUSBD12;CPLD单元;电源模块单元。注:带的功能集成在Omap35xx CPU板上。1.2 omap35xx cpu板介绍说明核心板的资源介绍1.核心板的硬件资源(V7 Cortex-A8核存储器:64K内部SRAM;32位宽度DDR,容量为128MB;256MB的NAND FLASH;功能扩展:扩展了USB物理层接口,支持USB主、从工作模式;外扩语音模块,一路语音输入,一路语音输出;电源:独立的电源解决方案,外部只需要输入3.64.5V直流电。板卡原理框图 Omap35xx CPU板原理框图2.omap35
6、xx cpu板扩展接口介绍本设计方案采用的是“CPU板+功能板”的设计。为了增强设计的可扩展性,在CPU 小板上,尽可能的把信号引到了连接座上。这样在用户进行再次开发时,便可以根据自己需要进行适当的扩展。CPU板和外部的连接采用了两个100引脚的连接座(如下所示,具体的可以参考原理图部分。 注意:对于GPMC CS0CS7起地址段范围为0x00000000 0x3FFFFFFF,而且每一个片选区间CSx(CS0CS7的地址段可以单独进行配置,具体配置,请参照OMAP35x的TechnicalReference Manual的Memory Subsystem的GMPC部分和样例程序分配方法(例如
7、键盘程序。Omap35xx可以很多种方式进行启动,这里只介绍本板卡应用过程中所用到的启动设置(如下表所示: 说明:UART3启动:该方式一般只在FLASH中没有烧写过u-boot时使用。通过设置为UART3启动,通过PC机把u-boot下载到目标板的DDR中,然后再利用u-boot的tftp功能把需要烧写的文件下载到DDR并烧写到FLASH中;FLASH启动:大部分情况下板子设置在此模式下。在FLASH中已经烧写了u-boot后,如果需要再次更新FLASH中的内容,在u-boot起来后通过tftp功能更新即可;三、omap35xx 大板介绍说明1.omap35xx 大板原理Omap35xx大板
8、是为了配合Omap35xxCPU板与外设备的接口而设计的。其功能包括:添加了各种接口端子(LCD、USB、UART、语音、JTAG等,实现了电平匹配,扩展了输入按键,触摸屏接口,增加了网络接口。下图所示,为板子器件分布示意图; 2、复位按键RK1、RK2、RK3RK1:系统总电源复位开关;RK2:系统复位开关;RK3:CPU电源复位开关;为了简化,设计中直接使用GPIO口来读取按键状态(具体对应关系可查看原理图。在驱动中,K1K8对应的键值为18; 4.1 USB端口介绍USB的功能模块全部集成在omap35xx小板上,大板只是增加了一个USB-A接口端子, USB主从工作模式由大板上的R76
9、和R77来控制。 说明:需要工作在主模式:R76不焊;R77=1K需要工作在从模式:R76=1K;R77不焊4.2 MMC/SD端口介绍 平时MMC/SD卡模块处于关闭状态,当有卡插入时系统会自动检测,然后给模块供电,模块供电后,板子上的LED2会点亮。4.3 语音端口介绍 语音模块的功能在omap35xx小板上,大板上只是把信号引到了端子上。其中HEADOUT1为音频输出,LINE1为音频输入。4.4 UART端口介绍omap35xx大板上用mini-USB端子引出了两个UART接口,其中P9端子对应omap35xx的UART3,P3端子对应omap35xx的UART1。 说明:Omap35
10、xx可以从UART3启动。如果需要利用此启动方式把把u-boot下载到目标板,需要使用公司提供的串口线把P9(UART3和PC机串口连接起来。UART1一般在调试中使用,调试时使用一根公司提供的串口线连接P3(UART1和PC机。4.5 LCD和触摸屏接口介绍在大板上,H1(LCD连线座和P8引线座均引出了LCD和触摸屏的信号线,H1和P8用于满足不同的场合。LCD数据线接口格式为RGB565,使用16bit数据深度。触摸屏使用了TSC2046作为AD转换控制芯片,它具备高达12位的转换精度。 大板使用了LAN9115作为以太网的接口芯片,它兼容10M和100M以太网传输。Omap3530通过
11、EMIF总线接口和LAN9115进行连接,以中断的方式来响应数据传输。8核心CPU板上的外接接口单元在CPU板上有INTERFACE A(对应Omap3530-P7、INTERFACE B(对应Omap3530-P6、INTERFACE C(对应Omap3530-P8,3个外扩接口单元,现对这三个接口的引脚加以说明。INTERFACE B:INTERFACE B扩展信号是地址、数据总线和读写、片选信号:见表1-7 INTERFACE C用来扩展INTERFACE A、INTERFACE B没有扩展的CPU信号,如AD输入、液晶、串口等和扩展子板间的通讯信号。见表1-9。 表1-91.3 实验箱
12、底板的资源介绍1. 概述实验箱底板上的资源丰富,具体的实验单元有:LCD模块,触摸屏模块,语音单元模块,串口2模块,USB设备模块,电源模块,数字输入输出模块,键盘模块,CPLD烧写模块,键盘数码管模块,SD(MMC卡模块,A/D转换模块,信号源发生器模块。以及PS2鼠标键盘接口, Tech_V总线接口,E_LAB总线接口等等。实验箱上的底板详细具体资源见表1-10。 表1-102. 底板资源的具体介绍1模拟输入输出接口单元8bit的数字量输入(由八个拔码开关产生或插孔,通过SI0-SI7跳线位控制连接至74LS244缓冲;8bit的数字量输出通过74LS273锁存输出(八个LED灯显示及插孔
13、。输入开关拔至L处,表示输入一个2进制的“0”值,至H处,表示输入一个2进制的“1”值, I0I7为244输入口,O0O7为273输出口。2键盘数码管模块键盘接口是由芯片HD7279A控制的,HD7279A是一片具有串行接口的,可同时驱动8位共阴式数码管或(64只独立LED的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示,键盘接口的全部功能。HD7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式。此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。HD7279A具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接
14、口。在该实验系统中,仅提供了16个键。3USB设备模块USB设备模块,采用了飞利浦的USB设备控制芯片PDIUSBD12,该芯片遵从USB1.1规范,最高通信率12Mbps,该单元位于实验箱的左下角。D3为通信状态指示灯。使用外部中断4来响应中断请求。4串口1模块串口1模块,采用了美信的MAX3232CPE芯片,通过它可以把PC的电信号转换成实验箱可以使用的信号,它的最高串行通信波特率为115200bps.5LCD模块本实验系统仅选用了LCD液晶显示屏,LCD的控制器使用S3C2410的内部集成的控制器,LCD屏选用的是8.4吋,6400X480像素,65536色的彩屏。电源操作范围宽(2.7
15、V to 5.5V;低功耗设计可满足产品的省电要求。其中,可调变位器VR2用于调节LCD屏色彩的对比度,产品出厂时,已设定成在室温下较好的对比度,当因温度低或高等因素显示不正常时,可适当调节VR2到合适的色彩。一般请不要调整。“VR2”: 表1-13“LCD_ON/OFF”按键,控制着LCD屏的电源,是电源的开关。10信号源单元信号源单元使用TI公司的TLC2272,是双通道运算放大器,可以产生方波。11PS2单元PS2单元中S5为复位键,KEYBOARD接口为键盘接口,MOUSE为鼠标接口。D1为数据传输指示灯。控制芯片为AT2051。12CPLD单元由于实验箱上的资源众多,几乎每一个设备资
16、源都要使用片选信号或中断信号或一些串口的信号,以及一些寄存器的地址等等,这样一来,OMAP3530的I/O资源是不能满足的,因此该实验箱通过加入了一片CPLD芯片,用来完成各资源所需的地址译码,片选信号,以及一些高低电平的模拟。CPLD单元使用OMAP3530的片选是B_CS6(GPMC,地址是0x2C0000000x2D000000;由于底板上大多的资源都通过CPLD的地址译码,进行片选电平的产生,以及模拟高低电平的产生,所以,应给CPLD的地址里写入相应的数据以产生相应的信号。表1-21列出了底板中所需信号的地址。#define clrcs1 (*(volatile unsigned *0
17、x2C000000 = 0x01;#define setcs1 (*(volatile unsigned *0x2C000004 = 0x02;利用宏定义来代替置高、置低;给相应的地址里写1,表示该CPLD的相应引脚输出低电平,给相应的地址里写2,表示该CPLD的相应引脚输出高电平。有的地址需要写入8位数据。 具体的应用,请详见源码程序。12其它接口说明电源单元:为系统提供+5V、+12V、-12V、+3.3V电源,其中 表1-22。 表1-23 综上所述,本章介绍了该系统的硬件资源,看完本章内容,应该对实验系统有一个基本的了解,在后面的几章中将会结合光盘资料给出的实验程序详细介绍每个单元在实
18、验中的具体应用。第2章基于linux操作系统的ARM系统实验实验一 Linux的实验环境的搭建一、实验目的1. 搭建linux操作系统实验所需的实验环境构件2.了解 linux的组成,学会编译内核二、实验内容1. 安装Linux发行版为Red Hat Enterprise Linux 5操作系统3.学习linux内核组成,编译过程三、实验设备1. PentiumII以上的PC机, EL-ARM860实验箱,Linux发行版为Red Hat EnterpriseLinux 5操作系统四、实验步骤1.正确安装Linux发行版为Red Hat Enterprise Linux 5操作系统。(已安装,
19、可跳过此步2.当安装完linux操作系统后,接下来要安装交叉编译器(arm-2007q3-51-arm-none-linux-gnueabi-i686.tar.bz。启动主机,必须以root用户名登录,在终端下,进入这个编译器相应的目录,执行命令C /usr/local/arm等待系统安装完成,将会在根目录下的/usr/local/arm文件夹内生成一个arm-2007q3文件夹,我们所需的交叉编译库就在该目录下。所以,所需的交叉编译环境就搭建好了。添加环境变量方法:kwrite /root/.bashrcexport PATH=/usr/local/arm/arm-2007q3/bin:$P
20、ATH 保存后,下次启动就可以直接用这个编译器,而不需要输入其绝对路径。3.由于linux系统在编译驱动程序时,可以用模块的形式来动态加载,这样给实验、调试带来极大的便利,通常的做法是:把编译好的动态模块和应用程序放在主机上的一个共享文件夹内,启动主机的nfs网络文件系统服务,关闭系统的防火墙服务(如果系统安装了该项,用交叉以太网线把主机和实验系统连接。在终端下启动minicom,在实验系统起来之后,利用ifconfig eth0 xxx.xxx.xxx.xxx命令改变实验系统的IP地址,让该地址的前三段和主机的前三段一致,最后的一段,可以选择和主机不重复的小于255的任意值。之后把主机上的共
21、享文件夹挂载到实验系统上的一个目录上。通过相应的命令进行实验或调试。4.配置NFS网络文件系统,这里介绍一种直接简单的方法:首先在LINUX 主机的终端上执行setup,弹出菜单界面后,选中: Firewall configuration,回车,进入系统服务选项菜单,选择NO FIREWALL关闭防火墙(如果安装了防火墙。然后退出。但是,setup里面会照样显示防火墙设置是HIGH的,这个可以不必理会。之后选中: System services,回车,进入系统服务选项菜单,在其中选中 *nfs ,然后按F12键退出,再选择方向键,退出setup 界面,返回到命令提示符下。利用编辑器打开 /et
22、c/exports文件,将这个默认的空文件修改为只有如下一行内容:(注意中间有空格/ (rw/home/nfs (rw然后,保存退出,之后改变目录到/etc/rc.d/init.d/下,执行如下命令: ./nfs start终端内输出:Starting NFS services: 确定 Starting NFS quotas: 确定Starting NFS daemon: 确定Starting NFS mountd: 确定这样就一切OK了!主机linux下的NFS启动起来。5.用交叉网线把主机和实验系统连接。在终端下输入minicom -s,配置minicom为波特率为115200,无奇偶校验
23、, 8bit。之后,在minicom下,给系统上电,系统正常起来后,利用ifconfig eth0 xxx.xxx.xxx.xxx来改变实验系统的IP 地址,让该地址的前三段和主机的前三段一致,最后的一段,可以选择和主机不重复的小于255的任意值。例如,主机是,则实验系统配置为ifconfig eth0 ,之后,利用ping命令,在实验系统上ping,看看实验系统能否和主机连上。当连通后,利用mount命令,挂载主机的nfs系统下的共享目录。要mount成功,首先,利用命令chmod 777 /home/nfs 改变/home/
24、nfs文件夹的属性,让其变为可读可写,如果/home目录下没有nfs文件夹,建议创建此文件夹,以后需要挂载的用于调试的驱动模块以及应用程序均放在该文件夹内。之后,在终端中,输入mount o nolock :/home/nfs /tmp回车,即可完成把主机上的/home/nfs下的文件挂载到实验系统的/tmp目录下。当选择采用驱动模块和应用程序利用nfs网络文件系统异地调试时,则不需要重新编译内核,仅需要使用交叉编译器编译驱动模块和应用程序,之后利用mount命令把它们所在的文件目录加载到文件系统中。然后使用相关命令进行对驱动模块的安装,调试或卸载。当需要把驱动模块编译进
25、内核,则应在终端的内核目录下输入make menuconfig配置命令,通过选中新加入的驱动模块,保存配置,退出,步骤如下,在系统工具的终端下,切换目录到kernel目录下,然后输入命令:make omap3_techv35xx_defconfigmake clean (该命令用于清除以前构造内核时生成的所有目标文件、模块文件和临时文件make uImage(编译内核中的文件,生成内核若编译通过则在/arch/arm/boot/目录下生成内核文件uImage。具体的驱动编写和加入方法,后面章节有详细介绍。至此,在LINUX 操作系统下,对linux的编译过程应有一个大概的了解。五、实验说明1.
26、 关于linux-码。一般在每个目录下,都有一个.depend 文件和一个 Makefile 文件,这两个文件都是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文件这间的联系和依托关系很有帮助;而且,在有的目录下还有Readme 文件,它是对该目录下的文件的一些说明,同样有利于我们对内核源码的理解。Makefile重构Linux内核可执行代码的make文件Documention有关Linux内核的文档include/asm中。在每个CPU的子目录中,又进一步分为boot、mm、kernel、lib等子目录,分别包含与系统引导、内存管理、系统调用等相关的代码。Drivers设备的驱动程序。放
27、置系统所有的设备驱动程序;每种驱动程序又各占用一个子目录:如,/block 下为块设备驱动程序,比如ide(ide.c。Fs文件系统,每个子目录分别支持一个特定的文件系统,例如fat和 ext2。还有一些共同的源程序则用于虚拟文件系统。Include包含了所有的.h文件。和arch子目录一样,其下都有相应CPU的子目录,而通用的子目录asm则根据系统的配置“符号连接”到具体的CPU的专用子目录上。与平台无关的头文件在include/linux子目录下,与ARM处理器相关的头文件在include/asm-arm子目录下,除此之外,还有通用的子目录linux,net等。Init Linux内核的这
28、个目录包含核心的初始化代码(注意:不是系统的引导代码,包含两个文件main.c和Version.c。Ipc Linux内核的进程间的通信管理Kernel Linux内核的进程管理和进程调度。主要的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件是sched.c;同样,和体系结构相关的代码在arch/*/kernel中;Lib此目录为通用的程序库。Mm Linux内核的内存管理。这个目录包括所有独立于处理器体系结构的内存管理代码,如页式存储管理内存的分配和释放等。Net包含了各种不同网卡和网络的驱动程序。Scripts此目录包含用于配置核心的脚本文件。2. 关于ar
29、m-2007q3交叉编译器包arm-2007q3是一个用于嵌入式Linux内核的交叉编译器包,它其中包括交叉编译、汇编、链接、二进制文件转换工具、所需要的库函数等等。所谓交叉编译器就是一种在Redhat Linux操作系统 + X86的体系结构下,编译经过移植的linux操作系统,生成内核,该内核能够在另外一种软硬件环境下运行的编译工具,如linux操作系统 + ARM的体系结构。交叉编译其实就是在一个平台上生成能够在另一个平台上运行的代码。注意这里的平台,实际上包含两个概念:体系结构(Architecture和操作系统(Operating System。同一个体系结构可以运行不同的操作系统;
30、同样,同一个操作系统也可以在不同的体系结构上运行。如我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。由于ARM硬件上无法安装我们所需的编译器,只好借助于宿主机,在宿主机上对即将运行在目标机上的应用程序进行编译,生成可在目标机上运行的代码格式,这就是安装交叉编译器真正意义所在。3. 实现基于linux的应用系统的开发,建立或拥有一个完备的linux开发环境是十分必要的。基于linux操作系统的应用开发环境一般是由目标系统硬件
31、系统和宿主PC机所构成。目标硬件系统(即本实验箱用于运行操作系统和系统应用软件,而目标硬件系统所用到的操作系统的内核编译、应用程序的开发则需要通过宿主PC机来编译完成。双方之间通过以太网接口建立nfs网络文件系统关系,来调试编译好的驱动或应用程序。当编译、调试通过后,再添加到内核中去。实验二 BootLoader引导程序一、实验目的1. 了解bootloader的作用,掌握bootloader的编程思想二、实验内容1. 学习x-loader 作用和编译过程三、实验设备1. PentiumII以上的PC机, LINUX操作系统四、BOOTLOADER程序说明在嵌入式系统中,BootLoader的
32、作用与PC机上的BIOS类似,通过BootlLoader 可以完成对系统板上的主要部件如CPU、SDRAM、Flash、串行口等进行初始化,也可以下载文件到系统板上,对Flash进行擦除与编程。当运行操作系统时,它会在操作系统内核运行之前运行,通过它,可以分配内存空间的映射,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统准备好正确的环境。通常,Boot Loader 是依赖于硬件而实现的,特别是在嵌入式系统中。因此,在嵌入式系统里建立一个通用的 Boot Loader 几乎是不可能的。但是,仍然可以对 Boot Loader 归纳出一些通用的概念来,以指导用户特定的Boot
33、Loader 设计与实现。因此,正确建立linux的移植的前提条件是具备一个与linux配套、易于使用的Bootloader,它能够能够正确完成硬件系统的初始化和linux 的引导。为能够实现正确引导linux系统的运行,以及当编译完内核后,快速的下载内核和文件系统,uboot通过网口下载内核和文件系统。同时,它也具有功能较为完善的命令集,对系统的软硬件资源进行合理的配置与管理。五、各个引导程序的特征及作用介绍1、x-loader是一级引导程序,系统上电后由CPU内部ROM自动拷贝内部RAM并执行。主要作用为初始化CPU,拷贝U-BOOT到内存中,然后把控制权交给U-BOOT2、U-BOOT是
34、二级引导程序,主要用于和用户进行交互,提供映像更新,引导内核等功能六、boot-loader的编译系统所有组成部分的源码位于光盘的linux/source目录下,用户在进行开发前需要把它们解压到linux系统下tar xvzf x-load.tar.bz2 -C /opttar xvzf u-boot-1.3.3.tar.bz2 -C /optx-load编译步骤:在打开终端,进入/opt/x-load目录;在终端依次输入下面的命令:make omap3techv35xx_configmake等待编译结束,生成x-load.bin;注意:x-load.bin不能够直接烧写到FLASH中,在烧写
35、之前需要进行转化。转化步骤: 打开Linux下的终端,输入下面的指令:执行完后在/opt/linux_host/目录下会生成x-load.bin.ift;说明:x-load.bin.ift为烧写FLASH时需要的x-load文件;u-boot编译编译步骤:在虚拟机里面打开终端,进入/home/u-boot目录;在终端依次输入下面的命令:make omap3techv35xx_configmake等待编译结束七、boot-loader烧写u-boot的烧写方法有好几种,这里介绍我们可能会用到的两种方法。1、从UART3烧写u-boot的方法;2、对已经烧写好了u-boot的目标板进行u-boot
36、更新的方法。1.1 通过UART3烧写u-boot烧写步骤:1 2、使用串口线一头连接板子的P9另一头连接PC机的串口1;另一串口线一头连接板子的P3另一头连接PC机的串口2(串口号可以根据实际情况来更改。使用一根交叉网线连接好板子和PC的网口;3、打开超级终端,选择端口(和板子的P3端口相连的串口端口号,在这里是com2 设置相应的参数如下,点确定打开: 在Transport栏选择使用的串口号(和板子的P9端口相连的串口端口号,在这里是com1在File栏点击open,选择。/UartBootTool/peripheral-boot-images/目录下的u-boot.bin 文件如下图:
37、点击Download按钮弹出下图所示的确定对话框。 5、点击确定按钮,同时板子上电;如果正常,会看到下载进度条在变动。 下载完后回弹出完成对话框。 6、u-boot.bin下载完后会自动启动。在刚才打开的超级终端中可以看到u-boot启动后的信息。 如果是新板子,系统没有配置过,会自动停止在命令行位置(如上图;如果以前烧写过u-boot,由于在FLASH中有配置信息,将会继续启动,需要立即点击键盘使u-boot停下来。八、熟悉u-boot命令setenv ipaddr 57 (板子IP,根据实际情况设setenv serverip 66 (虚拟机的I
38、P,根据实际情况设setenv bootdelay 3setenv ethaddr 00:50:c2:7e:8A:1Dsetenv gatewayip (网关,根据实际情况设setenv bootargs console=ttyS2,115200n8 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs video=omapfb:mode:8inch_LCDsetenv bootcmd nand read.i 80300000 280000 210000; bootm 80300000saveenv (保存设置好的参数实验三 linux
39、的移植、内核、文件系统的生成与下载一、实验目的1. 了解linux移植的基本过程,掌握内核和文件系统的下载方法二、实验内容1. 学习linux移植的基本过程2. 学习内核和文件系统的生成与下载方法三、实验设备1. PentiumII以上的PC机、EL-ARM860实验箱四、linux的移植说明本实验系统运行的linux版本是针对linux-2.6.28进行移植的,它存放在/实验软件/source_sys/目录内。由于移植内核所涉及的内容较多,且也较复杂, 同时,在涉及到的中断切换、内存管理方面的复杂移植,一般也不必太过关心,网络上有专门的非官方组织在完善该事情。我们所做的大多是把该移植好的内核
40、,让它如何在自己的硬件系统上正常的运转起来。因此,我们所做的移植也偏重于应用。图4-3-14.1. 内核的目录结构Linux内核主要由5个子系统组成:进程调度子系统进程间通讯子系统内存管理子系统虚拟文件系统子系统网络接口子系统Linux内核非常庞大,包括驱动程序在内有上百兆。2.4.18内核结构图如图4-3-1。其主要结构目录:/arch子目录包含了所有与硬件体系结构相关的内核移植代码。其中每一个目录都代表一种硬件平台,对于每种平台都应该包括:boot: 包括启动内核所使用的部分或全部平台的相关代码。kernel:包括支持体系结构特有的特征代码lib:包括存放体系结构特有的通用函数的实现代码m
41、m:包括存放体系结构特有的内存管理程序的实现mach-xxx:包括存放该处理器的移植代码/Documentation子目录包含有关内核的许多非常详细的文档。/drivers子目录包含内核中所有的设备驱动程序。/fs 子目录包含了所有的文件系统的代码。/include 子目录包含了建立内核代码时所需的大部分库文件的头文件,该模块利用其他模块重建内核。同时,它也包括不同平台需要的库文件。/init子目录包含了内核的初始化代码,内核从此目录下开始工作。/ipc 子目录包含了内核的进程间通讯的代码。/kernel 子目录包含了主内核的代码,如进程调度等。/lib 子目录包含了通用的库函数代码等。/mm
42、 子目录包含了内核的内存管理代码。/net 子目录包含了内核的网络相关的代码。/scripts 子目录包含了配置内核的一些脚本文件一般在每个目录下,都有一个.depend 文件和一个 Makefile 文件,这两个文件都是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文件这间的联系和依托关系很有帮助;而且,在有的目录下还有Readme 文件,它是对该目录下的文件的一些说明,同样有利于我们对内核源码的理解。因此,移植工作的重点就是移植arch目录下的文件。4.2 内核的移植4.2.1 设置目标平台和指定交叉编译器在最上层的根目录/Makefile文件中,首先要指定所移植的硬件平台,以及所使用
43、的交叉编译器。改为如下:ARCH := armCROSS_COMPILE = arm-none-linux-gnueabi-也就是说,所移植的硬件平台是ARM,所使用的交叉编译器是存放在目录/usr/local/arm/arm-2007q3/bin/下的arm-none-linux-gnueabi-xxx等等工具。五、linux的内核、文件系统编译与下载5.1 编译linux内核编译一份可以运行的linux,首先要对linux 进行配置。一般是通过make menuconfig 或者make xconfig 来实现的。我们选择make menuconfig,为了编译最后得到的内核文件zImag
44、e,我们需要如下几步:make omap3_techv35xx_defconfig #使用默认的配置编译,make clean #这个命令不要每次都用,执行后内核编译时间很长(该命令用于清除以前构造内核时生成的所有目标文件、模块文件和临时文件make menuconfig #查看配置情况make uImage等待编译结束编译内核。编译通过后,在目录arch/arm/boot下生成uImage内核文件。5.2 制作ubifs文件系统ubifs是新一代的flash文件系统,其设计以及性能都优越于YAFFS2,特别是工作在大页MLC NAND FLASH上面,同时读写速度也比yaffs2高出很多,u
45、bifs文件系统的写入速度约为1.66M/s,读出速度约为2.27M/s.同时ubhifs系统的高压缩率也为生产安装提高效率。解压rootfs.tar.bz2,在终端下执行 tar xvzf rootfs.tar.bz2 在当前目录生成rootfs目录;在终端输入下面的命令:等待一会,会建立好名为ubi.img的文件系统。图4-3-2 图4-3-2为文件系统的目录。5.3 内核和文件系统的下载在WINDOWS下启动超级终端,设置其(115200,8位数据,1位停止位,无奇偶校验;用交叉网线连接pc机和cpu网口用串口线连接实验系统和PC机的串口。系统上电,在超级终端下进入uboot界面5.3.
46、1、设置板子的参数:在超级终端下依次输入下面的指令setenv ipaddr 57 (板子IP,根据实际情况设setenv serverip 66 (虚拟机的IP,根据实际情况设setenv bootdelay 3setenv ethaddr 00:50:c2:7e:8A:1Dsetenv gatewayip (网关,根据实际情况设setenv bootargs console=ttyS2,115200n8 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs video=omapfb:mod
47、e:8inch_LCDsetenv bootcmd nand read.i 80300000 280000 210000; bootm 80300000saveenv (保存设置好的参数 5.3.3、烧写x-load,从FLASH启动u-boot需要这个文件,所以如果是新板子必须烧写;在超级终端下依次输入下面的指令:nand unlocknand erase 0 80000nand ecc swnand write.i 81600000 0 $(filesize等待烧写完成。5.3.4、烧写u-boot在超级终端下依次输入下面的指令nand unlocknand erase 80000 160
48、000nand ecc swnand write.i 81600000 80000 $(filesize等待烧写完成,断电。1.2 更新u-boot更新u-boot,是指原来已经烧写过u-boot,现在需要把修改过的u-boot烧写进去的过程。要求,板子还可以从FLASH启动,否则需要按照1.1介绍的方法进行烧写。步骤: 2、使用串口线一头连接板子的P3另一头连接PC机的串口2(串口号可以根据实际情况来更改。使用一根交叉网线连接好板子和PC的网口;3、打开超级终端,选择端口(和板子的P3端口相连的串口端口号,在这里是com2 设置相应的参数如下,点确定打开: 4、给板子上电,板子自动启动。按键
49、盘使得板子进入u-boot的命令行,如下图: 5、在PC机上打开虚拟机,运行。要求需要烧写的x-load.bin.ift,u-boot.bin,uImage, 6、设置板子参数(如果已设置好,跳过此步在超级终端下依次输入下面的指令setenv ipaddr 57 (开发板子IP,根据实际情况设setenv serverip 58 (虚拟机的IP,根据实际情况设setenv bootdelay 6setenv ethaddr 00:50:c2:7e:8A:1Dsetenv gatewayip (网关,根据实际情况设setenv
50、bootargs console=ttyS2,115200n8 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs video=omapfb:mode:8inch_LCDsetenv bootcmd nand read.i 80300000 280000 210000; bootm 80300000saveenv (保存设置好的参数7、在超级终端下依次输入下面的指令nand unlocknand erase 80000 160000nand ecc swnand write.i 81600000 80000 $(filesize等待烧写完成,断电。1.3 u-boot 启动模式设置设置8寸屏从FLASH上启动,进入U-boot后输入:setenv bootargs console=ttyS2,115200n8 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs video=omapfb:mode:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《美人鱼》观后感(集合15篇)
- 个人自我鉴定(集合15篇)
- 2023三年级语文上册 第二单元 7 听听秋的声音教学实录 新人教版
- 贫困生申请书合集15篇
- 关于在法院实习报告集锦九篇
- 下雪了教案合集七篇
- 大学生电子商务实习报告7篇
- 工程认识实习报告3篇
- 食品合规在线测试复习测试有答案
- 大学教育心得体会
- 消防验收常见问题汇总
- 1027试验设计课件
- 纤维支气管镜检查术护理
- 第章物流与供应链管理
- 公开课教我如何不想他课件-PPT
- 《网店运营实务》课程标准
- 读书笔记《框架思维》PPT模板思维导图下载
- 裁判员劳动合同
- 国开2023春计算机组网技术实训-小型校园网网络解决方案的设计与实施参考答案
- 半导体物理学(刘恩科)第七版-完整课后题答案
- 项目部领导施工现场值班带班交接班记录表
评论
0/150
提交评论