嵌入式实验指导书(56份).doc

上传人:文库蛋蛋多 文档编号:2393776 上传时间:2023-02-17 格式:DOC 页数:31 大小:1.68MB
返回 下载 相关 举报
嵌入式实验指导书(56份).doc_第1页
第1页 / 共31页
嵌入式实验指导书(56份).doc_第2页
第2页 / 共31页
嵌入式实验指导书(56份).doc_第3页
第3页 / 共31页
嵌入式实验指导书(56份).doc_第4页
第4页 / 共31页
嵌入式实验指导书(56份).doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《嵌入式实验指导书(56份).doc》由会员分享,可在线阅读,更多相关《嵌入式实验指导书(56份).doc(31页珍藏版)》请在三一办公上搜索。

1、嵌入式系统设计实 验 指 导 书电子工程系2010年3月哈尔滨目 录实验一 ADS 1.2集成开发环境实验1实验二 汇编指令实验6实验三 C语言调用汇编实验9实验四 外部中断与GPIO输出控制实验11实验五 PWM输出实验14实验六 定时器实验17实验七 C/OS-移植实验19实验八 基于C/OS-的键盘与数码管显示实验29实验一 ADS 1.2集成开发环境实验一、实验目的1. 了解ADS 1.2 集成开发环境的使用方法二、实验仪器设备、材料1. 硬件:PC 机 一台2. 软件:Windows98/XP/2000 系统,ADS集成开发环境三、实验内容1. 建立一个新的工程。2. 建立一个C 源

2、文件,并添加到工程中。3. 设置文本编辑器支持中文。4. 设置编译链接控制选项。5. 编译链接工程。6. 调试工程。四、实验步骤(1)启动ADS1.2 IDE 集成开发环境,选择【File】-【New】,使用ARM ExecutableImage 工程模板建立一个工程,工程名称为ADS,见图1.1。图1.1 建立ARM 指令代码的工程(2)选择【File】-【New】建立一个新的文件TEST1.S,设置直接添加到项目中,见图1.2。输入如程序清单1.1 所示的代码,并保存,见图1.3。图1.2 新建文件TEST1.S图1.3 添加了TEST1.S 的工程管理窗口程序清单1.1 TEST1.S

3、文件代码(3)由于ADS 安装以后默认字体是Courier New,对于中文支持不完善,因此建议修改字体。选择【Edit】-【Perferences】,可以看见以下对话框,如图1.4所示。在Font 选项设置字体是Fixedsys,Script 是CHINESE_GB2312 。由于Tab 在不同文本编辑器解释不同,建议在Tab Inserts Spaces 前打勾,使Tab 键插入的是多个空格。图1.4 字体和Tab 设置(4)选择【Edit】-【DebugRel Settings】,在DebugRel Settings 对话框的左边选择ARM Linker 项,然后在Output 页设置链

4、接地址(见图1.5),在Options 页设置调试入口地址(见图1.6)。图1.5 工程链接地址设置图1.6 工程调试入口地址设置(5)选择【Project】-【Make】,将编译链接整个工程。如果编译成功,见图1.7,Errors & Warnings 对话框会报告编译错误为0,那么就可以对工程进行仿真。图1.7 编译错误和警告对话框(6)选择【Project】-【Debug】, 或者按下快捷键F5。IDE 环境就会启动AXD 调试软件,见图1.8。断点调试方法:首先设置断点,只需要在第6 行灰色区域双击鼠标即可,如果出现红色实心圆点,那么表示断点设置成功,然后选择【Execute】-【Go

5、】全速运行,可以发现程序停止在第6 行。还有一种比较方便的调试方法就是Run to Cursor,单击鼠标第8 行灰色区域,如果AXD 将第8 行高亮就表示设置成功,然后选择【Execute】-【Run to Cursor】运行到光标,可以发现程序停止在第8 行。通过断点调试可以观察ARM 寄存器数值变化,具体的操作方法在后面的实验会具体介绍。图1.8 AXD调试窗口实验二 汇编指令实验1 实验目的(1)了解ADS 1.2 集成开发环境及ARMulator 软件仿真。(2)掌握ARM7TDMI 汇编指令的用法,并能编写简单的汇编程序。(3)掌握指令的条件执行和使用LDR/STR 指令完成存储器

