5.基于ARM的嵌入式程序设计ppt课件

上传人:工**** 文档编号:568632192 上传时间:2024-07-25 格式:PPT 页数:58 大小:9.24MB
返回 下载 相关 举报
5.基于ARM的嵌入式程序设计ppt课件_第1页
第1页 / 共58页
5.基于ARM的嵌入式程序设计ppt课件_第2页
第2页 / 共58页
5.基于ARM的嵌入式程序设计ppt课件_第3页
第3页 / 共58页
5.基于ARM的嵌入式程序设计ppt课件_第4页
第4页 / 共58页
5.基于ARM的嵌入式程序设计ppt课件_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《5.基于ARM的嵌入式程序设计ppt课件》由会员分享,可在线阅读,更多相关《5.基于ARM的嵌入式程序设计ppt课件(58页珍藏版)》请在金锄头文库上搜索。

1、ARM的嵌入式程序设计5.1 两种常见的ARM编译开发环境5.2 ARM汇编语言程序设计汇编语言程序设计5.3 嵌入式嵌入式C语言程序设计基础语言程序设计基础5.4 嵌入式嵌入式C语言程序设计实例语言程序设计实例5.5 嵌入式嵌入式C语言程序设计技巧语言程序设计技巧5.6 C与汇编语言混合编程与汇编语言混合编程5.7 基于基于Embest IDE for ARM 环境的软件开发实例环境的软件开发实例1;.5.1两种常见的ARM编译开发环境ADS/SDT IDE开发环境:它由ARM公司开发,使用了CodeWarrior公司的编译器; 集成了GNU开发工具的IDE开发环境:它由GNU的汇编器as、

2、交叉编译器gcc、和链接器ld等组成。 2;.5.2 ARM汇编语言程序设计汇编语言程序设计ARM汇编中的文件格式ARM汇编语言语句格式ARM汇编语言编程的重点ARM汇编程序实例3;.5.2.1ARM汇编中的文件格式ARM源程序文件(可简称为源文件)可以由任意一种文本编辑器来编写程序代码,它一般为文本格式。在ARM程序设计中,常用的源文件可简单分为以下几种:源程序文件文件名说明汇编程序文件*.S用ARM汇编语言编写的ARM程序或Thumb程序。C程序文件*.C用C语言编写的程序代码。头文件*.H为了简化源程序,把程序中常用到的常量命名、宏定义、数据结构定义等等单独放在一个文件中,一般称为头文件

3、。4;.5.2.2ARM汇编语言语句格式ARM汇编语言语句格式如下所示:symbolinstruction|directive|pseudo-instruction;comment其中:instruction为指令。 directive为伪操作。 pseudo-instruction为伪指令。 symbol为符号。 comment为语句的注释。 5;.ARM汇编语言程序格式ARM汇编语言是以段(section)为单位来组织源文件的。段是相对独立的、具有特定名称的、不可分割的指令或者数据序列。段又可以分为代码段和数据段,代码段存放执行代码,数据段存放代码运行时需要用到的数据。一个ARM源程序至少

4、需要一个代码段,大的程序可以包含多个代码段和数据段。6;.举例说明ARM汇编语言源程序的基本结构AREAEXAMPLE,CODE,READONLYENTRYstartMOVr0,#10MOVr1,#3ADDr0,r0,r1END本程序的程序体部分实现了一个简单的加法运算。7;.5.2.3ARM汇编语言编程的重点ARM数据处理操作设置条件码汇编语言子程序调用及返回跳转表思想ARM与Thumb之间的状态转换及函数的相调用8;.ARM数据处理操作ARM中数据的处理有以下三种形式:简单的寄存器操作立即数操作寄存器移位操作9;.设置条件码ARM的任何数据处理指令都能通过增加“S”操作码来设置条件码(N,

5、Z,C和V)。 条件执行条件执行ARM指令集不同寻常的特征是每条指令(除了某些v5T指令)都可以是条件执行的。 条件转移条件转移在程序中可以通过条件码的使用让微处理器决定是否进行转移,还可用来控制循环的退出。 10;.汇编语言子程序调用及返回 子程序的调用在ARM汇编语言中,子程序调用是通过BL指令来完成的。BL指令的语法格式如下:BLsubname其中,subname是被调用的子程序的名称。子程序的返回在返回调用子程序时,转移链接指令保存到LR寄存器(r14)中的值需要拷贝回程序寄存器PC(r15)。11;.跳转表思想在程序设计中,有时为使程序完成一定的功能,需要调用一系列子程序中的一个,而

