接口技术_3嵌入式程序设计语言

上传人:杰猫 文档编号:122975454 上传时间:2020-03-08 格式:PPT 页数:112 大小:232KB
返回 下载 相关 举报
接口技术_3嵌入式程序设计语言_第1页
第1页 / 共112页
接口技术_3嵌入式程序设计语言_第2页
第2页 / 共112页
接口技术_3嵌入式程序设计语言_第3页
第3页 / 共112页
接口技术_3嵌入式程序设计语言_第4页
第4页 / 共112页
接口技术_3嵌入式程序设计语言_第5页
第5页 / 共112页
点击查看更多>>
资源描述

《接口技术_3嵌入式程序设计语言》由会员分享,可在线阅读,更多相关《接口技术_3嵌入式程序设计语言(112页珍藏版)》请在金锄头文库上搜索。

1、单击此处编辑母版标题样式 嵌入式接口技术 1 基于基于ARMARM的的 嵌入式系统接口技术嵌入式系统接口技术 广东省岭南职业技术学院 电子信息工程学院 主讲 陈卫东 单击此处编辑母版标题样式 嵌入式接口技术 2 第三章 嵌入式程序设计语言 3 回顾 1 处理器内核和处理器核的概念 2 ARM9微处理器的体系结构特点 3 ARM9的存储组织结构 4 ARM9存储相关的概念 5 ARM9微处理器的寻址方式 6 系统启动程序的汇编代码 基于ARM的嵌入式系统接口技术 4 学习目标与要求 1 了解ARM汇编器支持的伪操作和GNU ARM支持 的伪操作 2 了解ARM汇编程序的编程规则 3 掌握嵌入式C

2、语言的基本知识 4 了解嵌入式C语言程序和汇编程序混合编程的方 法 基于ARM的嵌入式系统接口技术 单击此处编辑母版标题样式 嵌入式接口技术 5 3 1 工作场景导入 6 3 1 1 工作场景一 分析初始化程序 l若要用程序控制ARM实验实验 箱上的硬件工作 需要对实验对实验 箱进进行初始化 初始化程序对实对实 验验箱都做了哪些设设置 分析一种ARM实验实验 箱 的汇编汇编 启动动代码码 基于ARM的嵌入式系统接口技术 7 引导问题 1 ARM汇编和GNU ARM支持的伪操作如何使 用 2 嵌入式C语言编程与普通的C语言相比 有哪 些特点 3 如何在程序中实现汇编和C语言混合编程 4 ARM汇

3、编如何调用C语言代码 基于ARM的嵌入式系统接口技术 8 3 1 2 工作场景二 ARM C语言程序 l编编写C语语言程序 用扫扫描显显示的方法 在六只数码码 管上显显示出0 1 2 3 4 5 编编写C语语言程序 用扫扫描显显示的方法 在六只数码码管上显显示 出0 1 2 3 4 5 基于ARM的嵌入式系统接口技术 9 引导问题 1 嵌入式C语言编程与普通的C语言相比 有哪 些特点 2 如何在程序中实现汇编和C语言混合编程 基于ARM的嵌入式系统接口技术 单击此处编辑母版标题样式 嵌入式接口技术 10 3 2 ARM汇编中的伪操作 11 3 2 ARM汇编中的伪操作 在ARM汇编语言程序中

4、有一些特殊的指令助记 符 与指令系统的助记符不同 它们没有相对应 的操作码 它们在源程序中的作用是为了完成汇 编程序做各种准备工作的 通常称这些特殊的指 令助记符为伪操作标识符 directive 它们所 完成的操作称为伪操作 基于ARM的嵌入式系统接口技术 12 3 2 ARM汇编中的伪操作 目前常见的ARM编译开发环境有两种 l一种是第一章介绍绍的ADS SDT IDE集成开发环发环 境 ARMASM 它由ARM公司开发发 使用了 CodeWarrior公司的编译编译 器 绝绝大多数windows下的 开发发者都在使用这这一环环境 它完全按照ARM的规规定 开发发 l另一种是集成了GNU开

5、发发工具的IDE集成开发环发环 境 GNU ARM ASM 它由GNU的汇编汇编 器as 交叉编编 译译器gcc 和链链接器ld等组组成 与ARMASM略有不同 注 无论是哪一种开发环境 无论用的哪一种汇编器 其中的ARM指令 是没有区别的 不同之处仅在于伪操作 类似于高级语言中的语法 格式的不同规定 基于ARM的嵌入式系统接口技术 13 AREA TEST1 CODE READONLY ENTRY CODE32 START MOV R0 1 MOV R1 1 REPEAT ADD R2 R1 1 MUL R3 R2 R1 ADD R0 R0 R3 ADD R1 R1 1 CMP R1 10