6、的访问。2 实验设备硬件:PC 机 一台软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境3 实验内容(1)使用LDR 指令读取0x40003100上的数据,将数据加1,若结果小于10 则使用STR 指令把结果写回原地址,若结果大于等于10,则把0写回原地址。然后再次读取0x40003100 上的数据,将数据加1,判断结果是否小于10周而复此循环。(2)使用ADS 1.2 软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor Registers)监视R0、R1 的值,打开存储器观察窗口(Memory) 监视0x40003100 上的值。4 实验预

7、习要求(1)仔细阅读参考文献1第4 章ARM 指令系统的内容。(2)仔细阅读产品光盘附带文档ADS 集成开发环境及仿真器应用或其它相关资料,了解ADS 工程编辑和AXD 调试的内容 (本实验使用软件仿真) 。5 实验步骤(1)启动ADS 1.2,使用ARM Executable Image 工程模板建立一个工程Instruction1。(2)建立汇编源文件TEST2.S,编写实验程序,然后添加到工程中。(3)设置工程链接地址RO Base 为0x40000000,RW Base 为0x40003000。设置调试入口地址Image entry point 为0x40000000。(6)编译链接工

8、程,选择【Project】-【Debug】,启动AXD 进行软件仿真调试。(7)打开寄存器窗口(Processor Registers),选择Current 项监视R0、R1 的值。打开存储器观察窗口(Memory) 设置观察地址为0x40003100,显示方式Size 为32Bit,监视0x40003100 地址上的值。说明:在Memory 窗口中点击鼠标右键,Size 项中可以选择显示格式为8Bit、16Bit 或32Bit,如图2.1 所示。可以单步运行程序,可以设置/取消断点,或者全速运行程序,停止程序运行,调试时观察寄存器和0x40003100 地址上的值。运行结果见图2.2。图 2

9、.1 Memory 窗口显示格式设置图 2.2 程序运行结果6 实验参考程序程序清单 2.1 汇编指令实验参考程序实验三 C语言调用汇编实验1 实验目的掌握在 C 语言程序中调用汇编程序,了解ATPCS 基本规则。2 实验设备硬件:PC 机 一台软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境3 实验内容在 C 程序调用汇编子程序,实现两个整数的加法运算。汇编子程序的原型为:uint32 Add(uint32 x, uint32 y),其中uint32 已定义为unsigned int。4 实验预习要求(1)仔细阅读ARM 公司的ATPCS 的相关文档,比如ATPC

10、S.PDF。(2)仔细阅读产品光盘附带文档ADS 集成开发环境及仿真器应用或其它相关资料,了解ADS 工程编辑和AXD 调试的内容。(本实验使用软件仿真)5 实验步骤(1)启动ADS 1.2,使用ARM Executable Image 工程模板建立一个工程ProgramC1。(2)建立源文件Startup.S、Add.S 和Test.c,编写实验程序,然后添加到工程中。(3)设置工程链接地址RO Base 为0x40000000,RW Base 为0x40003000。设置调试入口地址Image entry point 为0x40000000。(4)设置工程链接选项,位于开始位置的起始代码段

11、设置为Startup.o的Start段。(5)编译链接工程,选择【Project】-【Debug】,启动AXD 进行软件仿真调试。(6)在Test.c文件中的调用Add()的代码处设置断点,然后全速动行程序。(7)程序在断点处停止。使用Setp In 单步运行程序,观察程序是否转到汇编程序Add.S。(8)选择【Processor Views】-【Variables】)打开变量观察窗口,观察全局变量的值,单步/全速运行程序,判断程序的运算结果是否正确。6 实验参考程序C 语言调用汇编程序实验的参考程序见程序清单3.1。汇编加法函数代码见程序清单3.2。程序清单3.1 C语言调用汇编程序实验参考

12、程序程序清单3.2 汇编加法函数代码实验四 外部中断与GPIO输出控制实验1 实验目的(1)掌握向量中断控制器(VIC)的设置。(2)掌握外部中断引脚功能设置及外部中断的工作模式设置。(3)了解中断服务函数的编写。2 实验设备硬件:PC 机 一台,MagicARM2200-S 教学实验开发平台一套软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境3 实验内容设置 P0.20 脚为EINT3 功能,初始化为非向量中断,并设置为电平触发模式,然后等待外部中断。中断服务程序将蜂鸣器控制输出信号取反,然后等待中断信号的撤消,最后清除中断标志并退出中断。4 实验预习要求仔细阅读