6、决定究竟调用哪一个由程序的计算值确定。跳转表是解决该问题的有效方案。跳转表是利用程序计数器PC在通用寄存器文件中的可见性来实现的,如下例所示: 12;.ARM与Thumb间的状态转换及函数的相调用 状态切换的实现ARM/Thumb之间的状态切换是通过一条专用的转移交换指令BX来实现的。BX利用Rn寄存器中目的地址值的最后一位来判断跳转后的状态。当最后一位为0时,表示转移到ARM状态;当最后一位为1时,表示转移到Thumb状态,如下图所示。13;.ARM与Thumb间的状态转换及函数的相调用ARM/Thumb之间的函数调用在同一状态下的子程序调用,通常只需要一条指令实现调用:BLfunction

7、实现返回也只需要从LR恢复PC即可:MOVPC,LR 在不同状态下的子程序调用中,就需要进行状态之间的切换,需要考虑到以下几点:需要由BX来切换状态,因为BL不能完成状态切换。 需要在BX之前先保存好LR,BX不能自动保存返回地址到LR。需要用“BXLR”来返回,不能使用“MOVPC,LR”,返回时要仔细考虑保存在LR中最低位的内容是否正确。14;.5.2.4ARM汇编程序实例1.简单的ARM指令程序2.数据块复制 3.利用跳转表实现程序跳转ADS编译环境下的汇编代码与GNU编译环境下有较多不同点,主要是符号及伪操作的不同。15;.5.3 5.3 嵌入式嵌入式C语言程序设计基础语言程序设计基础

8、5.3.1C语言“预处理伪指令”在嵌入式程序设计中的应用5.3.2嵌入式程序设计中的函数及函数库5.3.3嵌入式程序设计中常用的C语言语句5.3.4嵌入式程序设计中C语言的变量、数组、结构、联合16;.5.3.1C语言“预处理伪指令”在嵌入式程序设计中的应用“预处理命令”可以改进程序设计的环境,提高编程效率,一般以#号打头 ,可分为以下三种 :文件包含宏定义条件编译17;.文件包含文件包含伪指令可将头文件包含到程序中,头文件中定义的内容包括符号常量、复合变量原型、用户定义的变量类型原型和函数的原型说明等。编译器编译预处理时用文件包含的正文内容替换到实际程序中。文件包含伪指令的格式#includ

9、e;标准头文件#include“头文件名.h” ;自定义头文件#include宏标识符18;.宏定义宏定义伪指令分为:简单宏、参数宏、条件宏、预定义宏及宏释放。简单宏:#define宏标识符宏体参数宏:#define宏标识符(形式参数表)宏体条件宏定义: #ifdef 宏标识符#ifndef宏标识符#undef宏标识符#define宏标识符宏体#define宏标识符宏体 #else#else#undef宏标识符#define宏标识符宏体 #define宏标识符宏体#endif#endif19;.条件编译条件编译伪指令是写给编译器的,指示编译器在满足某一条件时仅编译源文件中与之相应的部分。其格式

10、如右框中所示:#if(条件表达式1)#elif(条件表达式2)#elif(条件表达式n)#else#endif20;.5.3.2嵌入式程序设计中的函数及函数库函数是C语言程序设计的核心。一个较大的C语言程序一般是由一个主函数和若干个子函数组成,每个函数完成一个特定的功能。函数之间也可以相互调用。函数的格式函数的格式: : 定义性说明格式 : 存储类说明符存储类说明符 类型说明符类型说明符 修饰符修饰符 标识符标识符 (参数表)(参数表) 函数体函数体 原型说明格式 :extern extern 类型说明符类型说明符 修饰符修饰符 标识符(参数表)函数体标识符(参数表)函数体 21;.嵌入式程序

11、设计中的函数及函数库函数库是为了减少编程工作量,将一些常用的功能的函数放在函数库中供公共使用。它包括C的标准库函数,也包括一些用户自己编写非标准库。例如,44blib.h是根据基于S3C44B0X处理器的开发板及其功能模块编写的一个C语言函数库。它不属于C语言的标准库。22;.5.3.3嵌入式程序设计中常用的C语言语句C语言语句格式为:标号:语句;C语言语句很多,常用到的有以下几种:条件语句swith语句循环语句23;.5.3.4嵌入式程序设计中C语言的变量、数组、结构、联合 变量变量存储类型 类型说明符 修饰符 标识符 初值 ,标识符初值; 数组数组 一维数组:类型说明符标识符常量表达式初值

12、,初值,;char 标识符 =“字符串”; 二维数组:类型说明符 标识符mn 初值表,初值表; 指针数组和数组指针类型说明符*标志符常量表达式=地址,地址,;类型说明符 (*标志符) =数组标识符; 24;.嵌入式程序设计中C语言的变量、数组、结构、联合结构说明结构说明存储类说明符struct结构原型名类型说明标识符,标识符;类型说明标识符,标识符;标识符=初值表,标识符=初值表;25;.嵌入式程序设计中C语言的变量、数组、结构、联合联合说明联合说明存储类说明符union联合原型名类型说明符标识符,标识符;类型说明符标识符,标识符; 标识符=初值表,标识符初值表;26;.5.4 5.4 嵌入式

