




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统原理及应用实验指导书适用专业: 电气、测控等 课程代码: 8413841 总学时: 48 总学分: 3 编写单位: 电气信息学院 编 写 人: 王 平 审 核 人: 审 批 人: 批准时间: 年 月 日目 录 实验一 ADS 1.2集成开发环境练习4实验二 汇编调用实验与Bootloader下载11实验三、C/OS-II移植实验14实验四、步进电机控制实验17实验一 ADS 1.2集成开发环境练习一、实验目的和任务 了解ADS 1.2集成开发环境的使用方法。建立一个新的工程;建立一个汇编源文件,并添加到工程中;设置文本编辑器支持中文 ;设置编译链接控制选项;编译链接工程;调试工程。二、实验设备装有ADS 1.2集成开发环境的PC机 三、实验步骤1ADS环境练习。(1) 在D:新建一个目录,目录名为experiment。(2) 启动ADS1.2 IDE集成开发环境,选择【File】-【New】,使用ARM Executable Image工程模板建立一个工程,名称为ADS,目录为D:experiment。(3) 选择【File】-【New】建立一个新的文件TEST1.S,设置直接添加到项目中。输入如程序代码,并保存,此时在工程窗口中可以看到TEST1.S文件。 (4) 选择【Edit】-【Perferences】,在Font选项设置字体是Fixedsys,Script是CHINESE_GB2312。(5) 选择【Edit】-【DebugRel Settings】,在DebugRel Settings对话框的左边选择ARM Linker项,设置链接地址。(6) 选择【Project】-【Make】,或者按下快捷键F7,将编译链接整个工程。(7) 选择【Project】-【Debug】,或者按下快捷键F5。IDE环境就会启动AXD调试软件,接着可以执行单步、全速运行调试。注意:本实验使用软件仿真,所以要在AXD中选择【Options】-【Configure Target】菜单,然后在 Choose Target窗口中选用ARMUL软件仿真。 2ADS1.2操作实例一:汇编指令实验使用LDR指令读取0x40003100上的数据,将数据加1,若结果小于10则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址周而复此循环;使用ADS 1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor Registers)监视R0、R1的值,打开存储器观察窗口(Memory) 监视0x40003100上的值。 (1) 启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程Instruction1。(2) 建立汇编源文件TEST2.S,编写实验程序,然后添加到工程中。(3) 设置工程链接地址RO Base为0x40000000,RW Base为0x40003000。设置调试入口地址Image entry point为0x40000000。(4) 编译链接工程,选择【Project】-【Debug】,启动AXD进行软件仿真调试。(5) 打开寄存器窗口(Processor Registers),选择Current项监视各寄存器的值。(6) 打开存储器观察窗口(Memory) 设置观察地址为0x40003100。(7) 单步运行程序,可以设置/取消断点,或者全速运行程序,停止程序运行,调试时观察寄存器和0x40003100地址上的值。 参考程序:3ADS1.2操作实例二:C语言程序实验编写一个汇编程序文件Startup.S和一个C程序文件Test.c。汇编程序的功能是初始化堆栈指针和初始化C程序的运行环境,然后调跳转到C程序运行,这就是一个简单的启动程序。C程序使用加法运算来计算1+2+3+.+(N-1)+N的值(N0)。(1) 启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程ProgramC。(2) 建立源文件Startup.S和Test.c,编写实验程序,然后添加到工程中。(3) 设置工程链接地址RO Base为0x40000000,RW Base为0x40003000。设置调试入口地址Image entry point为0x40000000。(4) 设置位于开始位置的起始代码段为Startup.o的代码段。(5) 编译链接工程,选择【Project】-【Debug】,启动AXD进行软件仿真调试。(6) 在Startup.S的跳转到C程序入口的代码处设置断点,然后全速动行程序。(7) 程序在断点处停止。单步运行程序,判断程序是否跳转到C程序中运行。 参考程序:汇编启动代码:Startup.sC语言实验参考程序:Test.c四、实验结果与分析1ADS中如何实现程序由汇编到C语言的跳转?2如何在AXD中观察存储器的内容,如何实现对寄存器的监视?3本实验的汇编程序中使用了哪几种寻址方式?实验二 汇编调用实验与Bootloader下载一、 实验目的和任务学习掌握在C程序调用汇编子程序的方法,本实验实现由C程序调用利用汇编语言实现两个整数的加法运算。实现将Bootloader下载到SST39VF1601。二、 实验原理在C程序调用汇编子程序,三、 实验仪器设备装有ADS的PC机,ARM2410教学实验系统,EasyJTAG-H仿真器。四、 实验步骤1在C程序调用汇编子程序,实现两个整数的加法运算。汇编子程序的原型为:uint32 Add(uint32 x, uint32 y),其中uint32已定义为unsigned int。(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) 设置工程链接选项,位于开始位置的起始代码段设置为Startup.o的代码段。(5) 编译链接工程,选择【Project】-【Debug】,启动AXD进行软件仿真调试。(6) 在Test.c文件中的调用Add()的代码处设置断点,然后全速动行程序。(7) 程序在断点处停止。使用Setp In单步运行程序,观察程序是否转到汇编程序Add.S。(8) 单步/全速运行程序,判断程序的运算结果是否正确。 程序清单:C语言调用汇编程序实验参考程序:Test.c#define uint8 unsigned char #define uint32 unsigned intextern uint32 Add(uint32 x, uint32 y);uint32 sum;/ 调用汇编程序Add实现加法运算void Main(void) sum = Add(555, 168); while(1);汇编加法函数代码: Add.S; 加法函数,原型为uint32 Add(uint32 x, uint32 y)。 EXPORTAdd AREA AddC,CODE,READONLY; 声明代码段AddC ENTRY; 标识程序入口 CODE32; 声明32位ARM指令AddADDR0,R0,R1; 输入参数x为R0,y为R1 MOVPC,LR; 返回值为R0 END2下载Bootloader使用EasyJTAG-H 将ZLG/BOOT 下载到SST39VF1601 中。需要ADS1.2 软件、基于ADS 的WR_NORFLASH.mcp 工程、H-JTAG 软件和EasyJTAG-H仿真器。跳线设置:断开BOOT-SEL 跳线JP8,短接蜂鸣器跳线JP9。将EasyJTAG-H 和实验箱相连,运行H-JTAG,打开WR_NORFLASH.mcp 工程,打开StartUP.s,文件,将下面的代码添加进文件中“ResetInit”函数相应位置。ResetInit BL InitStack ; 初始化堆栈 BL TargetBusInit ; 总线系统初始化 (函数中不允许堆栈操作) BLTargetResetInit ; 针对目标板的系统初始化 MRCp15,0,R1,c1,c0,0; (MMU设置,异步总线模式) 读控制寄存器ORRR1,R1,#0xC0000000 ; 当HDIVN=1时操作有效MRCp15,0,R1,c1,c0,0 B _main; 跳转到c语言入口 B . ; 如果main返回,则死循环 ; /* 包含要烧写的bin文件 */ EXPORT FLASH_FUNCTION EXPORT FLASH_FUNCTION_END FLASH_FUNCTION INCBIN flash.binFLASH_FUNCTION_END选择DebugRel 生成目标,进入AXD 调试环境。在语句while(1)处设置断点,然后全速运行程序,或者将光标放置在while(1)处后运行到此处。程序停止后,如果蜂鸣器鸣叫一声则表示已经正确将ZLG/BOOT 下载到SST39VF1601 中,然后后将实验箱断电即可;如果蜂鸣器连续鸣叫则表示下载出错,需要重新下载。下载完毕,将EasyJTAG-H 拔掉,以便启动系统。2 启动ZLG/BOOT设置串口终端(115200-8-N-1,无流控制)。将PC 串口和实验箱右侧的UART0 相连,然后启动实验箱,将会得到如图所示的ZLG/BOOT 启动界面。五、实验结果与分析1如何实现在C程序中调用汇编?2下载Bootloader有哪些步骤? 实验三、C/OS-II移植实验一、实验目的和任务掌握将C/OS-II操作系统移植到ARM9处理器的方法。了解C/OS-II操作系统的基本原理和移植条件。学习移植C/OS-II操作系统到ARM9处理器,然后编写一个简单的多任务应用程序,实现LED流水灯控制。二、实验设备装有ADS 1.2集成开发环境的PC机、MagicARM2410教学实验开发平台三、实验原理l C/OS-II概述 C/OS-II是一个完整的、可移植、可固化、可剪裁的占先式实时多任务内核。C/OS-II是用ANSI C语言编写,包含一小部分汇编代码,使之可以供不同架构的微处理器使用。C/OS-II可以管理64个任务,具有信号量、互斥信号量、事件标志组、消息邮箱、消息队列、任务管理、时间管理和内存块管理等系统功能。l C/OS-II软件体系结构 如图 3.1所示,由图可以看出,C/OS-II包括以下3个部分:(1)C/OS-II核心代码:包括10个C程序文件和1个头文件,主要实现了系统调度、任务管理、内存管理、信号量、消息邮箱和消息队列等系统功能。此部分的代码与处理器无关。(2)C/OS-II配置代码:包括2个头文件,用于裁剪和配置C/OS-II。此部分的代码与用户实际应用相关。(3)C/OS-II移植代码:包括1个汇编文件、1个C程序文件和1个头文件,这是移植C/OS-II所需要的代码。此部分的代码与处理器相关。l C/OS-II移植条件移植C/OS-II之前需要注意,目标处理器必须满足以下几点要求:(1)处理器的C编译器能产生可重入型代码;(2)处理器支持中断,并且能产生定时中断;(3)用C语言就可以开/关中断;(4)处理器有将堆栈指针以及其它CPU寄存器的内容读出,并保存到堆栈或内存中去的指令。S3C2410A微控制器可以满足第2、4和5点要求,使用ADS 1.2的C编译器可以满足第1、3点要求。l C/OS-II移植步骤:(1) OS_CPU.H的移植在OS_CPU.H文件中定义与处理器相关(实际上是与编译器相关)的数据类型,如BOOLEAN、INT8U、INT8S等等。在OS_CPU.H文件中定义与处理器相关的宏,主要是进入临界区的OS_ENTER_CRITICAL和退出临界区的OS_EXIT_CRITICAL,所以还要编写相应的软件中断处理代码(可以在OS_CPU_C.C文件中编写)实现开/关中断。同样定义OS_TASK_SW()为软件中断函数,并编写有相应的软件中断处理代码(调用OSIntCtxSw函数)实现任务切换。(2)OS_CPU_C.C的移植 在OS_CPU_C.C文件中,需要编写以下10个简单的C函数: OSTaskStkInit();OSTaskCreateHook();OSTaskDelHook();OSTaskSwHook();OSTaskIdleHook();OSTaskStatHook();OSTaskTickHook();OSInitHookBegin();OSInitHookEnd();OSTCBInitHook()。 其中,9个系统Hook函数可以为空函数,也可以根据用户自己的需要编写相应的操作代码。任务栈结构初始化函数OSTaskStkInit,必须根据移植时统一定义的任务堆栈结构进行初始化。(3) OS_CPU_A.S的移植由于ADS1.2编译器默认汇编文件后缀名为“S”,所以移植代码OS_CPU_A.ASM改名为OS_CPU_A.S。在OS_CPU_A.S文件中,需要编写以下4个简单的汇编语言函数:OSStartHighRdy();OSCtxSw();OSIntCtxSw();OSTickISR()。其中,函数OSCtxSw不是必须的,但必须要定义好函数OS_TASK_SW(在OS_CPU.H中声明),以实现任务级任务切换。 (3) OS_CPU_A.S的移植在ISR中切换任务时会调用OSIntCtxSw函数。 启动C/OS-II是通过调用OSStart()实现,OSStart()最终调用函数OSStartHighRdy()运行多任务启动前优先级最高的任务。函数OSTickISR为系统时钟节拍中断函数,这需要使用到处理器的定时器和定时中断。为了达到集中地初始化硬件(定时器、中断和I/O等)的目的,此函数可以在用户工程的起动代码文件中实现。四、实验步骤(1)为ADS1.2增加DeviceARM2410专用工程模板(若已增加过,此步省略)。(2)连接EasyJTAG-H仿真器和MagicARM2410实验箱,然后安装EasyJTAG-H仿真器(若已经安装过,此步省略),短接蜂鸣器跳线JP9。 (3)启动ADS 1.2,使用ARM Executable Image for DeviceARM2410(uCOSII)工程模板建立一个工程Demo_uCOSII。(本范例在ADS文件夹中操作)(4)在ADS文件夹中新建arm、Arm_Pc、SOURCE文件夹。将C/OS 2.52源代码添加到SOURCE文件夹,将移植代码添加到arm文件夹,将移植的PC服务代码添加到Arm_Pc文件夹。(移植代码、C/OS 2.52源代码可以从实验附件获得)(5)在src组中的main.c中编写主程序代码。(6)根据程序设计来更改Os_cfg.h文件,配置C/OS-II操作系统。(对于本实验,C/OS-II的配置使用模板默认设置即可)(7)选用DebugRel生成目标,然后编译链接工程。(8)将MagicARM2410实验箱上的蜂鸣器跳线JP9短接,将启动方式选择跳线JP8短接,然后按RST键复位系统。(9)选择【Project】-【Debug】,启动AXD进行JTAG仿真调试。(10)全速运行程序,程序将会在main.c的主函数中停止(因为main函数起始处默认设置有断点)。(11)单击Context Variable图标按钮(或者选择【Processor Views】-【Variables】)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。(12)可以单步运行程序,可以设置/取消断点,或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器及LED1LED4的控制是否正确。五、实验结果与分析1移植C/OS-II需要编写哪些函数?2移植C/OS-II需要哪些条件?实验四、步进电机控制实验一、实验目的和任务了解步进电机的控制原理,掌握电机转动控制和调速方法。通过4个GPIO输出有序的矩形脉冲,控制ULN2003驱动四相步进电机实现正转,调速的功能;控制的方法采用双四拍(ABBCCDDAAB);二、实验设备装有ADS 1.2集成开发环境的PC机、MagicARM2410教学实验开发平台三、实验原理步进电机是一种将电脉转换为角位移的数据控制电机,即给它一个脉冲信号,它就按设定的方向转动一个固定的角度。用户可以通过控制脉冲的个数来控制角位移量,从而实现准确的定位操作;另外,通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。当然,对于步进电机各相绕组(即内部线圈)的控制脉冲要有一定的顺序,否则电机无法正常旋转;MagicARM2410实验箱上的步进电机为四相步进电机,电机步距角为18度。S3C2410A的GPIO驱动能力有限,必须通过ULN2003 达林顿集成驱动芯片驱动步进电机,在步进电机和驱动电路之间连接了电阻,防止控制紊乱造成电机的损坏;四、实验步骤(1) 启动ADS 1.2,使用ARM Executable Image for DeviceARM2410工程模板建立一个工程StepMoto。(2) 在工程src组中的main.c中编写实验代码。(3) 选用DebugRel生成目标,然后编译链接工程。 (4) 将MagicARM2410实验箱上的步进电机控制电路的电源跳线JP5短接,将步进电机控制口跳线JP6短接。 (5) 选择【Project】-【Debug】,启动AXD进行JTAG仿真调试。(6) 全速运行程序,观察步进电机转动方向及速度。(7) 改变控制步序延时参数,观察步进电机转动的速度。 程序清单:main.c/*-File Info-* File Name: main.c* Description: MagicARM2410实验箱的基础实验-步进电机控制实验。* 使用GPIO控制步进电机转动,采用双四拍控制方式。*-*/#include config.h/ 步进电机控制口线及操作宏函数定义#define MOTOA (15) /* GPC5 */#define MOTOB(16) /* GPC6 */#define MOTOC (17) /* GPC7 */#define MOTOD(10; dly-) for(i=0; i50000; i+);/* Function name: MOTO_Mode2()* Descriptions: 步进电机双四拍程序。* 时序控制为AB-BC-CD-DA-AB,共控制运转4圈(电机步距角为18度)。*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年清洁能源行业全球市场分析与前景预测研究报告
- 固本延龄丸课件
- 2025年电子产品行业可穿戴设备市场前景报告
- 巴彦淖尔市2025内蒙古巴彦淖尔市统计局所属事业单位高层次急需紧缺人才引进测评笔试历年参考题库附带答案详解
- 2025年工业互联网技术在制造业中的发展前景研究报告
- 宜宾市2025上半年四川宜宾市屏山县事业单位考核招聘28人笔试历年参考题库附带答案详解
- 临夏市2025甘肃省临夏市教育系统引进人才28人笔试历年参考题库附带答案详解
- 2025福建移动春季校园招聘若干人笔试参考题库附带答案详解
- 2025江苏南通中国移动全资子公司中移铁通南通公司如东分公司招聘笔试参考题库附带答案详解
- 2025年燕舞集团有限公司公开招聘9人笔试参考题库附带答案详解
- 咖啡基础培训课件
- 人才服务合同书
- 2025年工会财务大赛理论题库(附答案)
- 2025-2026学年统编版八年级上册道德与法治教学计划含教学进度表
- 矿井顶板事故防治课件
- 2025年中国电力投资集团校园招聘笔试题型分析及备考策略
- 抗生素课件教学课件
- 销售法律知识培训
- 中国慢性胃炎诊治指南(2022年)解读
- 糖尿病低血糖症诊疗指南
- 直升机发动机油封课件
评论
0/150
提交评论