13、参考文献1第5.4.6 节外部中断输入的说明,第5.8 节向量中断控制器的说明。5 实验步骤(1)启动ADS 1.2,使用ARM Executable Image for MagicARM2200 工程模板建立一个工程VICDef_C。(2)在user 组中的main.c 中编写主程序代码。(3)选用DebugInExram 生成目标,然后编译链接工程。(4)短接MagicARM2200-S 教学实验开发平台上的蜂鸣器跳线JP7,独立按键JP11。断开CF 卡跳线JP13、GPIO 接口J17,PS2 跳线JP4。(5)选择【Project】-【Debug】,启动AXD 进行JTAG 仿真调试

14、。(6)在中断服务程序中设置断点,全速运行程序,使EINT3 为低/高电平,即反复按下与释放KEY1。(7)单步/全速运行程序,观察程序是否正确运行,蜂鸣器是否蜂鸣。6 实验参考程序外部中断实验的参考程序见程序清单 4.1。程序清单 4.1 外部中断实验参考程序实验五 PWM输出实验1 实验目的掌握 PWM 功能,实现数模转换。2 实验设备硬件:PC 机 一台,MagicARM2200-S 教学实验开发平台一套软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境3 实验内容程序通过改变 PWM 占空比,使PWMDAC 端口输出步进升高的直流电压。4 实验预习要求(1)仔

15、细阅读参考文献1第5.15 节脉宽调制器(PWM)的说明。(2)仔细阅读本书第1 章的内容,了解MagicARM2200-S 教学实验开发平台的硬件结构,注意PWMDAC 部分的电路。5 实验步骤(1)启动ADS 1.2,使用ARM Executable Image for MagicARM2200 工程模板建立一个工程PWMDAC_C。(2)在user 组中的main.c 中编写主程序代码。(3)选用DebugInExram 生成目标,然后编译链接工程。(4)测量PWMDAC 测试圆孔的电压。(5)选择【Project】-【Debug】,启动AXD 进行JTAG 仿真调试。(6)全速运行程序

16、,用示波器或万用表测量电压。图 5.1 PWM连接电路6 实验参考程序数模转换实验的参考程序见程序清单 5.1。程序清单 5.1 数模转换实验参考程序实验六 定时器实验1 实验目的熟悉 LPC2000系列ARM7微控制器的定时器0/1 的基本设置及应用。2 实验设备硬件:PC 机 一台,MagicARM2200-S 教学实验开发平台一套软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境3 实验内容使用定时器 0 实现1 秒定时,控制蜂鸣器蜂鸣。采用软件查询方式等待定时时间到达。4 实验预习要求仔细阅读参考文献1第5.14 节定时器0 和定时器1 的说明。5 实验步骤(

17、1)启动ADS 1.2,使用ARM Executable Image for MagicARM2200 工程模板建立一个工程TimeBeep_C。(2)在user组中的main.c 中编写主程序代码。(3)选用DebugInExram生成目标,然后编译链接工程。(4)见图2.16,短接MagicARM2200-S 教学实验开发平台上的蜂鸣器跳线JP7。断开CF 卡跳线JP13、GPIO 接口J17。(5)选择【Project】-【Debug】,启动AXD 进行JTAG 仿真调试。可以全速运行程序,蜂鸣器会响一秒,停一秒,然后再响一秒依次循环。6 实验参考程序定时器实验的参考程序见程序清单6.1

18、。程序清单 6.1 定时器实验参考程序实验七 C/OS-移植实验1 实验目的(1) 掌握将C/OS-II 操作系统移植到ARM7 处理器的方法。(2) 了解C/OS-II 操作系统的基本原理和移植条件。2 实验设备硬件:PC 机 一台,MagicARM2200-S 教学实验开发平台一套软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境,C/OS-II 操作系统(V2.52)3 实验内容学习移植 C/OS-II 操作系统到ARM7 处理器,然后编写一个简单的多任务应用程序,实现LED 流水灯控制。4 实验预习要求(1) 仔细阅读参考文献4,了解C/OS-II 的组成和移

19、植相关的文件内容。(2) 仔细阅读参考文献1第35 章和第7 章的内容,了解ARM7 体系结构及其汇编编程,了解LPC2000 系列ARM7 微控制器的硬件结构(如向量中断控制器和定时器等)和C/OS-II 移植的相关说明。5 实验原理(1) C/OS-II 概述C/OS-II 是一个完整的、可移植、可固化、可剪裁的占先式实时多任务内核。C/OS-II是用ANSI C 语言编写,包含一小部分汇编代码,使之可以供不同架构的微处理器使用。C/OS-II 可以管理64 个任务,具有信号量、互斥信号量、事件标志组、消息邮箱、消息队列、任务管理、时间管理和内存块管理等系统功能。C/OS-II 软件体系结