13、嵌入式C语言程序设计实例语言程序设计实例5.4.1S3VCE40开发板测试程序实例5.4.2嵌入式C语言程序编写的简单构架5.4.3Flash测试代码介绍27;.5.4.1 S3VCE40开发板的测试程序实例我们以S3VCE40开发板上的各个功能模块的整个测试程序为例,介绍如何运用C语言进行基于ARM的嵌入式程序设计。该程序完成的功能如下所示:1.实验板加电时数码管八段全亮;LED1、LED2轮流闪烁(频率近1Hz);使用PC键盘操作;串口终端输出信息如图:2.然后使用开发板上的PC键盘选择各部分功能测试操作,如下图: 28;.程序源代码介绍整个测试程序主文件main.c的代码构成图如下图所示

14、,由BootLoader启动程序进入C语言主函数main()入口。 29;.5.4.2嵌入式C语言程序编写的简单构架#include预编译指令个C语言代码,一般要用#include编译指令将所需要的头文件加到该程序中,这是很有必要的,尤其是对编写较大的程序代码时。随后是定义一些外部变量,并对程序中的函数进行声明。 主函数main()的编写; 在每一个C语言代码中,一定要有一个main()函数,在该函数中完成该程序文件所要完成的各个功能,一般是通过调用各个子函数来完成。当然,它也可以调用其他文件中的函数。 完成相应功能的各个功能函数的编写。各个函数之间可以相互调用。30;.5.4.3Flash测

15、试代码介绍下面给出功能测试程序中Flash测试程序的代码结构图:31;.5.5 嵌入式嵌入式C语言程序设计技巧语言程序设计技巧5.5.1变量定义5.5.2参数传递5.5.3循环条件32;.5.5.1变量定义 在变量声明的时候,最好把所有相同类型的变量放在一起定义,这样可以优化存储器布局。由下例可以看出: 对于局部变量类型的定义,使用short或char来定义变量并不是总能节省存储空间。有时使用32位int或unsinged int局部变量更有效率一些,如下图所示:变量定义中,为了精简程序,程序员总是竭力避免使用冗余变量。但有时使用冗余变量可以减少存储器访问的次数这可以提高系统性能。 33;.5

16、.5.2参数传递 为了使单独编译的C语言程序和汇编程序能够互相调用,定义了统一的函数过程调用标准ATPCS。ATPCS定义了寄存器组中的R0R3作为参数传递和结果返回寄存器,如果参数数目超过四个,则使用堆栈进行传递。内部寄存器的访问速度是远远大于存储器的,所以要尽量使参数传递在寄存器里面进行,即应尽量把函数的参数控制在四个以下。34;.5.5.3循环条件计数循环是程序中十分常用的流程控制结构,一般有以下两种形式:for for (loop=1loop=1;loop=limitloop New Workspace,系统弹出工程创建对话框 。在Project name编辑框中输入新建工程名led_

17、int,Location编辑框中输入保存该工程的目录路径C:EmbestIDEEV4510led_int。选择OK按钮,创建新工程led_int,集成环境将创建与工程同名的workplace和project。在工作区窗中选择右键菜单创建源文件夹并添加相关源文件 。 54;.工程的建立和配置 工程配置工程创建完成后,需要对工程进行配置,EmbestIDE才能正确的编译、链接和调试等。选择ProjectSettings菜单项,弹出工程配置对话框,如下图所示。工程配置包括处理器的选择、仿真器配置、调试配置、目录配置、编译配置、汇编配置、链接配置,工程配置是整个软件开发过程中非常关键的一步。55;.5

18、.7.5在RAM中调试软件 软件的调试既可以在ROM区也可以在RAM区完成,由于RAM区可以很方便地读写,访问速度高,因此软件开发过程中的调试只要硬件条件许可,都应该在RAM区完成。软件调试前需要完成以下几步:一编译链接工程一连接仿真器、评估板一程序下载56;.5.7.6软件的固化 在RAM中调试通过的程序与最终固化到电路板的Flash中的程序有所区别,需要做以下改动:在汇编器的预定义选项中设置ROM=1,或者直接在init.s文件中增加“.equROM”。在链接器的链接文件中选择ldscript.flash。重新编译程序。然后使用ElftoBin工具将led_int.elf文件转换成二进制指

19、令格式文件led_int.bin。最后使用EmbestFlashProgrammer将led_int.bin下载到电路板的Flash中,如图所示。57;.5.7.7程序在Flash中调试 程序在Flash中与在RAM中调试工程配置不同:一调试选项中不需要执行脚本文件,该工作在启动文件中完成,需要将连接后行为(Actionafterconnected)选项改为无(None);调试过程也有所不同:一连接仿真器后,无需再执行下载(Download)程序操作;一如果要从启动程序的入口开始调试程序,先必须执行复位(reset)命令,此时程序将停在零地址处;一程序在Flash中调试时最多可以设置两个硬件断点。58;.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号