6、BLE REPEAT STOP B STOP END 例 代码一 基于ARM的嵌入式系统接口技术 14 例 代码二 section text x global start start MOV R0 1 MOV R1 2 repeat ADD R2 R1 1 MUL R3 R2 R1 ADD R0 R0 R3 ADD R1 R1 1 CMP R1 10 BLE repeat stop B stop end 基于ARM的嵌入式系统接口技术 15 比较上面完成同样功能的两段代码可以看到 其 中ARM汇编的指令是相同的 另外还有一些不同 的语句 而且这些语句一般对程序所完成的功能 没有影响 这些语句的

7、作用是为了完成汇编程序 做各种准备工作的 即伪操作 之所以完成同样 功能的程序代码的伪操作不同 是因为他们用的 编译开发环境不同 第一段代码是ARM汇编集成 开发环境所支持的伪操作 第二段代码是 GNUARM汇编集成开发环境所支持的伪操作 可见 不同的编译开发环境所使用的伪操作可能 有所不同 基于ARM的嵌入式系统接口技术 16 3 2 1 常用伪操作的分类 1 符号定义伪操作 符号定义伪操作用于定义ARM汇编程序中的 变量 对变量赋值及定义寄存器的别名等操作 常用的符号定义伪操作有如下4种 1 用于定义全局变量的GBLA GBLL和GBLS 2 用于定义局部变量的LCLA LCLL和LCLS

8、 3 用于对变量赋值的SETA SETL和SETS 4 为通用寄存器列表定义名称的RLIST 基于ARM的嵌入式系统接口技术 17 3 2 1 常用伪操作的分类 2 数据定义伪操作 数据定义伪操作用于为特定的数据分配存储单元 同时可完成已分配存储单 元的初始化 常用的数据定义伪操作有如下9种 1 DCB用于分配一片连续的字节存储单元并用指定的数据初始化 2 DCW DCWU 用于分配一片连续的半字存储单元并用指定的数据初 始化 3 DCD DCDU 用于分配一片连续的字存储单元并用指定的数据初始 化 4 DCFD DCFDU 用于为双精度的浮点数分配一片连续的字存储单元 并用指定的数据初始化

9、5 DCFS DCFSU 用于为单精度的浮点数分配一片连续的字存储单元 并用指定的数据初始化 6 DCQ DCQU 用于分配一片以8字节为单位的连续的存储单元并用指 定的数据初始化 7 SPACE用于分配一片连续的存储单元 8 MAP用于定义一个结构化的内存表首地址 9 FIELD用于定义一个结构化的内存表的数据域 基于ARM的嵌入式系统接口技术 18 3 2 1 常用伪操作的分类 3 汇编代码控制伪操作 汇编代码控制伪操作用于控制汇编程序的执行流 程 常用的汇编控制伪操作包括如下4种 1 IF ELSE ENDIF这三个符号连用 进行 条件汇编 2 WHILE WEND这二个符号连用 进行重

10、 复汇编 3 MACRO MEND这二个符号连用 定义一 个宏定义 4 MEXIT用来在宏结束前退出宏定义 基于ARM的嵌入式系统接口技术 19 3 2 1 常用伪操作的分类 4 信息报告伪操作 信息报告伪操作用于程序汇编指示 主要是在程 序调试阶段使用 常用的信息报告伪操作包括 如下4种 1 错误信息报告伪操作ASSERT 2 诊断信息报告伪操作INFO 3 列表选项设置伪操作OPT 4 插入文件标题伪操作TTL与SUBT 基于ARM的嵌入式系统接口技术 20 3 2 1 常用伪操作的分类 5 指令集类型标识伪操作 指令集类型标识伪操作用来告诉编译器所处理的 是32位的ARM指令还是16位的

