4ARM嵌入式程序设计基础.ppt
文本预览下载声明
ARM嵌入式程序设计基础 ARM嵌入式程序设计与调试 –– 代码生成过程 ARM嵌入式程序设计与调试 –– 仿真调试 纯软件仿真 ARM嵌入式程序设计与调试 –– ADS1.2 集成开发环境的组成 ARM嵌入式程序设计与调试 –– 工程的编辑 建立一个工程 建立一个程序源文件,加入到工程中 设置编译连接控制选项 编译、连接工程 ARM嵌入式程序设计与调试 –– 工程的编辑 编译参数 连接参数 RO Base = 0RW Base = 0** Image Entry Point = 0使用底层初始化代码和库函数 ARM嵌入式程序设计与调试 –– 工程的调试 选择调试目标 纯软件仿真ARMulate 用JTAG连接真实硬件进行调试 运行调试 全速/单步函数/单步语句/断点 观察窗口 窗口---- 寄存器Rigisters/ 表达式观察Watch/ 变量Variables/ 存储器Memory/ 反汇编Disassembly ARM汇编语言程序的基本结构 简单的ARM程序 ARM汇编语言程序格式 ARM汇编语言是以段(section)为单位来组织源文件的。段是相对独立的、具有特定名称的、不可分割的指令或者数据序列。 段又可以分为代码段和数据段,代码段存放执行代码,数据段存放代码运行时需要用到的数据。一个ARM源程序至少需要一个代码段,大的程序可以包含多个代码段和数据段。 当编译器发现AREA伪操作时,确认一个段的开始;如果发现了下一个AREA伪操作,或者发现了END伪操作,则确认上一个段结束。 汇编语言文件的扩展名为s。一个文件由一个或多个段组成。文件的结尾处要使用伪操作END标识,告诉汇编器编译到此结束。 ARM汇编语言语句格式 ARM汇编语言伪指令 汇编伪指令用来控制汇编器处理汇编语言程序和产生目标代码的方式。 伪指令不是真正由处理器执行的指令代码,而是对汇编器发出的命令。编译过程结束时,伪指令的使命就随之结束。 汇编伪指令可以细分为伪操作和与ARM指令集相关的伪指令。 ARM指令集相关的伪指令是指ARM伪指令ADR,ADRL, LDR和NOP,它们在汇编时被替换成合适的ARM指令。 伪操作本身不产生指令代码,它们控制、帮助汇编器实现代码定位、变量定义、宏指令定义和有条件编译等。有时把ARM伪指令和汇编伪操作统称为伪指令。 ARM汇编语言程序的基本结构 –– 伪操作和宏指令 符号定义(Symbol Definition)伪操作 数据定义(Data Definition)伪操作 汇编控制(Assembly Control)伪操作 信息报告(Reporting)伪操作 其他(Miscellaneous)伪操作 ARM汇编语言程序的基本结构 –– 伪操作和宏指令 ARM汇编语言程序的基本结构 –– 伪操作和宏指令 ARM汇编语言程序的基本结构 –– 伪操作和宏指令 ARM汇编语言程序的基本结构 –– 伪操作和宏指令 ARM汇编语言程序的基本结构 –– 伪操作和宏指令 ARM汇编语言程序的基本结构 –– 伪操作和宏指令 ARM汇编语言程序的基本结构 –– 伪操作和宏指令 ARM汇编语言程序的基本结构 –– 伪操作和宏指令 ARM汇编语言程序的基本结构 –– 伪操作和宏指令 ARM汇编语言程序的基本结构 –– 伪操作和宏指令 ARM汇编语言的段 ARM汇编程序举例 ARM汇编程序举例 –– 条件执行和存储器访问 ARM汇编程序举例 –– if – else 结构 ARM汇编程序举例 –– for 循环结构 ARM汇编程序举例 –– switch 结构 ARM汇编程序举例 –– switch 结构 嵌入式C语言程序设计基础 头文件 .h 函数实现文件 .c 包含文件 入口函数 main() 一般函数 库函数 .lib .a 标准库函数 自定义库函数 嵌入式C语言程序设计基础 文件包含 #include stdio.h #include “def.h” 宏定义 #define max(a,b) ((a)(b)?(a):(b)) #define LEDADD (*(volatile char*)0 条件编译 #ifdef DEBUG debug(); #endif 嵌入式C语言程序设计基础 嵌入式C语言程序设计基础 嵌入式C语言程序设计基础 auto :自动存储类型,为局部变量,是在函数内定义的变量,仅在函数内可见,存放在存储器的栈中。 register:寄存器存储类型。可将频繁使用的变量放在通用寄存器中,避免访问存储器,加快处理速度。 exte
显示全部