第一篇:ARM嵌入式基础教程知识点总结
1、举出书本中未提到的嵌入式在每种异常模式下都有一个对统:嵌入式μCLinux、Windows 系统的例子:红绿灯控制,数字应的物理寄存器——程序状态CE、VxWorks、μC/OS-II 空调,机顶盒、键盘、鼠标、扫保存寄存器SPSR。当异常出现
18、ARM是什么样的公司?它是描仪 时,SPSR用于保存CPSR的状态,一家微处理器行业的知名企业,2、嵌入式系统:嵌入到对象体以便异常返回后恢复异常发生该企业设计了大量高性能、廉系中的专用专用计算机应用系时的工作状态。价、耗能低的RISC处理器。特统。特点:嵌入性、内含计算机、12、ARM7TDMI 产生异常的条点是只设计芯片,而不生产。它专用性。件?ARM的异常有哪几种,各进将技术授权给世界上许多著名
3、嵌入式处理器:为完成特殊入何种工作模式?他们退出各的半导体、软件和OEM厂商,并的应用而设计的特殊目的的处采用什么指令? 提供服务。理器。嵌入式处理器分为三类:答:当正常的程序被暂时中止,19、RISC是精简指令集计算机的1)注重尺寸,能耗,价格2)关处理器就进入异常模式。1)复缩写。CISC是复杂指令集计算机注性能3)关注全部四个需求。位异常(管理模式);2)未定的缩写。集体分为四类:嵌入式微处理义指令异常(未定义模式);3)20、ARM处理器核:ARM7系列、器、嵌入式微控制器、嵌入式DSP 软件中断异常(管理模式);4)ARM9系列、ARM10系列、ARM1130、寄存器CPSR,SPSR的功能
各是什么?
答:1)CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。所有处理器模式下都可以访问当前的程序状态寄存器CPSR。2)在每种异常模式下都有一个对应的物理寄存器——程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存 CPSR的状态,以便异常返回后恢复异常发生时的工作状态。
31、LPC2000系列ARM7微控制器具有哪两种低耗模式?如何降处理器、嵌入式片上系统
4、嵌入式操作系统:是操作系统的一种类型,是在传统操作系统的基础上加入符合嵌入式系统要求的发展而来的。首先,嵌入式实时操作系统提高了系统的可靠性。其次,提高了开发效率,缩短了开发周期。再次,嵌入式实时操作系统充分发挥了 32 位 CPU 的多任务潜力。
5、ARM7TDMI中的T高密度 16 位的Thumb指令集扩展、D支持片上调试、M64 位乘法指令、Embedded ICE 硬件仿真功能模块
6、ARM7TDMI采用三级流水线(取指 译码 执行)。存储器编址方式:使用了冯·诺依曼结构,指令和数据共用一条32 位总线。
7、处理器模式指的是处理器在执行程序时在不同时刻所处的不同状态,处理器状态指的是处理器当前所执行的指令集。
8、ARM的处理器模式:用户模式(usr)-正常程序执行的模式。快中断模式(fiq)-FIQ异常响应时进入此模式。中断模式(irq)-IRQ异常响应时进入此模式。、管理模式(svc)-系统复位和软件中断响应时进入此模式。中止模式(abt)-用于虚拟存储及存储保护。未定义模式(und)-未定义指令异常响应时进入此模式。系统模式(sys)-与用户类似,但有直接切换到其它模式等特权。状态:ARM状态,32 位,这种状态下执行的是字方式的ARM 指令。Thumb状态,16 位,这种状态下执行半字方式的 Thumb 指令。
9、堆栈指针R13(SP):用于保存堆栈的出入口地址,保存待使用寄存器的内容。链接寄存器R14(LR):当使用BL指令调用子程序时返回地址将自动存入R14中;当发生异常时,将R14对应的异常模式版本设置为异常返回地址,其他时候为通用寄存器。程序计数器R15(PC):R15总是指向正在“取值”的指令。
10、ARM状态和Thumb状态的寄存器之间的关系:1)R0-R7相同;2)CPSR相同,Thumb状态无SPSR。Thumb状态下不能更新CPSR中的ALU标志位。Thumb指令对R8-R15寄存器访问受限。
11、ARM7TDMI(-S)寻址方式: 1)寄存器寻址2)立即寻址3)寄存器移位寻址4)寄存器间接寻址5)基址寻址6)多寄存器寻址7)堆栈寻址8).相对寻址.寄存器CPSR,SPSR的功能各是什么?答:1)CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。所有处理器模式下都可以访问当前的程序状态寄存器CPSR。2)指令预取中止异常(中止模式);系列、Intel的XScale系列和5)数据访问中止(中止模式);MPCore系列。6)快速中断请求(FIQ模式);
21、LPC2000系列器件有几种常7)外部中断请求(IRQ模式)。见的封装形式和其封装特点?异常返回指令:1)SWI,未定义常见的封装有64脚封装,144脚的返回:MOVS PC,R14;2)IRQ,FIQ,封装,功耗低,有多个32位定预取中止的返回:SUBS 时器,多达9个外部中断,16KPC,R14,#4;3)数据中止返回并字节静态RAM,1/128/256k字节重新存取:SUBS PC,R14,#8异常片Flash存储器,128为宽度接中断的优先级:复位(最高优先口加速器,4路10位ADC或8路级)--> 数据异常中止--->FIQ 10位ADC(64脚和144脚封装),---> IRQ--->预取指异常中止46或76~112个GPIO(64脚和--->SWI---->未定义指令(包括144脚封装)。缺协处理器)。
22、简要说明一下LPC2000系列
13、小端存储器组织是较高的有器件片内存储器的特点?片内效字节存放在较高的存储器地存储器分为片内Flash和片内静址,较低的有效字节存放在较低态RAM。片内Flash通过128位的存储器地址(同同小)。大端宽度的总线与ARM内核相连,具存储器组织是较高的有效字节有很高的速度,特有的存储器加存放在较低的存储器地址,较低速功能,可以将程序直接放在的有效字节存放在较高的存储Flash上运行。SRAM支持8位、器地址(正反大)。16位和32位的读写访问。
14、描述一下LPC2210的PO.14、23、存储器重映射是为了实现引P1.20、P1.26、BOOT1和BOOT0导块和异常向量表地址的固定。引脚在芯片复位时分别有什么重映射引导块,有利于用户调用作用?并简单说明LPC2000系列其中的某些程序,增加代码的可ARM7微控制器的复位处理流程。移植性;异常向量表重映射为了 P0.14的低电平强制片内引能让ARM内核通过访问0x0000~导装载程序复位后控制器件的0x003F地址访问到其他存储区操作,即进入ISP 状态。P1.20域的向量表。的低电平使 P1.25~P1.16复
24、LPC2000系列ARM7微控制器位后用作跟踪端口。P1.26的对向量表有什么要求(向量表中低电平使 P1.31~P1.26复位的保留字)? 后用作一个调试端口。当RESET 向量表中有一个空隙以确保软为低时,BOOT0 与BOOT1 一同控件能与不同的ARM结构兼容;表制引导和内部操作。引脚的内部中异常入口地址处放置的是跳上拉确保了引脚未连接时呈现转指令,已转向中断子程序。FIQ高电平。外部复位输入:当该引地址要放在向量表的最后。脚为低电平时,器件复位,I/O25、FLASH是128位宽度的接口,口和外围功能进入默认状态,处通过存储器加速模块提高其访理器从地址0 开始执行程序。复问速度。位信号是具有迟滞作用的TTL
26、FIQ、IRQ有什么不同?向量电平。IRQ和非向量IRQ有什么不同?
15、LDR/STR指令的偏移形式有FIQ是快速中断,具有最高优先哪4种?LDRB和LDRSB有何区级,中断处理转入FIQ模式;IRQ别? 是普通中断,优先级低于FIQ,1)零偏移;2)前索引偏移;3)中断处理转入IRQ模式。向量IRQ程序相对偏移;4)后索引偏移。支持16个向量IRQ中断,16个LDRB:读出指定地址的数据并存优先级,能为每个中断源设置服入指定寄存器,LDRSB:读出指务程序地址;非向量IRQ支持一定地址的数据,并高24位用符个非向量IRQ中断,所有中断都号位扩展,再存入指定寄存器。共用一个相同的服务程序入口
16、ARM7TDMI指令集包括1)ARM地址。指令集:指令32位,效率高,27、LPC2000系列芯片共有共有代码密度低,所有ARM指令都是4个外接中断输入,它们既可以可以有条件执行的。Thumb指令是IFQ也可以是IRQ。集:指令16位,代码密度高,28、LPC2000系列芯片常用的开Thumb指令仅有一条指令具备条发工具:ADS、IAR、JATG、ISP 件执行功能保持ARM的大多数性
29、嵌入式处理器的最小系统是能上的优势,是ARM指令集的子指提供嵌入式处理器运行所必集。须的条件的电路与嵌入式处理
17、广泛使用的三种类型的操作器共同构成的系统。嵌入式处理系统:多道批处理操作系统、分器的最小系统的基本电路包含:时操作系统以及实时操作系统。时钟系统、供电系统、复位及其常见的4种嵌入式实时操作系配置系统、存储器系统(可选)、调试测试系统(可选)。
低系统的功耗?空闲和掉电。目前大多数电路采用CMOS工艺,静态功耗很小,可以忽略,起主要作用的是动态功耗,因此降低功耗主要从降低动态功耗入手。低功耗设计技术:低功耗器件、低功耗电路形式、降低或动态改变处理器的时钟频率、降低持续工作电流、减少处理器工作时间、采用快速算法。
32、内部寄存器特点:ARM7TDMI处理器内部有37个用户可见的寄存器,31个通用32位寄存器,6个状态寄存器。这些寄存器不能在同一时间被访问,究竟何时才能访问上述寄存器完全取决于处理器状态和模式。
33、用户模式CPSR模式位的值:1000034、系统模式CPSR模式位的值:1111134、列举异常向量的向量地址。复位 0x00000000未定义 0x00000004软件中断 0x00000008
中止 0x0000000c中止(数据)0x00000010保留 0x00000014IRQ 0x00000018FIQ0x0000001c35、异常优先级顺序:复位数据中止FIQIRQ中止未定义 SWI36、最大中断延时27个周期,最小中断延时4个周期 N负标志位、运算结果的第31位值,记录标志设置的结果Z零标志位、如果标志设置操作的结果为0,则置位。C进位标志位、记录无符号加法溢出,减法无错位,循环移位。V溢出标志位、记录标志设置操作的有符号溢出。控制位:I、F、T、M【4:0】中断禁止位:I、F(I=1:禁止IRQ中断F=0:禁止FIQ中断)标志位:T反映处理器的运行状态。T=1时,程序运行Thumb状态,否则运行于ARM状态。模式控制位:M【4:0】决定了处理器的运行模式
总线就是各种信号线的集合,是计算机各部件之间传送数据、地址和控制信息的公共
路。总线的主要参数有:总线的带宽、总线的位宽、总线的工作时钟频率。
预分频功能:通过设置某个常量来控制pclk(定时器的时钟源)的分频。匹配功能:当定时器值等于预设的匹配值时,从引脚输出特定的信号。捕获功能:如果输入信号满足设定的要求,将触发捕获动作,将定时器的计数值保存到捕获寄存器中。
。除了用户模式外,其他模式均可视为特权模式。后五个为异常模式。
第二篇:实习总结-嵌入式ARM
实训总结
班级 卓越1301姓名***
通过这段时间的学习使我学到了很多知识,并且了解到ARM的应用以及对开发板的应用,为以后的学习奠定了一定的基础。
嵌入式系统一般定义为以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统。是将应用程序、操作系统和计算机硬件集成在一起的系统这是从技术角度。从系统角度上是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。
广义上讲,凡是带有微处理器的专用软硬件系统都可称为嵌入式系统。如各类单片机和DSP系统。这些系统在完成较为单一的专业功能时具有简洁高效的特点。但由于他们没有操作系统,管理系统硬件核软件的能力有限,在实现复杂多任务功能时,往往困难重重,甚至无法实现。从狭义上讲,我们更加强调那些使用嵌入式微处理器构成独立系统,具有自己操作系统,具有特定功能,用于特定场合的嵌入式系统。
嵌入式的应用也比较广泛涉及军事国防、工业控制、消费电子和网络。在家用方面更是数字电视、信息家电、智能玩具、手持通讯、存储设备的核心。
在ARM指令集中了解到ARM的寻址方式以及它的的特性,具有高效、快速的特点,还有Thumb指令集具有灵活、小巧的特点。
在这次实训中做了两个项目,一个是LED灯,实现LED灯的点亮是比较简单的,通过查找手册可以很快的了解到要使用的寄存器和方法,另一个项目是DS18B20这个比较复杂,除了要掌握对寄存器的使用,还要对了解对串口的初始化,读写字节等等。
感谢这次实训,通过这次的实训项目,使我大体了解制作项目的步骤,了解了嵌入式技术的掌握是需要一个过程的。实事求是的说,嵌入式技术的全面掌握是有相当难度的,通过积累和动手总会有收获的,从实验中也明白了一个大的项目并不是一个人可以完成的,团队协作很重要。
姓名:***
年级:卓越1301
2014-7-5
第三篇:哈工大ARM嵌入式系统考试知识点总结
接VIC部分
一旦产生IRQ中断,微控制器切换到IRQ模式,并跳转到向量表0x0018地址执行指令。一旦产生FIQ中断,微控制器切换到FIQ模式,并跳转到向量表0x001C地址执行指令,然后跳转到FIQ_Handler代码段。
第四篇:ARM嵌入式技术复习总结
第一章 1.嵌入式系统定义/概念:嵌入式系统就是嵌入到对象体中的专用计算机系统。三要素:嵌入、专用、计算机。嵌入性:嵌入到对象体系中,有对象环境要求,专用性:软、硬件按对象要求裁减,计算机:实现对象的智能化功能。广义的讲,一个嵌入式系统就是一个具有特定功能或用途的计算机软硬件集合体,即以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用对功能。可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统发展的最高形式——片上系统(SOC)2.嵌入式系统的特性:a.只执行特定功能;b.以微控制器、外围器件为中心,系统构成可大可小;c.有严格的时序性和稳定性要求;d.自动操作循环,等待中断控制;e.程序被烧写在存储芯片中。(开发时应注意的a.嵌入式系统是面向具体应用的产品b.嵌入式软件特征:具有实时性,高质量、高可靠,程序固化c.需要软硬件开发工具和系统软件d.需要应用专家参与开发e.嵌入式系统分散而不可垄断)3.嵌入式系统的分类:a.按表现形式分(硬件范畴):芯片级嵌入(含程序或算法的处理器)、模块级嵌入(系统中的某个核心模块)、系统级嵌入(完整系统并有嵌入软件)b.按实时性要求分(软件范畴):非实时系统(PDA)、实时系统(软实时系统:消费类产品。硬实时系统:工业和军工系统)4.嵌入式微处理器(发展趋势:经济性、微型化、智能化)主要分类: 微控制器(MCU)(51单片机)、微处理器(MPU)(ARM、PowerPC)、数字信号处理器(DSP)(一般用在快速执行算法,做控制比较困难)、混合处理器和片上系统(SOC)(结构简洁,体积小、功耗低,可靠性高,设计生产效率高。Smart XA)、可编程片上系统(SOPC)5.嵌入式系统组成:粗略划分:嵌入式处理器、外围设备、嵌入式操作系统(可选)、嵌入式应用软件。稍细划分:嵌入式处理器、外围设备、驱动程序、嵌入式操作系统、应用接口、嵌入式应用软件。6.嵌入式操作系统简介:a.嵌入式操作系统是支持嵌入式系统的操作系统,它是嵌入式应用软件的基础和开发平台。b.功能:进程调度、内存管理、设备管理、文件管理、中断管理、系统功能接口(API调用,如网络功能)、设备驱动。c.特点:系统可裁减、可配置,系统具有实时性,系统稳定、可靠。d.实时系统的定义:能够对外部事件做出及时响应的系统,响应时间要有保证。硬实时系统:对系统响应时间有严格的要求,如果系统响应时间不能满足,就会引起系统崩溃或致命的错误。软实时系统:对系统响应时间有要求,但是如果系统响应时间不能满足,它并不会导致系统出现致命的错误或崩溃,只是降低系统的吞吐量。e.几种主流的嵌入式操作系统:µC/OS-II:教学的免费、面向中小型嵌入式系统应用。Vxworks:具有可靠、实时、可裁减特性。WinCE:它是微软针对个人电脑以外的电脑产品所研发的嵌入式操作系统。Linux/µCLinux:免费、源码开放的操作系统,µclinux面向没有MMU的硬件平台。PalmOS :具有开放的操作系统应用程序接口(API),可让用户灵活方便地定制操作系统。
第二章1.ARM体系的特点:a.低功耗、低成本、高性能(3/5级流水线)。b.采用RISC体系结构。c.使用大量的寄存器(37个寄存器31个通用6个状态)d.高效的指令系统(Thumb指令与等价的ARM代码相比较可节省30~40%以上的存储空间)e.在保证高性能的前提下尽量缩小芯片面积、降低功耗;所有的指令都可以根据前面的执行结果决定是否被执行。2.ARM7采用3级流水线(是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行):取指(从程序存储器中取指令,放入指令流水线,占用存储器访问操作)、译码(指令译码,占用译码逻辑)、执行(执行指令/读写reg,占用ALU及数据路径)。一条指令有3个时钟周期的执行时间,但吞吐量是每个周期1条指令。PC 指向处于读取级的指令地址,而不是处于执行级的指令地址PC=当前执行指令地址+8。比较:ARM9是5级流水线(取指、译码、执行、存储器、写),哈佛架构,拥有独立的指令和数据总线;指令和数据的读取可以在同一周期进行。3级流水的ARM7内核是指令和数据总线复用的冯.诺依曼架构,指令和数据的读取不能在同一周期进行;5级流水线设计把寄存器读取、逻辑运算、结果回写分散在不同的流水当中,每一级流水的操作简洁,提升了处理器的主频。3.ARM微处理器的工作状态与模式:两种工作状态:ARM状态,此时处理器执行32位的字对齐的ARM指令;Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。状态切换:ARMTHUMB:当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法;当处理器处于Thumb状态时发生异常,则异常处理返回时,自动切换到Thumb状态。THUMBARM:当操作数寄存器的状态位为0时,执行BX指令;在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可使处理器切换到ARM状态。模式:用户模式:ARM处理器正常的程序执行状态,大部分任务执行在这种模式;快速中断模式:当一个高优先级中断产生时将会进入这种模式,用于高速数据传输或通道处理;外部中断模式:当一个低优先级中断产生时将会进入这种模式,用于通用的中断处理;管理模式:当复位或软中断指令执行时将会进入这种模式,供操作系统使用的一种保护模式;中止模式:当存取异常时将会进入这种模式,用于虚拟存储及存储保护;未定义模式:当执行未定义指令时会进入这种模式,软件仿真硬件协处理器;系统模式:供需要访问系统资源的操作系统任务使用,运行具有特权的操作系统任务。模式特点:1)用户模式特点:应用程序不能够访问受操作系统保护的系统资源;应用程序不能进行处理器模式的切换。2)系统模式特点:不属于异常模式,不是通过异常进入的。系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行模式的切换。它主要供操作系统使用。3)特权模式:除用户模式之外的工作模式,特点:应用程序可以访问所有的系统资源;可以任意地进行处理器模式的切换 4)异常模式:除用户模式、系统模式之外的五种模式,特点:以各自的中断或异常方式进入,并且处理各自的中断或异常。模式切换:软件控制进行切换(在特权模式下通过改变CPSR中的运行模式位[4:0]);通过外部中断和异常进行切换。4.数据类型: 8位、16位(半字对齐)、32位(字对齐)的有符号和无符号型。5.存储字数据:两种方法(大端、小端格式)。大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中;小端格式:与大端存储格式相反。缺省设置为小端格式。6.ARM状态下寄存器:程序计数器PC(R15)(ARM状态下,位[1:0]为0,位[31:2]用于保存PC;Thumb状态下,位[0]为0,位[31:1]用于保存PC)。R13常用作堆栈指针(SP)。R14也称作子程序连接寄存器或连接寄存器LR。当执行BL子程序调用指令时,可以从R14中得到R15的备份。寄存器R16用作CPSR(当前程序状态寄存器)。7.ARM/Thumb下寄存器区别:Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,Thumb和ARM状态下的R0~R7、CPSR和所有的SPSR是相同的;Thumb状态下的SP对应于ARM状态下的R13;Thumb状态下的LR对应于R14;Thumb状态下的PC对应于R15。8.异常:ARM有7种异常:复位、未定义指令、软件中断、指令预取中止、数据中止、IRQ、FIQ。异常响应:复位异常立即中止当前指令。其他:保存返回地址(将引起异常指令的下一条指令的地址保存到新的异常模式下的R14);保存当前状态寄存器CPSR的内容(将CPSR的内容保存到将要执行的异常中断对应的SPSR中);设置当前状态寄存器CPSR中的相应位(设置控制位使进入响应执行模式;禁止FIQ、IRQ);转去执行中断处理程序(取相应的中断向量给程序计数器PC)。返回:将返回地址装入PC ;恢复CPSR的值 ;清除中断屏蔽位。9.异常向量地址:复位-0x00000000(管理模式);未定义-0x00000004(未定义);软件中断-08(管理);中止(预取指令)-0c(中止);中止(数据)-10(中止);保留-0x00000014;IRQ-18(IRQ);FIQ-1C(FIQ)。10.异常优先级:复位>数据中止>FIQ>IRQ>预取指令中止>未定义中止、SWI
第五章1.编写应用程序都要用到的文件:a.INC目录下的文件: Def.h(基本数据类型重定义头文件U32,S16等)Option.h(是硬件系统重要设置头文件,修改系统的工作频率,总线宽度,一些重要地址的值)2410addr.h(是2410的寄存器的地址宏定义头文件)2410lib.h(调试时常用函数,还有一些其它的常用函数的头文件)b.SRC目录下的文件: 2410init.s 是2410初始化启动程序,由汇编语言写成2.ARM的启动过程—系统的初始化:包括两个级别的操作:系统运行环境初始化、应用程序初始化。a.运行环境初始化(对于嵌入式应用系统来说,由于没有操作系统的支持,存放在ROM的代码必须进行所有的初始化工作):①设置初始入口点(初始入口点是映象文件运行时的入口点,每个映像文件只有一个唯一的初始入口点,它保存在ELF头文件中。初始入口点必须位于映像文件的可执行区域;包含初始入口点的可执行域不能被覆盖,它的加载时地址和运行时地址必须是相同的)②设置中断向量表(如果系统运行时,地址0x00处为RAM,则系统初始化时必须重建异常中断向量表)③初始化存储系统④初始化数据栈指针⑤初始化关键的IO设备⑥设置中断昔日需要的RAM变量⑦使能异常中断(通过清除CPSR寄存器的中断禁止位实现)⑧切换处理器模式(系统还处于特权模式,如果下面要运行的应用程序是在用户模式下运行,就需要将处理器切换到用户模式。)⑨切换程序状态(所有的RAM内核都是从ARM状态开始执行的)b.应用程序初始化①将已经初始化的数据搬运到可写的数据区(这部分数据就是映像文件中的RW属性的数据)②在可写存储区建立ZI属性的可写数据区3.ARM的启动过程—初始化程序分析:①定义程序入口地址(由AREA伪操作定义: AREA Init,CODE,READONLYENTRY)②建立异常向量以及中断处理:1)建立中断向量入口2)建立中断服务程序入口地址表3)看门狗与中断禁止(当系统复位后,看门狗与中断要被首先禁止与被初始化,否则,当看门狗溢出产生的系统复位,引起中断,其它中断源产生中断时,CPU会进入一个未知的状态,出现程序跑飞等现象)4)系统时钟初始化5)电源低功耗模式6)内存控制器初始化(接口时序优化)7)模式的堆栈初始化地址(对程序中需要用到的每一种模式都要给SP定义一个堆栈地址)8)初始化用户执行环境(应用程序执行环境的初始化,就是完成必要的从ROM到RAM的数据传输和内容清零)9)呼叫主应用程序(IMPORT main或B main)4.ARM映像文件:arm映像文件其实就是可执行文件,包括bin或hex两种格式,可以直接烧到rom里执行。映像文件一般由域组成。域最多由三个输出段组成(RO、RW、ZI)组成,输出段又由输入段(代码和数据)组成。5.中断(☆注:异常包含5种模式:管理(复位、软件中断SWI)、中止(指令预取中止、数据中止)、未定义、快速中断FIQ、外部中断IRQ。中断分两类:SWI、硬件(FIQ、IRQ)。异常包含中断,中断都属于异常)中断仲裁:决定中断的优先级,当中断控制器接收到多个中断请求时,其内的优先级仲裁器裁决后向CPU发出优先级最高的中断请求信号或快速中断请求信号,中断系统有6个分仲裁器和1个总仲裁器,每一个仲裁器可以处理6路中断。在编写中断服务程序时需要满足如下要求:(1)不能向中断服务程序传递参数;(2)中断服务程序没有返回值;(3)中断服务程序应要尽可能短,来减少中断服务程序的处理时间,保证实时系统的性能。使用中断的步骤:(1)在使用中断前先设置好相应模式下的堆栈。如当发生快速中断FIQ 时,CPU进入“快中断模式”,这时使用“快中断模式”下的堆栈。(2)对于“Request sources”中的中断,将INTSUBMSK 寄存器中相应位设为0。(3)将INTMSK 寄存器中相应位设为O。(4)确定使用的方式:是FIQ 还是IRQ。如果是FIQ,则在INTMOD 寄存器设置相应位为1。如果是IRQ,则在PRIORITY 寄存器中设置优先
级(5)准备好中断处理函数:①中断向量:在中断向量设置好当FIQ 或IRQ 被触发时的跳转函数。②对于IRQ,在跳转函数中读取INTPND 寄存器或INTOFFSET 寄存器的值来确定中断源,然后调用具体的处理函数。③对于FIQ,因为只有一个中断可以设为FIQ,无须判断中断源。④中断处理函数进入和返回。(6)设置CPSR 寄存器中的F位对于FIQ,或I位对于IRQ,其值为0时,表示开中断。
第六章1.Nor Flash与Nand Flash比较:Nor flash:读速度高,而擦、写速度低,容量小,价格高。Nand flash:读速度不如Nor flash,但擦、写速度高,容量大,价格低。有取代磁盘的趋势。现在不少用户从Nand flash启动和引导系统(开始 4KB代码,BANK0中,自动复制到内部SRAM中,利用这4KB的代码把更多的代码从Nand flash中读到SDRAM中),而在SDRAM上执行主程序代码。2.串口介绍:(1)UART(通用异步串行口):有三个独立的异步串行I/O 端口,每个串口(11个专用寄存器,共39个)都可以在中断和DMA 两种模式下进行收发。UART支持的最高波特率达230.4kbps。每个UART 包含:波特率发生器(以PCLK或UCLK为时钟源)、接收器、发送器和控制单元。发送器和接收器各包含1个16 字节的FIFO 寄存器和移位寄存器。工作原理:(FIFO模式)当发送数据的时候,数据先写到FIFO 然后拷贝到发送移位寄存器,然后从数据输出端口(TxDn)依次被移位输出。被接收的数据也同样从接收端口(RxDn)移位输入到移位寄存器,然后拷贝到FIFO 中。使用FIFO与不使用FIFO的比较:前者是通过对FIFO状态寄存器UFSTATn的查询,确定进行收发,后者是通过对收/发状态寄存器UTRSTATn的查询,确定进行收发。中断或DMA请求: 7种中断请求事件是:溢出错误、奇偶校验错误、帧格式错误、传输中断信号、接收缓冲器数据就绪、发送缓冲器空、发送移位器空。分成3类:错误中断请求、接收中断请求、发送中断请求。RS232:全双工,采用负逻辑,单端传送,适合短距离传输;RS422:单工差分,两条线相对电压传送,至少需要四条线传输;RS485:半双工,单工差分,差分异步传输,适合远距离传输。(2)USB接口(通用串行总线)(49个reg):主要用于PC与外围设备互连,数据传输速度为:低速1.5Mb/s,全速12Mb/s,高速480Mb/s。主要由5部分组成:USB芯片及协议程序(固件)、控制器(控制USB芯片)、控制器程序、USB设备驱动程序、USB设备。USB总线主要特点:USB端口不区分设备,即插即用、可热插拔,传输速度高,易扩展、可扩展到127个USB设备,对设备提供电源,成本低等。(3)I2C串行总线接口:(4个reg)总线信号为两线,一个能够双向传输的数据线SDA、另一个能够双向传输的时钟线SCL。是信号线
2最少的串行总线。总线的特点:a.有一个IC总线接口。b.I2C总线的速度:可以标准速度传输(100kb/s),也可以高速传输(高达400kb/s)。c.可以查询方式
和中断方式工作。d.可以主设备身份传输,也可以从设备身份传输,因此共有4种操作模式(主机、从机发送、接收)。主要有5部分构成:数据收发寄存器、数据移位寄存器、地址寄存器、时钟发生器、控制逻辑等部分。系统要求:a.各个节点设备必须具有I2C接口功能;b.各个节点设备必须共地;c.两个信号线必须接上拉电阻。(4)I2S串行总线接口:a.1通道音频I2S总线接口,可基于 DMA方式工作;b.串行,每通道 8/16 位数据传输;c.发送和接收具备 128 字节(64 字节加64 字节)FIFO;d.支持 IIS 格式和 MSB-justified数据格式。(5)网络接口:支持8位、16位的微处理器,可以工作在I/0方式或Memory方式。片内集成了双工SA总线接口,可以直接和有双工SA总线的微处理器系统无缝连接。(6)JTAG接口:硬件仿真器可以通过JTAG接口对开发板进行在线仿真调试,也可以使用sjf2410等烧写工具通过JTAG接口对其扩展的Flash存储器进行编程。(7)SPI 接口:a.兼容 2 通道 SPI 协议 2.11版;b.发送和接收具有 2×8 位的22移位寄存器;c.可以基于 DMA或中断模式工作3.串口总结:芯片级(IC、IS、SPI、USB),系统级(网络接口、JTAG接口、USB、UAR T :RS232/485/422)。URAT
传输距离:RS232<485(差分)<光缆。4.看门狗:看门狗是一种电路,具有监视并恢复程序正常运行的功能,是一个定时器电路。基本原理:设一系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti,要求Ti>Tp。在程序运行一周期后,修改定时器的计数值,只要程序正常运行,定时器就不会溢出。若由于干扰等原因使系统不能在Tp 时刻修改定时器的计数值,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控作用。功能:定时器功能、复位功能。构成:时钟、看门狗计时器、看门狗数据寄存器、复位信号发生器、控制逻辑等。5.补充:(1)I/O端口寄存器:引脚配置寄存器、数据reg、引脚上拉reg、保留reg。(2)LCD(液晶显示器):是一种数字显示技术,可以通过液晶和彩色过滤器过滤光源,在平面面板上产生图象。组成:LCD显示屏、显示控制器、缓冲存储器。
第七章1.Linux系统及特点:Linux是一套免费使用和自由传播的类Unix操作系统。特点:自由软件,开放源代码;真正的多用户、多任务操作系统;可灵活裁剪配置;支持多种硬件平台;提供强大的管理功能;完全符合POSIX标准;具有丰富的图形界面;具有强大的网络功能。2.Linux组成:①Linux内核,功能是:进程管理(负责创建和撤销进程以及处理他们和外部世界的连接)、内存管理(内核在有限的可用资源上为每个进程都创建了一个虚拟寻址空间)、文件系统(内核在没有结构硬件上构造结构化的文件系统)、设备控制(内核必须为系统中的每件外设嵌入相应的驱动程序)、网络功能(处理路由和地址解析问题)。②Linux Shell:常用的有:Bourne Shell(sh,最初始的Shell,并且在每种Unix上都可以使用),C-Shelll(csh),Korn Shell(ksh),Bourne Again Shell(bash,大多数Linux系统的默认Shell)。③Linux文件结构:文件结构是文件存放在磁盘等存储设备上的组织方法,主要体现在对文件和目录的组织上,目录提供了管理文件的一个方便而有效的途径。Linux目录采用多级树形结构,用户可以浏览整个系统,可以进入任何一个已授权进入的目录,访问那里的文件,目录树只有一个,不管OS管理几个磁盘分区。④Linux实用工具,分三类:编辑器:用于编辑文件;过滤器:用于接收数据并过滤数据;交互程序:允许用户发送信息或接收来自其他用户的信息。
第八章1.交叉编译环境的软件工具1)Binutils:Binutils是一组针对目标系统的二进制开发工具,包括连接器、汇编器和其他用于目标文件和档案的工具。2)GCC:编译器,gcc不但能够支持C/C++语言的编译,而且能够支持FORTRAN JAVA ADA等编程语言。3)Glibc:Glibc库是提供系统调用和基本函数的C库,可以编译生成静态库和动态库。4)GDB:GDB可以调试C和C++语言程序,功能:a.启动被调试程序。b.让被调试的程序在指定的位置停住。c.当程序被停住时,可以检查程序状态(如变量值)。5)Crosstool:实际上是一个脚本,用于编译和测试大多数体系结构的各gcc和glibc的版本组合。2.Linux开发环境组建:可分别建立以LINUX为操作系统的开发环境或者在Windows下安装模拟Linux环境的软件。几种组建方案:① Windows+ Linux +目标系统(可以解决开发环境问题,但同时用两个操作系统,来回切换,浪费时间)、②Windows+cygwin+目标系统(cygwin是运行于windows下的linux模拟运行环境,但是在使用某些特殊功能时,需要添加一些补丁)、③Windows+虚拟机(Linux)+目标系统(在不破坏原有操作系统的基础上,虚拟一台‘真实’计算机,在它上面安装linux和操作真实的linux一样)、④Windows+Linux服务器 +目标系统(只需要一台linux服务器即可,对客户机和服务器的硬件要求没什么特别需求)。3.用户、Shell、Linux之间关系:Shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。Shell是用户和操作系统之间最主要接口。通过Shell,可以同时在后台运行多个应用程序,并且在把需要与用户交互的程序放在前台运行。4.makefile文件的作用:使用make 工具,可以将大型的开发项目分解成为多个易于管理的模块,make在执行时,需要一个命名为Makefile的文件。Makefile文件描述了整个工程的编译,连接等规则。Makefile说明了组成程序的各模块间的相互关系及更新模块时必须进行的动作,make按照这些说明自动地维护这些模块。在makefile(Makefile)中,自顶向下说明各模块之间的依赖关系及实现方法。
第九章1.BootLoader概念:系统上电之后,需要一段程序来进行初始化,如果它能将操作系统内核(从本地Flash或通过网络)复制到内存中运行,就称这段程序为Bootloader。其作用是,在系统上电时开始执行,初始化硬件设备、准备好软件环境,最后调用操作系统内核。2.两种操作模式:①启动加载模式,即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入;②下载模式,目标机上的Bootloader将通过串口连接或网络连接等通信手段从主机下载文件,这种模式通常在第一次安装内核与根文件系统时被使用,以后的系统更新也会使用Bootloader的这种工作模式。3.启动方式:①网络启动方式,使用这种启动方式之前,需要把Bootloader安装到板上的EPROM或者Flash中。Bootloader通过以太网接口远程下载Linux内核映像或者文件系统。②磁盘启动方式,传统的Linux系统运行在台式机或者服务器上,这些计算机一般都使用BIOS引导,并且使用磁盘作为存储介质,在硬盘的主引导区,需要一个Bootloader可以从磁盘文件系统中把操作系统引导起来。③Flash启动方式,Bootloader的入口位于处理器上电执行第一条指令的位置,Bootloader引导Linux内核,就是要把内核映像解压到RAM中去,然后跳转到内核映像入口执行,从而实现自举启动,与磁盘启动相似。4.种类与特点:Bootloader种类繁多,比如x86上有LILO、GRUB等;对于ARM架构的CPU,有U-Boot、Vivi等。特点:LILO是Linux磁盘引导程序,GRUB是GNU的LILO替代程序;ViVi支持串口下载功能,代码量小;U-boot通用引导程序,支持串口、网络下载功能,代码量大;Redboot支持串口、网络下载功能,代码量最大;Blob:支持串口、网络下载功能,代码量小5.基本原理:①操作模式:„ ②通信:目标机上的Bootloader一般可通过串口与主机之间进行文件传输,也可以通过以太网连接并借助TFTP协议来下载文件,这样传输更快; ③Bootloader 的功能与结构:由于Bootloader的实现依赖于CPU的体系结构,大多数Bootloader都分为stage1和 stage2两大部分。stage1通常包括以下工作:硬件设备初始化、为加载Bootloader的stage2准备RAM空间、拷贝Bootloader的stage2到RAM空间中、设置堆栈、跳转到stage2的C入口点。stage2的代码通常用C语言来实现,stage2 执行映像的入口点是用汇编语言写一段trampoline小程序,用这段trampoline小程序来作为main()函数的外部包裹。
补充:1.LCD屏的主要技术参数:(1)像素:显示屏上所能控制的最小单位(2)分辨率:分辨率指 LCD 上象素的数目3)色深:在某一分辨率下,每一个像点可以有多少种色彩来描述,单位是“bit”,色深和分辨率之积决定了显示缓存区的大小(4)刷新频率:图像在屏幕上更新的速度,也即屏幕上的图像每秒钟出现的次数,单位是赫兹(5)物理尺寸:LCD的外观尺寸对角线长度,单位为英寸
2.分散装载技术:ARM的连接器提供了一种分散加载机制,在连接时可以根据分散加载文件中指定的存储器分配方案,将可执行镜像文件分成指定的分区并定位于指定的存储器物理地址,当嵌入式系统在复位或重新上电时,在对CPU相应寄存器进行初始化后,首先执行ROM存储器的Bootloader代码,根据连接时的存储器分配方案,将相应代码和数据由加载地址拷贝到运行地址,定位在RAM存储器的代码和数据就在RAM存储器中运行,而不再从ROM存储器中取数据或取指令,从而大大提高了CPU的运行速率和效率。最常用的2种情况:(1)把中断程序作为一个单独的运行域,放在32位的RAM,(2)将启动代码以外的所有代码都复制到RAM中运行。
3.PWM:只对一方波序列信号的占空比按照要求进行调制,而不改变方波信号的其它参数,即不改变幅度和周期,因此脉宽调制信号的产生和传输,都是数字式的。只要带宽足够(频率足够高或周期足够短),任何模拟信号都可以使用PWM 来实现。应用:借助于微处理器,使用脉宽调制方法实现模拟信号是一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
第五篇:嵌入式系统ARM实验报告
南京邮电大学通信与信息工程学院
实验报告
实验名称:实验一基于ADS开发环境的设计
实验二嵌入式Linux交叉开发环境的建立 实验三嵌入式Linux环境下的程序设计
课程名称嵌入式系统B
班级学号B13010711 姓名马俊民
开课时间 2015/2016学年第1学期
实验一基于ADS开发环境的程序设计
一、实验目的
1、学习ADS开发环境的使用;
2、学习和掌握ADS环境下的汇编语言及C语言程序设计;
3、学习和掌握汇编语言及C语言的混合编程方法。
二、实验内容
1、编写和调试汇编语言程序;
2、编写和调试C语言程序;
3、编写和调试汇编语言及C语言的混合程序;
4、编写程序测试多寄存器传送指令的用法。
三、实验原理
ADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。现在常用的ADS版本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。
ADS用于无操作系统的ARM系统开发,是对裸机(可理解成一个高级单片机)的开发。ADS具有极佳的测试环境和良好的侦错功能,它可使硬件开发工作者更深入地从底层去理解ARM处理器的工作原理和操作方法,为日后自行设计打基础,为BootLoader的编写和调试打基础。
1.ADS软件的组成
ADS由命令行开发工具、ARM运行时库、GUI开发环境(CodeWarrior和AXD)、实用程序、支持软件等组成。
2.GUI开发环境
ADS GUI开发环境包含CodeWarrior和AXD两种,其中Code Warrior是集成开发工具,而AXD是调试工具。
使用汇编语言进行编程简单、方便,适用于初始化硬件代码、启动代码等。汇编语言具有一些相同的基本特征:
1.一条指令一行。
2.使用标号(label)给内存单元提供名称,从第一列开始书写。3.指令必须从第二列或能区分标号的地方开始书写。4.注释必须跟在指定的注释字符后面,一直书写到行尾。
在ARM汇编程序中,每个段必须以AREA作为段的开始,以碰到下一个AREA作为该段的结束,段名必须唯一。程序的开始和结束需以ENTRY和END来标识。嵌入式C语言设计是利用基本的C语言知识,面向嵌入式工程实际应用进行程序设计。为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则。ATPCS就是ARM程序和Thumb程序中子程序调用的基本规则。
四、实验过程与关键代码分析
1.创建项目工程
在File菜单中选择New命令,打开一个新建工程对话框。在Project选项卡下,选择ARM Executable Image, 然后在Project name文本框里输入项目名称,点击确定。弹出工程窗口。
选择File菜单中的New命令,选择File标签页,在File name文本框中输入要创建的文件名。汇编程序以.s结尾,c程序以.c结尾。在Location文本框中指定文件的存放位置,选中Add to Project,在Targets中选中DebugRel,单击确定关闭窗口。
2.用汇编语言设计程序实现10的阶乘
AREA EXAMPLE, CODE, READONLY ENTRY start MOV R0, #10 MOV R1, #1 LOOP MUL R0, R0, R1 SUB R0, R0, 1 CMP R0, #1 BHI LOOP END 在这个程序中,我们首先对R0和R1赋值,将R0作为一个变量,而R1作为一个存贮阶乘值的寄存器。在每进行一次乘法之后,将R0减1。同时在做完减法后进行判断,如果此时R0大于1,则返回继续乘法,否则结束程序,输出结果。
3.用调用子程序的方法实现1!+2!+3!+„+10!,代码如下: asmp.s
AREA JC, CODE, READONLY
EXPORT JCP
ENTRY JCP
ADD R3, R0, #1
MOV R2, #1
MOV R1, #1 LOOP MUL R0, R1, R2
MOV R1, R0
ADD R2, R2, #1
CMP R2, R3
BNE LOOP
NOP
NOP
MOV PC, LR
END
PROGC.c #include
int main(){ int res=0;int m=10;int i;for(i=1;i<=m;i++)
res=res+JCP(i);printf(“The result =%dn”,res);return 0;} 在这个程序中,主程序由c语言完成作求和,子程序由汇编语言写成作阶乘。
5.实现字符串的逆序复制TEXT1=“HELLO”=>TEXT2=“OLLEH”
AREA invstring, CODE, READONLY start
ADR R1,TEXT1
ADR R2,TEXT2
MOV R3, #0 LOOP
LDRB R0,[R1], #1
ADD R3,R3,#1
CMP R0,#0
BNE LOOP
SUB R1,R1,#2
LOOP1
LDRB R0,[R1], #-1
STRB R0,[R2], #1
SUB R3,R3, #1
CMP R3,#1
BNE LOOP1
MOV R5,#&55
TEXT1
TEXT2 NOP =“HELLO”,0 ALIGN =“OELLH” END
五、实验小结
在这次实验中,学会了如何使用汇编程序进行编程。对汇编程序编程一些基本的要求有了一定的了解,学习了C语言的语法和在其中调用汇编程序的方法。学会了利用CodeWarrior IDE开发C和ARM汇编代码。学会了在AXD中进行代码调试的方法和过程,对AXD的调试有初步的了解。,实验二嵌入式Linux交叉开发环境的建立
一、实验目的
1、掌握嵌入式Linux交叉开发环境的建立方法
2、学习和掌握Linux常用命令
3、学习和掌握vi编辑器的使用
二、实验内容
1、搭建嵌入式Linux交叉开发环境
2、熟悉Linux的常用命令
3、熟悉vi编辑器的常用命令
三、实验原理
Linux系统是UNIX系统的分支,是UNIX的微机版。Linux具有异常丰富的驱动程序资源,支持各种主流的硬件设备与技术。Linux包含了现代的UNIX操作系统的所有功能特性,这些功能包括多任务、虚拟内存、虚拟文件系统、进程间通信、对称所处理器、多用户支持等。
Vi编辑器是所有UNIX和Linux下的标准编辑器。它包含3种工作模式。嵌入式系统是专用的计算机系统,它对系统的功能、可靠性、成本、体积、功耗等有严格的要求。大部分嵌入式系统没有大容量存储设备,一般不能安装大型开发软件,系统的开发需要采用交叉开发模式。
四、实验过程与关键代码分析
实验用的是UP-NetARM2410-S试验箱,里面配有三星的芯片S3c2410X。打开电脑上VMWare软件,在Windows系统下启动虚拟机里的Linux系统。接着需要
1.宿主机的环境搭建
下载并运行VMWare,根据向导创建一台新虚拟机并选择Linux作为客户操作系统,再根据向导安装RedHat Linux 9.0。
2.虚拟机中启动Linux操作系统
使用root登陆,用户名为root,密码为123456。之后对共享文件设置进行调整:打开settings界面,打开shared folders功能,同时将路径设置到有课前下载的软件的目录下。
3.开发工具软件的安装(1)安装gcc 打开Linux后,打开终端窗口,在共享的目录下找到install.sh并运行,命令如下: ls./ install.sh 安装程序将自动建立/arm2410s目录,并将所有的开发软件包安装到/arm2410s 目录下,同时自动配置编译环境,建立合适的符号链接。安装完成后在目录/opt/host/armv4l/bin/下应该能看到主编译器。(2)配置PATH路径
vi.bash.profile 将里面PATH变量改为PATH=$PATH:$HOME/bin:/opt/host/armv41/bin/;存盘后执行
source.bash_profile 以后armv4l-unknown-linux-gcc将被自动搜索到
4.宿主机上的开发环境配置(1)配置IP地址
ifconfig eth0 192.168.0.121 命令配置了宿主机的IP地址。然后打开网络配置窗口,重新探测MAC地址。重新激活。(2)关闭防火墙
单击“Red”菜单→“系统设置”→“安全级别”→打开“安全级别配置”窗口,选择“无防火墙选项。”(3)配置NFS。
单击“Red”菜单→“系统设置”→“服务器设置”→“服务”,在“服务配置”窗口中勾选nfs,单击“开始”(4)NFS设置
单击“Red”菜单→“系统设置”→“服务器设置”→“NFS服务器”,打开“NFS服务器配置”窗口,设置NFS共享。
然后在NFS服务器中增加主机IP地址的链接许可和目录。完成配置。
5.目标机的信息输出
Windows系统下,“开始”→“所有程序”→“附件”→“通讯”→“超级终端”,新建一个通信终端。区号、电话号码随意输入。设置每秒位数为“115200”,数据位为“8”,无奇偶校验,停止位为“1”,无数据流控制。单击“确定”。
6.程序的运行
打开超级终端,启动Linux,屏幕显示:
[/mnt/yaffs] 在超级终端上执行挂载命令:
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 挂载成功后可执行程序。
五、实验小结
在这次实验中,学会建立Linux交叉开发环境,学会了ls和vi,cd等常用的Linux命令,并掌握了Vi编辑器的使用方法。同时知道了如何在搭建失败时寻找错误进行排错。
实验三嵌入式Linux环境下的程序设计
一、实验目的
1、掌握嵌入式Linux环境下的程序设计方法
2、学会编写Makefile文件
二、实验内容
1、熟悉嵌入式教学实验箱的使用
2、编写C程序和Makefile文件
3、编译程序产生可执行程序
4、完成主机的挂载和程序的执行
三、实验原理
在嵌入式Linux环境下的程序设计方法有一下几个步骤:
1.编写源程序
2.编写Makefile文件 3.编译程序
4.运行和调试程序
5.将生产的可执行文件加入文件系统。
前三个步骤在宿主机上完成,后面的步骤在目标机上完成。
四、实验过程与关键代码分析
1.建立工作目录
mkdir hello cd hello
2.编写源程序
用vi编辑器编辑Hello.c文件
vi Hello.c 在Vi中输入源程序如下:
#include
printf(“hello world n”);}
3.编写Makefile文件
vi Makefile 在vi中编辑Makefile文件如下:
CC= armv4l-unknown-linux-gcc EXEC = hello OBJS = hello.o CFLAGS += LDFLAGS+=-static all: $(EXEC)$(EXEC):(OBJS)$(CC)$(LDFLAGS)–o $@ $(OBJS)clean:
-rm –f $(EXEC)*.elf *.gdb *.o
4.编译程序
在hello目录下运行“make”来编译程序。
make clean
make 编译成功后,生成可执行文件Hello.o。
5.下载调试
在宿主机上启动nfs服务,并将/arms2410s设置为共享目录。接下来启动超级终端,建立通讯,挂载。
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 挂载成功后,进入/mnt/nfs,再进入/mnt/nfs/hello,直接运行刚刚编译生成的可执行文件Hello.o,查看运行结果
cd hello./hello 可以看见“Hello world”
只需要挂载一次便可,只要实验箱没有重启,就可以一直保持连接。反复修改、编译、调试,直至程序调试通过。
6.可执行文件加入文件系统
程序调试通过后,可以把可执行文件拖放到usr/bin目录下,然后使用mkcramfs制作工具生成新的文件系统。当系统启动后,就可以在相应目录下执行可执行程序hello.五、实验小结 在这次实验中,学会了在嵌入式Linux环境下设计程序。同时知道了如何对目标机进行挂载。以及如何在发现挂载不成功寻找错误进行修改。另外在编译文件时需要注意的也都有所了解。
实验四多线程程序设计
一、实验目的1、2、二、实验内容1、2、3、4、三、实验原理
四、实验过程与关键代码分析
五、实验小结
3+