11、Thumb指令 常用的指令集类型标识伪操作包括有两种 1 ARM或CODE32指示编译器将要处理的是 32位的ARM指令 2 THUMB或CODE16指示编译器将要处理的 是16位的Thumb指令 基于ARM的嵌入式系统接口技术 21 3 2 1 常用伪操作的分类 6 其他伪操作 ARM汇编中还有一些其他的伪操作 在汇编程序中经常会被使用 包括以下几种 1 AREA用于定义一个代码段或数据段 2 ALIGN用于使程序当前位置满足一定的对齐方式 3 ENTRY用于指定程序入口点 4 END用于指示源程序结束 5 EQU用于定义字符名称 6 EXPORT 或GLOBAL 用于声明符号可以被其他文件

12、引用 7 EXPORTAS用于向目标文件引入符号 8 IMPORT用于通知编译器当前符号不在本文件中 9 EXTERN用于通知编译器要使用的标号在其他的源文件中定义 但要在当前源文件中引用 10 GET 或INCLUDE 用于将一个文件包含到当前源文件 11 INCBIN用于将一个文件包含到当前源文件 基于ARM的嵌入式系统接口技术 22 3 2 2 常用伪操作的用法 1 定义常量或标号名称的伪操作 l 定义义常量或标标号名称的伪伪操作 类类似C语语言中的宏定义义 define 例如在第二章2 5 4节节例题题二中的语语句 用到了EQU伪伪操作 ARM EQU SETA 语语法格式 标标号名称

13、 EQU SETA expr type expr可以是32位整形常量 基于寄存器的地址值值 程序相对对 的地址 绝对绝对 地址 例 USERMODE EQU 0 x10 GNU equ 或 set 语语法格式 equ set 标标号名称 value同expr 表示数字常量或程序中的标标号 例 equUSERMODE 0 x10将常量0 x10定义义成符号USERMODE NumCount EQU 0 x40003000 定义变量NumCount 基于ARM的嵌入式系统接口技术 23 3 2 2 常用伪操作的用法 2 段属性定义的伪操作 l 段属性定义义 用于定义义一个代码码段或数据段 或开始一

14、个 新的代码码段或数据段 例如在3 2节节的两段代码码中的语语句 l 段是不可分的已命名独立代码码或数据块块 由链链接器处处理 在汇编汇编 程序中常常都要用到段属性定义义 ARM AREA 语语法格式 AREA 段名 属性 属性 例如 AREA M1TOM2 DATA READWRITE 定义义数据段 AREA TEST1 CODE READONLY 第一段代码中 ARM汇编 定义段属 性 section text x 第二段代码中 GNU汇编 定义段属性 基于ARM的嵌入式系统接口技术 24 3 2 2 常用伪操作的用法 GNU section 语语法格式 section 段名 标标志 标标

15、志 各段有缺省标标志 ELF格式允许许的段标标志如表3 1所示 l 表3 1 ELF格式允许许的段标标志 l GNU汇编汇编 中 有些段名是汇编汇编 系统预统预 定义义的 如 text 代码码 段 data 初始化数据段 bss 未初始化数据段等 每个段以 段名开始 以下一个段名或者文件结结尾为结为结 束 l 也可以不使用系统预统预 定义义的段名 而通过过上面的伪伪操作自定义义 一个段 例如 section mysection 自定义义数据段 段名为为 mysection 含义 a允许段 w可写段 x执行段 基于ARM的嵌入式系统接口技术 25 3 2 2 常用伪操作的用法 3 声明程序的入口

16、点伪操作 l 声明程序的入口点伪伪操作 用于指定程序的入口点 例 如在3 2节节的两段代码码中的语语句 ARM ENTRY 语语法格式 ENTRY GNU start 语语法格式 start ENTRY 第一段代码码中 ARM汇编汇编 入口点声明 start 第二段代码中 GNU汇编 入口点声明 基于ARM的嵌入式系统接口技术 26 3 2 2 常用伪操作的用法 4 源程序结尾标识伪操作 l源程序结结尾标识标识 用于通知汇编汇编 程序它已到达 源文件的末尾 例如在3 2节节的两段代码码中的语语 句 ARM END 语语法格式 END GNU end 语语法格式 end常常省略不用 END 第一段代码中 ARM汇编结 尾标识 end第二段代码中 GNU汇编结 尾标识 基于ARM的嵌入式系统接口技术 27 3 2 2 常用伪操作的用法 5 指令集类型标识伪操作 l 指令集类类型标识伪标识伪 操作 用来告诉编译诉编译 器所处处理的是32 位的ARM指令还还是16位的Thumb指令 例如在3 2节节的第 一段代码码中的语语句 CODE32 ARM ARM CODE32 THUMB CODE16

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

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