20、构如图7.1 所示,由图可以看出,C/OS-II 包括以下3 个部分:C/OS-II 核心代码:包括10 个C 程序文件和1 个头文件,主要实现了系统调度、任务管理、内存管理、信号量、消息邮箱和消息队列等系统功能。此部分的代码与处理器无关。C/OS-II 配置代码:包括2 个头文件,用于裁剪和配置C/OS-II。此部分的代码与用户实际应用相关。C/OS-II 移植代码:包括1 个汇编文件、1 个C 程序文件和1 个头文件,这是移植C/OS-II 所需要的代码。此部分的代码与处理器相关。说明:移植代码的文件名不是固定的,但为了保持 C/OS-II 系统的一致性,文件名一般也不要改变(即OS_CP

21、U.H、OS_CPU_A.ASM 和OS_CPU_C.C)。图 7.1 C/OS-II 软件体系结构(2) C/OS-II 移植条件移植 C/OS-II 之前需要注意,目标处理器必须满足以下几点要求:处理器的 C 编译器能产生可重入型代码;处理器支持中断,并且能产生定时中断(通常为10100HZ);用 C 语言就可以开/关中断;处理器能够支持一定数量的数据存储硬件堆栈(可能是几千字节);处理器有将堆栈指针以及其它 CPU 寄存器的内容读出,并保存到堆栈或内存中去的指令。LPC2000 系列ARM7 微控制器可以满足第2、4 和5 点要求,使用ADS 1.2 的C 编译器可以满足第1、3 点要求

22、。(3) C/OS-II 移植步骤1) OS_CPU.H 的移植在 OS_CPU.H 文件中定义与处理器相关(实际上是与编译器相关)的数据类型,如BOOLEAN、INT8U、INT8S 等等。根据ADS 1.2 编译器的特性,定义代码可参考程序清单7.1。程序清单 7.1 OS_CPU.H与编译器相关的数据类型在 OS_CPU.H 文件中定义与处理器相关的宏,主要是进入临界区的OS_ENTER_CRITICAL 和退临界区的OS_EXIT_CRITICAL,定义代码可参考程序清单7.2。如程序清单7.2所列,将OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()定义为软

23、件中断函数,所以还要编写相应的软件中断处理代码(可以在OS_CPU_C.C 文件中编写)实现开/关中断。同样定义 OS_TASK_SW()为软件中断函数,并编写有相应的软件中断处理代码(调用OSIntCtxSw 函数)实现任务切换。程序清单 7.2 OS_CPU.H与处理器相关的宏2) OS_CPU_C.C 的移植在 OS_CPU_C.C 文件中,需要编写以下10 个简单的C 函数:OSTaskStkInit();OSTaskCreateHook();OSTaskDelHook();OSTaskSwHook();OSTaskIdleHook();OSTaskStatHook();OSTaskT

24、ickHook();OSInitHookBegin();OSInitHookEnd();OSTCBInitHook()。其中,9 个系统Hook 函数可以为空函数,也可以根据用户自己的需要编写相应的操作代码。任务栈结构初始化函数OSTaskStkInit,必须根据移植时统一定义的任务堆栈结构进行初始化,代码参考程序清单7.3。程序清单 7.3 OS_CPU_C.C函数OSTaskStkInit3) OS_CPU_A.S 的移植由于 ADS1.2 编译器默认汇编文件后缀名为“S”,所以移植代码OS_CPU_A.ASM 改名为OS_CPU_A.S。在 OS_CPU_A.S 文件中,需要编写以下4

25、个简单的汇编语言函数:OSStartHighRdy();OSCtxSw();OSIntCtxSw();OSTickISR()。其中,函数 OSCtxSw 不是必须的,但必须要定义好函数OS_TASK_SW(在OS_CPU.H中声明),以实现任务级任务切换。在 ISR(中断服务程序)中切换任务时会调用OSIntCtxSw 函数,代码参考程序清单7.4。程序清单 7.4 OS_CPU_A.S函数OSIntCtxSw启动 C/OS-II 是通过调用OSStart()实现,OSStart()最终调用函数OSStartHighRdy()运行多任务启动前优先级最高的任务。OSStartHighRdy()函

