




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统实 验 指 导 书前 言一嵌入式系统实验的任务嵌入式系统实验是嵌入式系统理论课程的一部分,它的任务是:1.通过实验进一步了解和掌握嵌入式系统的基本理论、ARM的体系结构、ARM系统硬件设计基础以及嵌入式Linux软件设计2.学习和掌握嵌入式系统开发环境的使用和实现技术。3.提高应用计算机应用能力及对操作系统有更高水平的理解。二实验设备嵌入式系统实验所使用的设备由计算机、CPU板、语音单元、开关量输入输出单元、液晶显示单元、键盘单元、信号扩展单元、CPLD模块单元、模拟信号源、直流电源单元等组成。其中计算机是ARM开发软件的运行环境,是程序编辑和调试的重要工具。语音单元是语音输入和输出模块,主要完成语音信号的采集和回放。开关量输入输出单元可以实现开关量输入或输出。液晶显示单元可以对运行结果进行文字和图形的显示。模拟信号源可以产生频率和幅度可调的正弦波、方波、三角波。直流电源单元可以提供3.3V、+5V、-12V和+12V的直流电源。装有ARM开发软件和Linux操作系统的计算机与整个实验系统共同构成整个的嵌入式系统的软、硬件开发环境。所有的嵌入式系统的实验都是在这套实验装置上完成的。三对参加实验学生的要求1.阅读实验指导书,复习与实验有关的理论知识,明确实验目的。2.按实验指导书要求进行程序设计、程序修改。3.在实验中注意观察,记录有关数据和图像,并由指导教师复查后才能结束实验。4.实验后应断电,整理实验台,恢复到实验前的情况。5.认真写实验报告,按规定格式对实验结果分析。字迹要清楚,结论要明确。爱护实验设备,遵守实验室纪律。目 录第一章 嵌入式系统实验3实验一 ADS1.2开发环境创建3实验二 基于ARM的汇编语言程序设计5实验三 基于ARM的C语言程序设计简介7实验四 ARM的I/O接口实验9实验五 ARM的中断实验11实验六 ARM的UART实验14实验七 LCD的显示实验16实验八 Linux的实验环境的搭建18实验九 linux的移植、内核、文件系统的生成与下载21实验十 基于linux的跑马灯应用程序的编写29第二章EL-ARM-挂箱型实验系统的资源介绍31第一节 ARM实验箱硬件资源概述31第二节 实验系统的硬件资源总览32第三节 核心板的资源介绍33第一章 嵌入式系统实验实验一 ADS1.2开发环境创建一实验目的熟悉ADS1.2开发环境,正确使用仿真调试电缆进行编译、下载、调试。二实验内容学习ADS1.2开发环境三实验设备1.EL-ARM挂箱教学实验箱,PentiumII以上的PC机,仿真调试电缆。2.PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真调试电缆驱动程序四实验步骤1.ADS1.2下建立工程(1)运行ADS1.2集成开发环境(CodeWarrior for ARM Developer Suite),点击File|New,在New对话框中,选择Project栏,其中共有7项,ARM Executable Image是ARM的通用模板。选中它即可生成ARM的执行文件。还要在,Project name栏中输入项目的名称,以及在Location中输入其存放的位置。按确定保存项目。(2)在新建的工程中,选择Debug版本,使用Edit|Debug Settings菜单对Debug版本进行参数设置。(3)在,点击Debug Setting 按钮,选中Target Setting项,在Post-linker栏中选中ARM fromELF项。按OK确定。这是为生成可执行的代码的初始开关。(4)点击ARM Assembler ,在Architecture or Processer 栏中选ARM920T。(5)点击ARM C Compliler ,在Architecture or Processer栏中选ARM920T。这是要编译的CPU核。(6)点击ARM linker ,在outpur栏中设定程序的代码段地址,以及数据使用的地址。图中的RO Base栏中填写程序代码存放的起始地址,RW Base栏中填写程序数据存放的起始地址。该地址是属于SDRAM的地址。在options栏中, Image entry point要填写程序代码的入口地址,其他保持不变,如果是在SDRAM中运行,则可在0x300000000x33ffffff中选值,这是64M SDRAM的地址,但是这里用的是起始地址,所以必须把你的程序空间给留出来,并且还要留出足够的程序使用的数据空间,而且还必须是4字节对齐的地址(ARM状态)。通常入口点Image entry point 为0x30000000,ro_base也为0x30000000。在Layout栏中,在Place at beginning of image框内,需要填写项目的入口程序的目标文件名,如,整个工程项目的入口程序是2410init.s,那么应在Object/Symbol处填写其目标文件名2410init.o,在Section处填写程序入口的起始段标号。它的作用是通知编译器,整个项目的开始运行,是从该段开始的。(7)在Debug Setting对话框中点击左栏的ARM fromELF项,在Output file name栏中设置输出文件名*.bin,前缀名可以自己取,在Output format 栏中选择Plain binary,这是设置要下载到flash中的二进制文件,使用的是test.bin.(8)到此,在ADS1.2中的基本设置已经完成,可以将该新建的空的项目文件作为模板保存起来。首先,要将该项目工程文件改一个合适的名字,如S3C2410 ARM.mcp等,然后,在ADS1.2软件安装的目录下的Stationary 目录下新建一个合适的模板目录名,如,S3C2410 ARM Executable Image,再将刚刚设置完的S3c2410 ARM.mcp项目文件存放到该目录下即可。这样,就能看到该模板。2. ADS1.2下仿真、调试在ADS1.2下进行仿真调试,(1)需要一根仿真调试电缆。在连上调试电缆后,给实验箱上电。(2)打开超级终端,设置其参数为:波特率为115200,数据位数8,奇偶校验无,停止位无1,数据流控无。(3)打开H-JTAG软件。(4)打开调试软件AXD Debugger。点击File|load image 加载文件ADS.axf(实验程序HARDWAREADS实验一ADSADS_data目录下)。(5)点击全速运行,在超级终端观察结果。3.利用自己创建的模板,重新进行编译调试,验证模板创建的正确性。利用模板新建项目工程,把ADS目录下的文件添加到新建项目工程中,重新进行编译下载调试,观察实验结果。五思考题及实验报告要求1.思考题(1)修改程序,使显示文字变为“上海电机学院ARM嵌入式系统教学中心欢迎你”。2.实验报告要求(1)写出程序分析、修改的过程。(2)总结实验过程中模板创立、程序下载、调试过程中所遇到的问题和解决方法,写出编程调试的经验和体会。实验二 基于ARM的汇编语言程序设计一实验目的1. 了解ARM汇编语言的基本框架,学会使用ARM的汇编语言编程二实验内容1. 用汇编语言编写一个简单的应用程序三实验设备1.EL-ARM挂箱教学实验箱,PentiumII以上的PC机,仿真调试电缆,串口电缆。2.PC操作系统WIN98或WIN2000或WINXP, ADS1.2集成开发环境,仿真调试驱动程序四.汇编语言简介1.ARM汇编的一些简要的书写规范ARM汇编中,所有标号必须在一行的顶格书写,其后面不要添加“:”,而所有指令均不能顶格书写。ARM汇编对标识符的大小写敏感,书写标号及指令时字母大小写要一致。在ARM汇编中,ARM指令、伪指令、寄存器名等可以全部大写或者全部小写,但不要大小写混合使用。注释使用“;”号,注释的内容由“;”号起到此行结束,注释可以在一行的顶格书写。详细的汇编语句及规范请参照ARM汇编的相关书籍、文档,也可参照我们提供的文档。2.ARM汇编语言程序的基本结构在ARM汇编语言程序中,是以程序段为单位来组织代码。段是相对独立的指令或数据序列,具有特定的名称。段可以分为代码段的和数据段,代码段的内容为执行代码,数据段存放代码运行时所需的数据。一个汇编程序至少应该有一个代码段,当程序较长时,可以分割为多个代码段和数据段,多个段在程序编译链接时最终形成一个可执行文件。可执行映像文件通常由以下几部分构成: 一个或多个代码段,代码段为只读属性。 零个或多个包含初始化数据的数据段,数据段的属性为可读写。 零个或多个不包含初始化数据的数据段,数据段的属性为可读写。链接器根据系统默认或用户设定的规则,将各个段安排在存储器中的相应位置。源程序中段之间的相邻关系与执行的映象文件中的段之间的相邻关系不一定相同。五.实验步骤1. 本实验仅使用实验教学系统的CPU板,串口。在进行本实验时,LCD电源开关、音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。2在PC机并口和实验箱的CPU板上的JTAG接口之间,连接仿真调试电缆,以及串口间连接公/母接头串口线。3检查连接是否可靠,可靠后,接入电源线,系统上电。4打开ADS1.2开发环境,从里面打开实验程序HARDWAREADS实验二asm.mcp项目文件,进行编译。5编译通过后,进入ADS1.2调试界面,加载实验程序HARDWAREADS实验二asm_DataDebug中的映象文件程序映像asm.axf。6打开超级终端,配置波特率为115200,校验位无,数据位为8,停止位为1。之后,在ADS调试环境下全速运行映象文件,观察结果。六.思考题及实验报告要求1.思考题(1)修改程序,使显示字符及其长度改变。2.实验报告要求(1)写出程序分析、修改的过程(2)总结实验过程程序编译、程序下载、调试过程中所遇到的问题和解决方法,写出实验过程的经验和体会。实验三 基于ARM的C语言程序设计简介一.实验目的1.了解ARM C语言的基本框架,学会使用ARM的C语言编程二.实验内容1. 用C语言编写一个简单的应用程序三.实验设备1. EL-ARM-830教学实验箱,PentiumII以上的PC机,仿真调试电缆,串口电缆。2. PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序四.ARM C语言简介与使用规则1. ARM C语言程序的基本规则在ARM程序的开发中,需要大量读写硬件寄存器,并且尽量缩短程序的执行时间的代码一般使用汇编语言来编写,比如ARM的启动代码,ARM的操作系统的移植代码等,除此之外,绝大多数代码可以使用C语言来完成。C语言使用的是标准的C语言,ARM的开发环境实际上就是嵌入了一个C语言的集成开发环境,只不过这个开发环境和ARM的硬件紧密相关。在使用C语言时,要用到和汇编语言的混合编程。当汇编代码较为简洁,则可使用直接内嵌汇编的方法,否则,使用将汇编文件以文件的形式加入项目当中,通过ATPCS的规定与C程序相互调用与访问。ATPCS,就是ARM、Thumb的过程调用标准(ARM/Thumb Procedure Call Standard),它规定了一些子程序间调用的基本规则。如寄存器的使用规则,堆栈的使用规则,参数的传递规则等。在C程序和ARM的汇编程序之间相互调用必须遵守ATPCS。而使用ADS的C语言编译器编译的C语言子程序满足用户指定的ATPCS的规则。但是,对于汇编语言来说,完全要依赖用户保证各个子程序遵循ATPCS的规则。具体来说,汇编语言的子程序应满足下面3个条件: 在子程序编写时,必须遵守相应的ATPCS规则; 堆栈的使用要遵守相应的ATPCS规则; 在汇编编译器中使用-atpcs选项。汇编程序调用C程序汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。在汇编程序中使用IMPORT伪指令声明将要调用的C程序函数。在调用C程序时,要正确设置入口参数,然后使用BL调用。C程序调用汇编程序汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。在汇编程序中使用EXPORT伪指令声明本子程序,使其他程序可以调用此子程序。在C语言中使用extern关键字声明外部函数(声明要调用的汇编子程序)。在C语言的环境内开发应用程序,一般需要一个汇编的启动程序,从汇编的启动程序,跳到C语言下的主程序,然后,执行C程序,在C环境下读写硬件的寄存器,一般是通过宏调用,在每个项目文件的Startup2410/INC目录下都有一个2410addr.h的头文件,那里面定义了所有关于2410的硬件寄存器的宏,对宏的读写,就能操作2410的硬件。具体的编程规则同标准C语言。五.实验步骤1本实验仅使用实验教学系统的CPU板,串口。在进行本实验时,LCD电源开关、音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。2在PC机并口和实验箱的CPU板上的JTAG接口之间,连接仿真调试电缆,以及串口间连接公/母接头串口线。3检查连接是否可靠,可靠后,接入电源线,系统上电。4打开ADS1.2开发环境,从里面打开实验程序HARDWAREADS实验三C.mcp项目文件,进行编译。5编译通过后,进入ADS1.2调试界面,加载实验程序HARDWAREADS实验三C_DataDebug中的映象文件程序映像C.axf。6打开/实验软件/tools/目录下的串口调试助手工具,配置为波特率为115200,校验位无,数据位为8,停止位为1。之后,在ADS调试环境下全速运行映象文件。六.思考题及实验报告要求1.思考题(1)修改程序,使连续发送的数据变为56。2.实验报告要求(1)写出程序分析、修改的过程(2)总结实验过程程序编译、程序下载、调试过程中所遇到的问题和解决方法,写出实验过程的经验和体会。实验四 ARM的I/O接口实验一.实验目的1. 了解S3C2410的通用I/O接口2. 掌握I/0功能的复用并熟练的配置,进行编程实验二.实验内容1.在实验箱的CPU板上点亮LED灯LED1、LED2,并轮流闪烁!三.实验设备1. EL-ARM挂箱教学实验箱,PentiumII以上的PC机,仿真调试电缆。2. PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序。四.实验原理S3C2410 CPU 共有117个多功能复用输入输出口,分为8组端口:u 4个16位的I/O端口 (PORT C、PORT D、PORT E、PORT G)u 2个11位的I/O端口 (PORT B 和PORT H)u 1个8位的I/O端口(PORT F)u 1个23位的I/O端口(PORT A)这些通用的GPI/O接口,是可配置的, PORTA除功能口外,它们仅用作输出使用,剩下的PORTB、PORTC、PORTD、PORTE、PORTF、PORTG均可作为输入输出口使用。配置这些端口,是通过一些寄存器来实现的,这些寄存器均有各自的地址,位长32位。往该地址中写入相应的数据,即可实现功能及数据配置。五.实验步骤1本实验使用实验教学系统的CPU板,在进行本实验时,LCD电源开关、音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。2在PC机并口和实验箱的CPU板上的JTAG接口之间,连接仿真调试电缆。3检查连接是否可靠,可靠后,接入电源线,系统上电。4打开ADS1.2开发环境,从里面打开实验程序HARDWAREADS实验三IO.mcp项目文件,进行编译。5编译通过后,进入ADS1.2调试界面,加载实验程序HARDWAREADS实验五IO_DataDebug中的映象文件程序映像IO.axf。6在ADS调试环境下全速运行映象文件。观察CPU板左下角的LED1、LED2灯轮流的的闪烁。六.思考题及实验报告要求1.思考题(1)修改程序,LED1、LED2灯轮流的的闪烁改为:先同时点亮维持一段时间后,再轮流闪烁,然后再同时熄灭,再同时点亮依次循环。2.实验报告要求(1)写出程序分析、修改的过程(2)总结实验过程程序编译、程序下载、调试过程中所遇到的问题和解决方法,写出实验过程的经验和体会。实验五 ARM的中断实验一实验目的1. 掌握ARM9的中断原理,能够对S3C2410的中断资源及其相关中断寄存器的进行合理配置2. 掌握对S3C2410的中断的编程的方法二实验内容1. 学习响应外部中断请求的配置方法,并通过响应定时器中断,执行中断服务子程序使CPU板上的LED指示灯LED1、LED2闪烁。三实验设备1. EL-ARM-830教学实验箱,PentiumII以上的PC机,仿真调试电缆。PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序。四.ARM的中断原理在ARM中,有两类中断,一类是IRQ,一类是FIQ,IRQ是普通中断,FIQ是快速中断,在进行大批量的复制、数据转移等工作时,常使用此类中断。FIQ的优先级高于IRQ。同时,它们都属于ARM的异常模式,当一旦有中断发生,不管是外部中断,还是内部中断,正在执行的程序都会停下,PC指针进而跳入异常向量的地址处,若是IRQ中断,则PC指针跳到0x18处,若是FIQ中断,则跳到0x1C处。异常向量地址处,一般存有中断服务子程序的地址,所以,接下来PC指针跳入中断服务子程序中。当完成中断服务子程序后,PC指针会返回到被打断的程序的下一条地址处,继续执行程序。这就是ARM中断操作的基本原理。但是,通常由于生产ARM处理器的各厂家都集成了很多中断请求源,比如,串口中断、AD中断、外部中断、定时器中断、DMA中断等等,所以,很多中断可能同时请求中断,因此,为区分它们,更准确的完成任务,这些中断都有相应的优先级别,以及当发生中断时,它们都有相应的中断标志位,通过在发生中断是判断中断优先级,和访问中断标志位的状态来识别到底哪一个中断发生了。五中断编程实例 在ADS1.2的开发环境下,打开HARDWARE/ADS/实验六目录下的Interrupt.mcp项目,在Application/SRC/Main.c中可以看到,主程序中,在进行目标板初始化后,程序进入死循环,等待中断!在Startup2410/src/target.C文件中包括对要使用的中断控制器的初始化程序,CPU响应了该中断后的中断服务子程序。 该项目的程序流程是,按下程序启动后,初始化定时器1,设定定时器的中断时间,然后,等待定时器中断,当定时器中断到来时,就会进入定时器中断服务子程序,而中断服务子程序会把LED1和LED2灯熄灭或点亮,从现象中看到LED1和LED2 灯忽闪一次,则说明定时器发生了一次中断。最后,关闭中断请求,等待下一次的中断的到来。为使CPU响应中断,在中断服务子程序执行之前,必须打开ARM920T的CPSR中的I位,以及相应的中断屏蔽寄存器中的位。打开相应的中断屏蔽寄存器中的位,是在target.C中的void Timer1INT_Init(void)函数中,在做了这些准备后,就可以等待中断的到来了。void Timer1INT_Init(void) /定时器接口使能 if (rINTPND & BIT_TIMER1) rSRCPND |= BIT_TIMER1; pISR_TIMER1 = (int)Timer1_ISR; rINTMSK &= (BIT_TIMER1); /开中断; TIMER1INT_Init()函数已在Target_Init()中调用。详见/实验程序/HARDWARE/ADS/实验六目录下的Interrupt.mcp源代码注释。六实验步骤1本实验仅使用实验教学系统的核心CPU板。在进行本实验时,LCD电源开关,音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。2在PC机并口和实验箱的CPU板上的JTAG接口之间,连接仿真调试电缆。3检查连接是否可靠,可靠后,接入电源线,系统上电。4打开ADS1.2开发环境,从里面打开实验程序HARDWAREADS实验五Interrupt.mcp项目文件,进行编译。5编译通过后,进入ADS1.2调试界面,加载实验程序HARDWAREADS实验五Interrupt_DataDebug中的映象文件程序映像Interrupt.axf。6在ADS调试环境下全速运行映象文件。观察LED1和LED2的变化。七思考题及实验报告要求1.思考题(1)修改程序,重新调试,改变LED1、LED2灯闪烁的频率。2.实验报告要求(1)写出程序分析、修改的过程(2)总结实验过程程序编译、程序下载、调试过程中所遇到的问题和解决方法,写出实验过程的经验和体会。实验六 ARM的UART实验一实验目的1. 了解并熟悉UART的概念及其工作原理;2. 掌握ARM相应的寄存器配置;3. 能够用C编写出相应的串口程序;二实验内容1. 在实验箱的CPU板上运行程序,在超级终端上回显发送的数据!三实验设备1. EL-ARM-830教学实验箱,PentiumII以上的PC机,仿真调试电缆,串口电缆。PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序。四实验的原理实验原理:把键盘敲击的字符通过PC机的串口发送给实验箱上的ARM的CPU板的串口0,ARM的CPU板上的串口得到字符后,通过ARM把它送给CPU板上的串口0输出给PC,以及通过底板上的串口1,送给PC机。这样,就完成了串口间的收发数据。五实验步骤1. 本实验使用实验教学系统的CPU板,串口。在进行本实验时,LCD电源开关、音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。2在PC机并口和实验箱的CPU板上的JTAG接口之间,连接仿真调试电缆。使用串口线连接PC机串口1和实验箱CPU板的串口,使用直连线连接底板串口2和PC机上的串口2之间的电缆。3检查连接是否可靠,可靠后,接入电源线,系统上电。4打开ADS1.2开发环境,从里面打开实验程序HARDWAREADS实验六uart.mcp项目文件,进行编译。5编译通过后,进入ADS1.2调试界面,加载实验程序HARDWAREADS实验六UART_DataDebug中的映象文件程序映像UART.axf。6打开超级终端0,超级终端1,进行设置(115200,8位数据,1位停止位,无奇偶校验);7在ADS调试环境下,全速运行映象文件。激活超级终端0,敲键盘,观察超级终端0,超级终端1的内容显示,所敲键盘的字符应该在两个超级终端上显示出来。六思考题及实验报告要求1.思考题(1)简述ARM与PC机的串口通信原理。2.实验报告要求(1)写出程序分析、调试的过程(2)总结实验过程程序编译、程序下载、调试过程中所遇到的问题和解决方法,写出实验过程的经验和体会。实验七 LCD的显示实验一实验目的1. 学习LCD与ARM的LCD的控制器的接口原理;2. 掌握内置LCD控制器驱动编写方法;3. 学习调用简单的GUI绘图。二实验内容1. 在320X240的彩色LCD上显示点、线、圆,设置颜色、改变颜色、显示英文、显示汉字,填充区域等基本绘制功能。三实验设备1. EL-ARM-830-S3C2410教学实验箱,PentiumII以上的PC机,仿真调试电缆。PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序。四实验原理S3C2410 中具有内置的LCD 控制器,它能将显示缓存(在SDRAM存储器中)中的LCD图像数据传输到外部的LCD驱动电路上的逻辑功能。它支持单色、4级、16级灰度LCD显示,以及8位彩色、12位彩色LCD显示。在显示灰度时,它采用时间抖动算法(time-based dithering algorithm)和帧率控制 (Frame Rate Control)方法,在显示彩色时,它采用RGB的格式,即RED、GREEN、BLUE,三色混合调色。通过软件编程,可以实现332的RGB调色的格式。对于不同尺寸的LCD显示器,它们会有不同的垂直和水平象素点、不同的数据宽度、不同的接口时间及刷新率,通过对LCD 控制器中的相应寄存器写入不同的值,来配置不同的LCD 显示板。五实验步骤1本实验使用实验教学系统的CPU板,LCD单元。2在PC机并口和实验箱的CPU板上的JTAG接口之间,连接仿真调试电缆。3检查连接是否可靠,可靠后,接入电源线,系统上电。打开LCD的电源开关。4打开ADS1.2开发环境,从里面打开实验程序HARDWAREADS实验七Lcd.mcp项目文件,进行编译。5编译通过后,进入ADS1.2调试界面,加载实验程序HARDWAREADS实验七Lcd_DataDebug中的映象文件程序映像Lcd.axf。6在ADS调试环境下全速运行映象文件到主函数Main(),然后单步运行,观察液晶屏的反应。7实验完毕,先关闭LCD电源开关,再关闭ADS开发环境,再关闭电源。六思考题及实验报告要求1.思考题(1)修改在Main()函数中改动某些GUI的API函数,重新装入映像文件,运行程序,观察液晶屏的显示的效果,重复实验。2.实验报告要求(1)写出程序分析、修改的过程(2)总结实验过程程序编译、程序下载、调试过程中所遇到的问题和解决方法,写出实验过程的经验和体会。实验八 Linux的实验环境的搭建一实验目的1.搭建linux操作系统实验所需的实验环境构件2.了解 linux的组成,学会编译内核二实验内容1. 安装Redhat 9.0Linux操作系统2.拷贝已移植好的linux操作系统以及正确安装交叉编译器3.学习linux内核组成,编译过程三实验设备1. PentiumII以上的PC机, EL-ARM830实验箱,Redhat 9.0LINUX操作系统四实验步骤1.安装虚拟机。(已安装,可跳过此步)2.正确安装Redhat9.0操作系统。(已安装,可跳过此步)3.安装交叉编译器。1 首先实现windows和linux的共享。 启动虚拟机,用户名:root,password:123456 点击菜单VM/install VMware Tools 解压缩tools文件先将/mnt/CDroom/下的两个文件如:VMwareTools,拷贝到根目录下新建目录,/tools/下,然后解压缩,命令如下# tar xvzf 文件名。# cd /tool/VMware-tools-distribut# ./VMware install.pl最后选择相应的选项(基本都是回车),共享成功。 在linux下查看共享文件命令:# cd mnt # ls(共享成功hou) 共享RPMS在虚拟机上VM/setting /options/share Folder/ADD 确定,然后选择下一步出现对话框,Name: RPMS (这里需要填写的是linux下共享后的文件名)Host folder:rpms (windows下的文件名) 在linux根目录下建立linuette文件夹,然后拷贝RPMS到该文件夹。 安装RPMS文件内容首先,改变目录到rpms然后安装,命令:# rpm -Uvh*.rpm (注意linux区分大小写) 安装成功后会在/opt/生成host文件夹1 配置NFS网络文件系统 在linux主机的终端下,执行setup选中Firewall configuration回车,选择no Firewall,然后退出,选择system services回车,进入系统服务选择菜单,选中nfs(用空格键),然后退出(可以按F12键退出)。 # cd /etc # gedit exports 进入到编辑器,对文件进行编译/ (rw)/home/nfs (rw)保存,退出,然后改变目录# cd /etc/rc.d/init.d#./nfs start在终端内输出:Starting NFS services: 确定 Starting NFS quotas: 确定Starting NFS daemon: 确定Starting NFS mountd: 确定这样就一切OK了!主机linux下的NFS启动起来。5用交叉网线把主机和实验系统连接。(1)设置虚拟机的网络地址:10.10.24.启动超级终端(2)用ifconfig eth0 10.10.24. 改变实验系统的IP地址,然后可以用ping命令查看虚拟机和实验系统是否能联通。(3)联通后用mount命令挂在虚拟机的文件到实验系统。首先创建/home/nfs 文件夹,然后改变其属性为可读可写。(4)最后在超级终端下输入mount o nolock 192.168.0.1:/home/nfs /mnt/yaffs回车,即可完成把主机上的/home/nfs下的文件挂载到实验系统的/mnt/yaffs目录下。6. 编译内核当选择采用驱动模块和应用程序利用nfs网络文件系统异地调试时,则不需要重新编译内核,仅需要使用交叉编译器编译驱动模块和应用程序,之后利用mount命令把它们所在的文件目录加载到文件系统中。然后使用相关命令进行对驱动模块的安装,调试或卸载。步骤如下,在系统工具的终端下,切换目录到kernel目录下,然后输入命令: make dep (该命令用于寻找各文件的依存关系)make clean (该命令用于清除以前构造内核时生成的所有目标文件、模块文件和临时文件)make zImage (编译内核中的文件,生成内核)若编译通过则在/arch/arm/boot/目录下生成内核文件zImage。五实验报告要求1.实验报告要求(1)总结实验过程及步骤。(2)总结交叉编译环境中所遇到的问题和解决方法,写出实验过程的经验和体会。实验九 linux的移植、内核、文件系统的生成与下载一实验目的1. 了解linux移植的基本过程,掌握内核和文件系统的下载方法二实验内容1. 学习linux移植的基本过程2. 学习内核和文件系统的生成与下载方法三实验设备1. PentiumII以上的PC机、EL-ARM830实验箱四linux的移植说明本实验系统运行的linux版本是针对2.4.18进行移植的linux-2.4.18.-rm7-pxa1版本,它存放在/实验软件/source_sys/目录内。由于移植内核所涉及的内容较多,且也较复杂,同时,在涉及到的中断切换、内存管理方面的复杂移植,一般也不必太过关心,网络上有专门的非官方组织在完善该事情。我们所做的大多是把该移植好的内核,让它如何在自己的硬件系统上正常的运转起来。因此,我们所做的移植也偏重于应用。 1. 内核的目录结构Linux内核主要由5个子系统组成:l 进程调度子系统l 进程间通讯子系统l 内存管理子系统l 虚拟文件系统子系统l 网络接口子系统 图4-3-1Linux内核非常庞大,包括驱动程序在内有上百兆。2.4.18内核结构图如图4-3-1。其主要结构目录:/arch 子目录包含了所有与硬件体系结构相关的内核移植代码。其中每一个目录都代表一种硬件平台,对于每种平台都应该包括:boot: 包括启动内核所使用的部分或全部平台的相关代码。kernel: 包括支持体系结构特有的特征代码lib:包括存放体系结构特有的通用函数的实现代码mm: 包括存放体系结构特有的内存管理程序的实现mach-xxx:包括存放该处理器的移植代码/Documentation 子目录包含有关内核的许多非常详细的文档。/drivers 子目录包含内核中所有的设备驱动程序。/fs 子目录包含了所有的文件系统的代码。/include 子目录包含了建立内核代码时所需的大部分库文件的头文件,该模块利用其他模块重建内核。同时,它也包括不同平台需要的库文件。/init 子目录包含了内核的初始化代码,内核从此目录下开始工作。/ipc 子目录包含了内核的进程间通讯的代码。/kernel 子目录包含了主内核的代码,如进程调度等。/lib 子目录包含了通用的库函数代码等。/mm 子目录包含了内核的内存管理代码。/net 子目录包含了内核的网络相关的代码。/scripts 子目录包含了配置内核的一些脚本文件一般在每个目录下,都有一个.depend 文件和一个 Makefile 文件,这两个文件都是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文件这间的联系和依托关系很有帮助;而且,在有的目录下还有Readme 文件,它是对该目录下的文件的一些说明,同样有利于我们对内核源码的理解。因此,移植工作的重点就是移植arch目录下的文件。2 内核的移植 (1) 设置目标平台和指定交叉编译器在最上层的根目录/Makefile文件中,首先要指定所移植的硬件平台,以及所使用的交叉编译器。改为如下:ARCH := armCROSS_COMPILE = /opt/host/armv4l/bin/armv4l-unknown-linux- 也就是说,所移植的硬件平台是ARM,所使用的交叉编译器是存放在目录/opt/host/armv4l/bin/下的armv4l-unknown-linux-xxx等等工具。(2) arch/arm目录下Makefile 修改 系统的启动代码是通过这个文件产生的。在linux-2.4.18内核中要添加如下代码,(在移植好的内核中请不要添加)ifeq ($(CONFIG_ARCH_S3C2410),y)TEXTADDR = 0xC0008000MACHINE = s3c2410endif这里TEXTADDR确定内核开始运行的虚拟地址。(3) arch/arm目录下config.in 修改配置文件config.in能够配置运行“make menuconfig”命令时的菜单选项,由于2.4.18内核中没有S3C2410的相关信息,所以要在该文件中进行有效的配置。由于配置选项较多,在此不做赘述,请参见我们提供的内核源代码内的/arch/arm/config.in文件。做完该步,这样在linux内核配置时就可以选择刚刚加入的内核平台了。(4)arch/arm/boot目录下Makefile 修改编译出来的内核存放在该目录下,这里指定内核解压到实际硬件系统上的物理地址。ifeq ($(CONFIG_ARCH_S3C2410),y)ZTEXTADDR = 0x30008000ZRELADDR = 0x30008000endif 要根据实际的硬件系统修改解压后,内核开始运行的实际的物理地址(5) arch/arm/boot/compressed目录下Makefile 修改该文件从vmlinux中创建一个压缩的vmlinuz镜像文件。该文件中用到的SYSTEM、ZTEXTADDR、ZBSSADDR、和ZRELADDR是从arch/arm/boot/Makefile文件中得到的。添加如下代码:ifeq ($(CONFIG_ARCH_S3C2410),y)OBJS+= head-s3c2410.oEndif(6) arch/arm/boot/compressed目录下添加head-s3c2410.s 该文件主要用来初始化处理器。(7) arch/arm/def-configs目录下添加配置好的S3C2410的配置文件。(8) arch/arm/kernel目录下Makefile 修改 该文件主要用来确定文件类型的依赖关系。no-irq-arch:= $(CONFIG_ARCH_INTEGRATOR) $(CONFIG_ARCH_CLPS711X) $(CONFIG_FOOTBRIDGE) $(CONFIG_ARCH_EBSA110) $(CONFIG_ARCH_SA1100) $(CONFIG_ARCH_CAMELOT) $(CONFIG_ARCH_S3C2400) $(CONFIG_ARCH_S3C2410) $(CONFIG_ARCH_MX1ADS) $(CONFIG_ARCH_PXA)(9) arch/arm/kernel目录下的文件debug-armv.s 修改 在该文件中添加如下代码,目的是关闭外围设备的时钟,以保证系统正常运行。#elif defined(CONFIG_ARCH_S3C2410) .macro addruart,rx mrc p15, 0, rx, c1, c0 tst rx, #1 MMU enabled ? moveq rx, #0x50000000 physical base address movne rx, #0xf0000000 virtual address .endm .macro senduart,rd,rx str rd, rx, #0x20 UTXH .endm .macro waituart,rd,rx .endm .macro busyuart,rd,rx1001: ldr rd, rx, #0x10 read UTRSTAT tst rd, #1 2 TX_EMPTY ? beq 1001b .endm(10) arch/arm/kernel目录下的文件entry-armv.s 修改CPU初始化时的处理中断的汇编代码#elif defined(CONFIG_ARCH_S3C2410)#include .macro disable_fiq.endm.macro get_irqnr_and_base, irqnr, irqstat, base, tmpmovr4, #INTBASE virtual address of IRQ registersldrirqnr, r4, #0x8 read INTMSKldrirqstat, r4, #0x10 read INTPNDbics irqstat, irqstat, irqnrbics irqstat, irqstat, irqnrbeq1002fmovirqnr, #01001:tstirqstat, #1bne1002f found IRQaddirqnr, irqnr, #1movirqstat, irqstat, lsr #1cmpirqnr, #32bcc1001b1002:.endm.macro irq_prio_table.endm(11) arch/arm/mm目录下的相关文件那里面则是移植好的有关arm的内存管理的代码。在mm-armv.c中,把init_maps-bufferabl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋撤除合同(标准版)
- 原告追加合同(标准版)
- 安全用电培训记录内容课件
- 2025年电能表及配件项目规划申请报告范文
- 洪水海啸安全知识培训课件
- 安全生教育培训管理课件
- 2025年步步为营英文试卷及答案
- 法院安全文明驾驶培训课件
- 法考课件学习建议
- 德州机工考试试题及答案
- 2024-2025学年山东省青岛五十八中高一(上)第一次月考数学试卷(含答案)
- PANTONE国际色卡CMYK色值对照表3
- DL∕T 5371-2017 水电水利工程土建施工安全技术规程
- TD/T 1057-2020 国土调查数据库标准(正式版)
- 健康教育狂犬病知识讲座
- 应急救援的现场医疗急救
- 第一章 马克思主义自然观
- 2023-2024学年八年级物理上学期第一次月考考试版【测试范围:第一章、第二章】(人教版)
- 重大隐患判定标准解读课件
- j11pro固件爵聆数播说明书
- 电容式电压互感器试验指导方案
评论
0/150
提交评论