《嵌入式系统技术》
- 格式:pdf
- 大小:251.36 KB
- 文档页数:8
嵌入式系统的输入输出技术嵌入式系统是指以特定应用为目的的计算机系统,它通常包含有限的资源和严格的时间约束。
嵌入式系统普遍应用于消费电子、医疗设备、交通运输、工业控制、航空航天等领域,其计算性能、功耗和体积等特征都需要满足特定的要求。
在嵌入式系统中,输入输出技术是一项非常关键的技术,它涉及到与外界交互的各种方式,例如键盘、显示器、传感器、执行器等等。
本文将介绍嵌入式系统的输入输出技术,包括串口、GPIO、SPI、I2C、USB等几种主要的技术。
串口技术串口是一种基于异步通信的通信方式,它采用了串行传输的方式,通常用于连接嵌入式设备和其他设备。
串口技术属于基础技术,它的优点是通用性强,成本低,使用简单。
常见的串口包括RS232、RS485、UART等等。
在嵌入式系统中,串口通常用于进行调试、控制和数据传输等。
GPIO技术GPIO是英文General Purpose Input/Output的缩写,它是数字电路的基本组成部分,主要用于控制和监测系统中的外设。
GPIO技术的优点是通用性强,支持多种操作方式,可以灵活的连接各种外设。
在嵌入式系统中,GPIO技术常被用于LED指示灯、开关、按钮、蜂鸣器等设备的驱动和输入输出。
SPI技术SPI是英文Serial Peripheral Interface的缩写,它是一种同步串行通信的方式,一般用于连接主控器和芯片外设,如存储器、传感器、显示器等。
SPI技术的优点是速度快,支持全双工通信,可以连接多个外设。
在嵌入式系统中,SPI技术常用于连接各种存储器、数字信号处理器、传感器等设备。
I2C技术I2C是英文Inter-Integrated Circuit的缩写,它是一种同步串行通信的方式,通常用于连接微控制器、EEPROM、实时时钟、传感器等芯片。
I2C技术的优点是速度比SPI慢,但是设备可以带有独立地址和多控制器书写能力,可以连接多个外设。
在嵌入式系统中,I2C技术被广泛应用于连接各种传感器、存储器、IO扩展器等设备。
《嵌入式系统的低功耗与可靠性技术研究》一、引言随着物联网、智能设备以及移动计算技术的快速发展,嵌入式系统作为各种智能设备的核心部分,其低功耗与可靠性问题逐渐成为了重要的研究课题。
在面对能源短缺、环境污染以及设备稳定性要求日益严格的今天,嵌入式系统的低功耗与可靠性技术显得尤为重要。
本文将详细探讨嵌入式系统的低功耗和可靠性技术的研究现状及未来发展趋势。
二、嵌入式系统低功耗技术研究1. 硬件低功耗设计硬件低功耗设计是嵌入式系统低功耗技术的关键。
设计者在硬件设计阶段应考虑采用低功耗芯片、合理的电源管理策略等手段降低系统的整体功耗。
此外,选择合理的元器件及封装方式也能有效降低功耗。
在设计中还可以使用动态电源管理技术,根据系统运行状态调整电源供应,以达到节能目的。
2. 软件优化软件优化是降低嵌入式系统功耗的另一重要手段。
通过优化算法、减少不必要的计算和通信等措施,可以有效降低系统的运行功耗。
此外,合理设计系统任务调度策略,根据任务优先级进行任务分配和调度,也可以实现功耗的降低。
3. 休眠与唤醒机制休眠与唤醒机制是降低嵌入式系统功耗的有效手段。
通过在系统空闲时进入休眠状态,可以有效降低系统的功耗。
当系统需要再次工作时,再从休眠状态唤醒,以恢复工作状态。
这种机制在嵌入式系统中得到了广泛应用。
三、嵌入式系统可靠性技术研究1. 硬件冗余与容错设计硬件冗余与容错设计是提高嵌入式系统可靠性的重要手段。
通过采用冗余硬件和容错技术,可以在系统出现故障时保证系统的正常运行。
例如,采用双机热备、三模冗余等技术,可以提高系统的可靠性和稳定性。
2. 软件容错与恢复技术软件容错与恢复技术是提高嵌入式系统可靠性的另一重要手段。
通过设计容错算法、实现软件故障的自恢复等功能,可以在软件出现故障时及时恢复系统的正常运行。
此外,通过定期更新和修复软件漏洞,也可以提高系统的安全性与稳定性。
3. 系统级可靠性设计系统级可靠性设计是提高嵌入式系统可靠性的综合手段。
《嵌入式技术及应用》课程标准一、课程概述嵌入式技术是当前工业自动化、智能设备、物联网等领域中广泛应用的一种技术。
本课程旨在让学生了解嵌入式技术的概念、特点、应用场景和发展趋势,掌握嵌入式系统的基本原理和实现方法,提高学生的实际操作能力和解决问题的能力。
二、课程目标1.掌握嵌入式系统的基本原理和实现方法,包括处理器、内存、外设、操作系统等方面的知识。
2.熟悉嵌入式系统的开发流程和方法,包括需求分析、系统设计、代码编写、测试、调试等环节。
3.能够根据实际需求,选择合适的嵌入式系统平台和应用软件,实现嵌入式系统的应用。
4.能够解决嵌入式系统开发中遇到的问题和故障,提高实际操作能力和解决问题的能力。
三、教学内容与要求1.嵌入式系统概述:介绍嵌入式系统的概念、特点、应用场景和发展趋势,让学生了解嵌入式系统的基本概念和背景知识。
2.处理器和内存:介绍嵌入式系统常用的处理器类型(如ARM、MIPS、X86等),以及内存的种类和特点,让学生了解嵌入式系统中的硬件基础。
3.外设接口:介绍嵌入式系统常用的外设接口(如USB、SPI、I2C、UART等),以及它们在嵌入式系统中的应用,让学生了解嵌入式系统中的外设接口技术。
4.操作系统:介绍嵌入式系统常用的操作系统(如Linux、QNX、uClinux等),以及它们的特点和应用场景,让学生了解嵌入式系统中的操作系统技术。
5.开发环境:介绍嵌入式系统的开发环境(如IDE、编译器、调试器等),以及如何使用它们进行开发,让学生掌握嵌入式系统的开发工具和环境。
6.应用开发:通过实例项目,让学生掌握如何根据实际需求选择合适的嵌入式系统平台和应用软件,实现嵌入式系统的应用,并掌握如何进行测试和调试。
7.问题解决:通过案例分析,让学生了解在嵌入式系统开发中遇到的问题和故障,并掌握如何分析和解决这些问题,提高学生的实际操作能力和解决问题的能力。
四、教学方法与手段1.理论教学与实践教学相结合:通过课堂讲解、案例分析、实践操作等方式,让学生全面了解嵌入式技术的原理和应用。
嵌入式系统应用技术的研究与开发嵌入式系统是一种电子计算机系统,它是特别设计用于执行特定功能的计算机系统。
这种系统常用于控制和监视系统,如智能手机、数字相机、车载音频系统等。
为了实现嵌入式系统的工作,需要使用一系列技术和工具来进行开发和应用。
本文将探讨嵌入式系统应用技术的研究与开发,包括嵌入式系统基本原理和常用技术,以及嵌入式系统应用开发的方法和工具。
一、嵌入式系统基本原理嵌入式系统本质上是一个计算机系统,它具有计算、存储、控制和通信等功能。
由于嵌入式系统的特殊应用环境,它的体积、功耗、成本和性能等方面都有较高的要求。
嵌入式系统通常由下列组成部分组成:1. 主处理器/控制器主处理器/控制器是嵌入式系统的核心,负责计算、控制和管理系统的硬件和软件资源。
主处理器/控制器的类型和性能直接决定了系统的功能和性能。
常见的主处理器/控制器有ARM Cortex系列、Intel x86系列、MIPS系列等。
2. 存储器存储器用于存储系统程序和数据。
由于嵌入式系统的体积和功耗都有限制,因此存储器通常采用闪存、EEPROM、SRAM等低功耗、小体积的型号。
3. 输入/输出设备输入/输出设备用于与外界进行数据交换,如键盘、鼠标、显示屏、声卡、网卡等。
嵌入式系统通常使用专用的输入/输出设备,以满足应用需求和耗能要求。
4. 网络设备网络设备负责系统与外部网络通信,如以太网卡、无线网卡、蓝牙模块等。
网络设备的选择和配置决定了系统的通信速度和稳定性。
二、嵌入式系统常用技术1. 硬件设计嵌入式系统的硬件设计主要涉及主处理器/控制器的选择、连通性设计、电源管理等方面。
硬件设计的质量和性能直接决定了嵌入式系统的稳定性和能耗水平。
2. 软件开发嵌入式系统的软件开发主要涉及核心程序设计、驱动程序编写、通信协议实现等方面。
软件开发的质量和可靠性直接决定了嵌入式系统功能的实现和应用效果的稳定性。
3. 中间件中间件是嵌入式系统开发中常用的技术。
《嵌入式技术》课程标准一、课程说明二、课程定位本课程是应用电子技术专业无人机应用技术方向的核心课程、专业必修课程。
先修课程是电子技术基础、单片机原理及应用等课程,后续课程无人机飞行训练、无人机操控。
本课程通过项目式任务驱动方式,采取一体化教学方法,培养学生从事嵌入式技术生产、调试、维护的能力、具备上岗的基本综合专业能力以及可持续发展的社会能力。
三、设计思路本课程是应用电子技术专业无人机应用技术方向的核心课程,是一门实践性强的理论结合实践的课程,要求学生学习本课程之前掌握电子技术、单片机理论知识,且有一定的动手能力即理论联系实践解决实际问题的能力。
本课程的学习按照工学结合的学习模式,以任务为载体,贯彻“做、学、教”的一体化项目教学模式的指导思想,运用项目教学法编制教学项目,使学生“一教就懂,一学就会,一做就成”,符合高职学生的知识水平、能力水平以及职业岗位的需求,充分运用互联网+教育信息化,在网络中开设网络课程及MOOC,为学习后续课程及从事无人机行业打下良好基础。
四、课程培养目标1.专业能力(1)掌握嵌入式系统中硬件层、硬件抽象层、系统软件、应用软件层;312(2)掌握嵌入式开发流程、开发模式;(3)了解嵌入式系统的特点、发展趋势;(4)掌握嵌入式系统的学习方法,了解软件的下载、安装、编程、调试的能力,具备基本项目一定开发的能力。
2.方法能力(1)通过该门课程的学习,掌握嵌入式技术发展的技术,关注嵌入式技术的应用,思考实际应用,解决实际问题的能力,培养终生学习的能力;(2)具备参阅其它电子书籍的能力,具备较强的信息搜索能力;(3)良好的工作协调能力;(4)提高学习兴趣,掌握举一反三的学习方法。
3.社会能力(1)通过课程学习培养学生的信息意识和能力,提高专业实践能力;培养学生的信息意识和信息素养;(2)具有较强的事业心和责任感,具有良好的心理素质和身体素质。
具有理论联系实际的良好学风,具有发现问题、分析问题和解决问题的能力,以及理论联系实际的能力;(3)通过学习养成积极思考问题、自主学习和解决问题的习惯和能力;具备团队协作能力,吃苦耐劳、诚实守信的优秀品质;(4)通过学习学会收集、分析、整理参考资料的技能,培养对新技术信息的掌握能力;(5)爱岗敬业的职业态度与职业责任心。
2020年计算机三级考试《嵌入式系统开发技术》备考题及答案1.以下关于ARM处理器寄存器说法错误的是( )。
A.R0~R7在任何模式下均作为通用寄存器使用B.R0~R15寄存器的位数为32位C.作为链接寄存器LR的是R14D.堆栈指针sP使用的寄存器是R15答案:D2.以下关于ARM处理器说法错误的是( )。
A.大端格式是指数据的高字节存储在高字节地址中,低字节数据存放在低字节地址中B.ARM处理器支持8位、16位和32位数据处理C.MPU为ARM处理器的存储器保护单元D.MMU为ARM处理器的存储器管理单元答案:A3.关于ARM指令中的条件域,以下表述错误的是( )。
A.H1为无符号数大于为无符号数小于C.GT为带符号数大于D.LE为带符号数小于答案:D4.需要ARM指令完成的功能是:如果不相等,则进行减法,正确的指令是( )。
A.SUBVS R1,R2,R3B.SUBEQ R1,R2,R3C.SUBLS R1,R2,R3D.SUBNE R1,R2,R3答案:D5.以下ARM指令中源操作数属于立即寻址的指令是( )。
A.SUBCC R1,R2,R3B.LDRB R0,[R1]C.AND R1,R,R3D.MOV R1,#0x0B答案:D6.以下对伪指令的解释正确的是( )。
A.DCD0x23;在内存区域分配一个字节的内存空间并初始化为0x23B.CODEl6;伪指令通知编译器,其前的指令序列为16位的Thumb指令C.MyBaud EQU 9600;定义一个常量MyBaud的值为9600D.IMPORT Label;声明一个全局的标号Label,该标号可在其他文件中引用答案:C7.在ARM汇编语言程序设计中,用于子程序设计及调用,常用的指令是( )。
A.BL MyLabelB.BX MyLabelC.BLX MyLabelD.B MyLabel答案:A8.将R1寄存器中的指定位bit0和bit3清零,以下ARM汇编指令正确的是( )。
《嵌入式系统》课程教学大纲学分:3学时:64适用专业:电子信息、通信技术前导课程:电路分析基础、模拟电路、数字电路、高频电路、单片机原理、C语言后续课程:一、课程的性质和任务本课程围绕目前流行的32位ARM处理器和嵌入操作系统,讲述嵌入式系统的概念、软硬件组成、开发过程以及嵌入式应用程序和驱动程序的开发设计方法。
《嵌入式系统》是培养学生具有嵌入式系统的应用知识、嵌入式系统的初步分析能力和具有使用RTOS (实时操作系统)构成嵌入式系统的应用能力等方面的学科,是电子信息与计算机类或相关工科专业的一门专业课。
二、课程的教学基本要求本课程是一门综合性、实践性、应用性很强的专业课。
课程教学所要达到的目的是:使学生掌握嵌入式系统体系结构,嵌入式处理器结构(ARM架构为主),异常处理、系统控制过程、存储处理、ARM内部资源、各种I/O接口;嵌入式系统开发应用方法;实时多任务操作系统。
本课程将为学生今后从事嵌入式系统研究与开发打下坚实的基础。
三、教学内容和要求(一)理论教学内容和要求第一章:嵌入式系统的概况1、讲授内容:主要讲解嵌入式系统的定义、嵌入式系统的分类、嵌入式系统的组成及嵌入式系统的应用领域和发展趋势。
2、基本要求:使学生明确学习本课程的目的。
第二章:嵌入式系统的硬件基本知识1、讲授内容:1、ARM体系的硬件架构2、冯.诺依曼体系结构和哈佛体系结构3、RISC体系结构4、流水线技术2、基本要求:了解嵌入式系统的硬件基础。
第三章:嵌入式操作系统1、讲授内容:1、嵌入式操作系统的分类2、嵌入式操作系统的特点3、实时操作系统4、目前市场上流行的嵌入式操作系统2、基本要求:掌握嵌入式操作系统的分类和特点,明确实时操作系统的内核特点第四章:ARM架构的嵌入式微处理器1、讲授内容:目前基于ARM架构的嵌入式微处理器:I44B0,2410,LPC2000的架构及特点。
2、基本要求:要求掌握不同处理的的特点及使用场合。
嵌入式系统接口技术实际上,嵌入式系统本身是一个外延极广的名词,但凡与产品结合在一起的具有嵌入式特点的控制系统都可以叫嵌入式系统,而且有时很难以给它下一个准确的定义。
下面是 YJBSY的嵌入式系统接口技术,希望对你有帮助!(1)Flash存储器是一种非易失性存储器,根据结构的不同可以将其分为NOR Flash和NAND Flash两种。
(2)Flash存储器的特点:A、区块结构:在物理上分成假设干个区块,区块之间相互独立。
B、先擦后写:Flash的写操作只能将数据位从1写成0,不能从0写成1,所以在对存储器进行写入之前必须先执行擦除操作,将预写入的数据位初始化为1。
擦除操作的最小单位是一个区块,而不是单个字节。
C、操作指令:执行写操作,它必须输入一串特殊指令(NOR Flash)或者完成一段时序(NAND Flash)才能将数据写入。
D、位反转:由于Flash的固有特性,在读写过程中偶尔会产生一位或几位的数据错误。
位反转无法防止,只能通过其他手段对结果进行事后处理。
E、坏块:区块一旦损坏,将无法进行修复。
对已损坏的区块操作其结果不可预测。
(3)NOR Flash的特点:应用程序可以直接在闪存内运行,不需要再把代码读到系统RAM中运行。
NOR Flash的传输效率很高,在1MB~4MB的小容量时具有很高的本钱效益,但是很低的写入和擦除速度大大影响了它的性能。
(4)NAND Flash的特点能够提高极高的密度单元,可以到达高存储密度,并且写入和擦除的速度也很快,这也是为何所有的U盘都使用NAND Flash作为存储介质的原因。
应用NAND Flash的困难在于闪存需要特殊的系统接口。
(5)NOR Flash与NAND Flash的区别:A、NOR Flash的读速度比NAND Flash稍快一些。
B、NAND Flash的擦除和写入速度比NOR Flash快很多C、NAND Flash的随机读取能力差,适合大量数据的连续读取。
《嵌入式系统技术》实训报告学期:日期:实训场所:二级学院信息工程学院班级姓名学号实验题目实训五、C语言控制LED灯(走马灯)1、实验目的z熟悉A DS 开发环境调试环境。
z掌握简单的A RM 汇编指令的使用方法。
z掌握S3C2440A 的I/O 控制寄存器的配置。
z掌握A RM 汇编指令和C语言相互调用的方法2、实验设备z PC 机、ARM 仿真器、2440 实验箱、串口线。
3、实验内容z熟悉A RM 开发环境的建立。
z使用A RM 汇编和C语言设置GPIO 口的相应寄存器。
z编写跑马灯程序。
4、实验原理C 程序与汇编程序相互调用规则为了使单独编译的 C 语言程序和汇编程序之间能够相互调用,必须为子程序间的调用规定一定的规则。
ATPCS ,即ARM ,Thumb 过程调用标准(ARM/Thumb Procedure Call Standard),是ARM 程序和Thumb 程序中子程序调用的基本规则,它规定了一些子程序间调用的基本规则,如子程序调用过程中的寄存器的使用规则,堆栈的使用规则,参数的传递规则等。
下面结合实际介绍几种A TPCS 规则,如果读者想了解更多的规则,可以查看相关的书籍。
1.基本ATPCS基本ATPCS 规定了在子程序调用时的一些基本规则,包括下面3方面的内容:(1)各寄存器的使用规则及其相应的名称。
(2)数据栈的使用规则。
(3)参数传递的规则。
相对于其它类型的ATPCS,满足基本A TPCS 的程序的执行速度更快,所占用的内存更少。
但是它不能提供以下的支持:ARM 程序和Thumb 程序相互调用,数据以及代码的位置无关的支持,子程序的可重入性,数据栈检查的支持。
而派生的其他几种特定的ATPCS 就是在基本ATPCS 的基础上再添加其他的规则而形成的。
其目的就是提供上述的功能。
2.寄存器的使用规则寄存器的使用必须满足下面的规则:(1) 子程序间通过寄存器R0~R3 来传递参数。
这时,寄存器R0~R3 可以记作A0~A3。
被调用的子程序在返回前无需恢复寄存器R0~R3 的内容。
(2) 在子程序中,使用寄存器R4~Rll 来保存局部变量。
这时,寄存器R4~R11 可以记作V1~V8。
如果在子程序中使用到了寄存器V1~V8 中的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值;对于子程序中没有用到的寄存器则不必进行这些操作。
在Thumb 程序中,通常只能使用寄存器R4~R7 来保存局部变量。
(3) 寄存器R12 用作子程序间scratch 寄存器,记作I P。
在子程序间的连接代码段中常有这种使用规则。
(4) 寄存器R13 用作数据栈指针,记作SP。
在子程序中寄存器R13 不能用作其他用途。
寄存器SP 在进入子程序时的值和退出子程序时的值必须相等。
(5) 寄存器R14称为连接寄存器,记作LR。
它用于保存子程序的返回地址。
如果在子程序中保存了返回地址,寄存器R14则可以用作其他用途。
(6) 寄存器R15 是程序计数器,记作PC。
它不能用作其他用途。
3.参数传递规则根据参数个数是否固定可以将子程序分为参数个数固定的(nonvariadic)子程序和参数个数可变的(variadic)子程序。
这两种子程序的参数传递规则是不同的。
(1)参数个数可变的子程序参数传递规则对于参数个数可变的子程序,当参数不超过4个时,可以使用寄存器R0~R3 来传递参数;当参数超过4个时,还可以使用数据栈来传递参数。
在参数传递时,将所有参数看作是存放在连续的内存字单元中的字数据。
然后,依次将各字数据传送到寄存器R0、R1、R2、R3 中,如果参数多于4个,将剩余的字数据传送到数据栈中,入栈的顺序与参数顺序相反,即最后一个字数据先入栈。
按照上面的规则,一个浮点数参数可以通过寄存器传递,也可以通过数据栈传递,也可能一半通过寄存器传递,另一半通过数据栈传递。
(2)参数个数固定的子程序参数传递规则对于参数个数固定的子程序,参数传递与参数个数可变的子程序参数传递规则不同。
如果系统包含浮点运算的硬件部件,浮点参数将按照下面的规则传递:·各个浮点参数按顺序处理。
·为每个浮点参数分配FP 寄存器。
·分配的方法是,满足该浮点参数需要的且编号最小的一组连续的FP 寄存器。
第一个整数参数,通过寄存器R0~R3 来传递。
其他参数通过数据栈传递。
(3)子程序结果返回规则子程序中结果返回的规则如下:·结果为一个32 位的整数时,可以通过寄存器R0 返回。
·结果为一个64 位整数时,可以通过寄存器R0 和R l 返回,依次类推。
·结果为一个浮点数时,可以通过浮点运算部件的寄存器f0、d0 或者s0 来返回。
·结果为复合型的浮点数(如复数)时,可以通过寄存器f0~fN 或者d0~dN 来返回。
·对于位数更多的结果,需要通过内存来传递。
4.C 语言函数和A RM 汇编语言函数间相互调用高级语言函数与汇编语言函数的混合调用也要遵循ATPCS 规则,保证程序调用时参数的正确传递。
在汇编程序中使用EXPORT 伪指令声明本子程序,使其它程序可以调用此子程序,而在C语言程序中使用extern 关键字声明外部函数(声明要调用的汇编子程序),即可调用此汇编子程序。
下面给出两个例子来介绍函数相互调用。
例 C 函数中调用汇编示例中汇编子程序strcopy 使用两个参数,一个表示目标字符串地址,一个表示源字符串的地址,参数分别存放R0,R1 寄存器中。
#include <stdio.h>extern void strcopy(char*d,const char*s) //声明外部函数。
即要调用的汇编子程序int mian (void){const char *srcstr= "First string-source";//定义字符串常量char dstsrt[] = "Second string-destination";//定义字符串变量printf( "Before copying:/n" );printf ( "'%s' \n `%s/n," srcstr,dststr) ;//显示源字符串和目标字符串的内容strcopy(dststr,srcstr) ;//调用汇编子程序,R0=dststr,R1=srcstrprintf( "After copying:\n" )printf ( "' %s' \n '%s\n," srcstr,dststr) ;//显示strcopy 复制字符串结果return(0);}被调用汇编子程序:AREA SCopy,CODE,READONL YEXPORT strcopy ;声明strcopy,以便外部程序引用strcopy;R0 为目标字符串的地址;R1 为源字符串的地址LDRB R2,[R1],#1 ;读取字节数据,源地址加lSTRB R2,[R0],#1 ;保存读取的1字节数据,目标地址加1CMP r2,#0 ;判断字符串是否复制完BNE strcopy ;没有复制完毕,继续循环MOV pc,1r ;返回END例汇编程序调用C程序汇编程序的设置要遵循ATPCS 规则,保证程序调用时参数的正确传递。
在汇编程序中使用IMPORT 伪指令声明将要调用的C程序函数。
在调用C程序时,要正确设置入口参数,然后使用BL 调用。
示例程序中使用了5个参数,分别使用寄存器R0 存储第1个参数,R1 存储第2个数,R2 存储第3个参数,R3 存储第4个参数,第5个参数利用堆栈传送。
由于利用了堆栈传递参数,在程序调用结果后要调整堆栈指针。
汇编调用C程序的汇编程序/*函数sum ()返回5个整数的和*/int sum (int a,lit b,int c,int d,int e){return(a+b+c+d+e);//返回5个变量的和}EXPORT CALLSUMAREA Example,CODE,READONLYIMPORT sum ;声明外部标号sum5,即C函数sum5() CALLSUMSTMFD SP!{LR} ;LR 寄存器堆栈ADD R1,R0,R0 ;设置sum 函数入口参数,R0 为参数a ADD R2,R1,R0 ;R1 为参数b,R2 为参数cADD R3,R1,R2,STR R3,[SP,#-4]! ;参数e要通过堆栈传递ADD R3,R1,R1 ;R3 为参数dBL sum ;调用sum(),结果保存在R0ADD SP,SP#4 ;修正SP 指针LDMFD SP,PC ;子程序返回END5、实验相关寄存器GPBCON――端口配置寄存器GPBDAT――端口数据寄存器GPBUP――端口上拉电阻使能寄存器6、实验电路图7、实验程序实现7.1利用C语言实现跑马灯程序/**** led_asm_c.c ****//*C 语言函数*//* 定义端口寄存器 */#define rGPBCON (*(volatile unsigned *)0x56000010) //Port B control#define rGPBDAT (*(volatile unsigned *)0x56000014) //Port B data#define rGPBUP (*(volatile unsigned *)0x56000018) //Pull-up control B/* 延迟程序 */extern void delay(int times);/* 主程序 */void xmain(void){rGPBCON= (rGPBCON & ~(0xff<<10)) | (0x55<<10);//GPB5-8 setoutputrGPBUP = (rGPBUP & ~(0xf<<5)) | (0xf<<5); //disable GPB pullupwhile(1){rGPBDAT=(rGPBDAT|(0xf<<5))& (~(0x1<<7));//GPB7 output 0delay(0x5000000);//调用汇编语言编写的延时程序rGPBDAT=(rGPBDAT|(0xf<<5))& (~(0x1<<8));//GPB8 output 0delay(0x5000000);//调用汇编语言编写的延时程序0rGPBDAT= rGPBDAT & ~(0x3<<7);//GPB7-8 output 0delay(0x5000000);//调用汇编语言编写的延时程序rGPBDAT= rGPBDAT|(0x3<<7);//GPB7-8 output 1delay(0x5000000);//调用汇编语言编写的延时程序}}7.2 ARM汇编指令编写的延时程序/**** delay.s ****/EXPORT delayAREA DELAY,CODE,READONLY ;该伪指令定义了一个代码段,段名为Init,属性只读;下面是延迟子程序delaysub r0,r0,#1 ;r0=r0-1cmp r0,#0x0 ;将r0 的值与0 相比较bne delay ;比较的结果不为0(r0 不为0),继续调用delay,否则执行下一条语句mov pc,lr ;返回END ;程序结束符8、实验步骤1. 连接好实验环境,将仿真器的一端通过并口连接到PC 机,将仿真器的另一端通过JTAG线连接到2440 实验箱的JTAG 接口。