26、数的代码参考程序清单7.5。说明:在OS_CPU_C.C 文件已定义OSStartHighRdy(),此函数直接调用_OSStartHighRdy()。程序清单 7.5 OS_CPU_A.S函数OSStartHighRdy函数 OSTickISR 为系统时钟节拍中断函数,这需要使用到处理器的定时器和定时中断。为了达到集中地初始化硬件(定时器、中断和I/O 等)的目的,此函数可以在用户工程的启动代码文件中实现,参考程序清单7.6。说明:系统时钟节拍中断函数的名称并不是固定的,也并不一定要在 OS_CPU_A.S 文件中实现。程序清单 7.6 系统时钟节拍中断服务程序6 实验步骤(1) 连接Eas

27、yJTAG 仿真器和MagicARM2200-S,然后安装EasyJTAG 仿真器的驱动程序(若已经安装过,此步省略)。(2) 为ADS1.2 增加LPC2200(for MagicARM2200)专用工程模板(若已增加过,此步省略)。(3) 建立一个项目目录uCOS-II,添加C/OS 2.52 源代码和移植代码(移植代码在产品配套光盘上可以找到,其目录名为ARM)。将移植的PC 服务代码Arm_Pc 复制到项目目录uCOS-II 下。(4) 将C/OS 2.52 源代码Source(目录)复制到项目目录,此时uCOS-II 目录的结构如图7.2 所示。C/OS 2.52 源代码可以从参考文

28、献4的附带光盘上获得。说明:SOURCE 子目录下存放C/OS 2.52 源代码,ARM 子目录存放移植代码,Arm_Pc子目录存放移植的PC 服务代码(可通过串口向PC 机发送显示信息)。图 7.2 C/OS-II 目录的结构(5) 启动ADS 1.2,使用ARM Executable Image for UCOSII(for MagicARM2200)工程模板建立一个工程LedDisp,工程存储在uCOS-II 目录下。(6) 打开工程窗口user 组中的main.c 文件,编写实验程序并保存。(7) 根据程序设计来更改Os_cfg.h 文件,配置C/OS-II 操作系统。(对于本实验,C

29、/OS-II的配置使用模板默认设置即可)(8) 选用DebugInExram 生成目标,如图7.3 所示,然后编译链接工程。图 7.3 选择生成目标(9) 将MagicARM2200-S 的JP5、JP7 跳线短接,JP13 跳线断开。注意:JP7 与IDE 硬盘/CF 卡电路的JP13 跳线复用P0.7 口。(10) 选择【Project】-【Debug】,启动AXD 进行JTAG 仿真调试 (需要正确设置仿真器,参考产品配套光盘附带文档ADS 集成开发环境及仿真器应用) 。注意:使用DebugInExram 生成目标时,使用片外RAM 进行仿真调试,在AXD 中设置仿真器参考如图3.4 所

30、示。(11) 若JTAG 连接出错,或AXD 主窗口没有显示startup.s 源程序,按产品配套光盘附带文档ADS 集成开发环境及仿真器应用介绍的方法进行处理。(12) 全速运行程序,程序将会在main.c 的主函数中停止(因为main 函数起始处默认设置有断点)。(13) 全速运行程序,观察MagicARM2200-S 的LED1LED8 显示,监听蜂鸣器是否蜂鸣。图 7.4 片外RAM 调试的仿真器设置7 实验参考程序C/OS-II 移植实验的参考程序见程序清单7.7。程序清单 7.7 C/OS-II 移植实验参考程序实验八 基于C/OS-的键盘与数码管显示实验1 实验目的(1) 掌握将

31、C/OS-II 操作系统移植到ARM7 处理器的方法。(2) 了解C/OS-II 操作系统的基本原理和移植条件。2 实验设备硬件:PC 机 一台,MagicARM2200-S 教学实验开发平台一套软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境,C/OS-II 操作系统(V2.52)3 实验内容学习移植 C/OS-II 操作系统到ARM7 处理器,然后编写一个简单的多任务应用程序,实现键盘与数码管显示。4 实验预习要求(1) 仔细阅读参考文献4,了解C/OS-II 的组成和移植相关的文件内容。(2) 仔细阅读参考文献1第35 章和第7 章的内容,了解ARM7 体系结构及其汇编编程,了解LPC2000 系列ARM7 微控制器的硬件结构(如向量中断控制器和定时器等)和C/OS-II 移植的相关说明。5本实验要求学生独立完成

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号