仿真、调试与c语言编程

上传人:ji****en 文档编号:111115356 上传时间:2019-11-01 格式:PPT 页数:20 大小:3.80MB
返回 下载 相关 举报
仿真、调试与c语言编程_第1页
第1页 / 共20页
仿真、调试与c语言编程_第2页
第2页 / 共20页
仿真、调试与c语言编程_第3页
第3页 / 共20页
仿真、调试与c语言编程_第4页
第4页 / 共20页
仿真、调试与c语言编程_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《仿真、调试与c语言编程》由会员分享,可在线阅读,更多相关《仿真、调试与c语言编程(20页珍藏版)》请在金锄头文库上搜索。

1、重庆大学通信工程学院 任勇,第4章 仿真、调试及C语言编程,不使用仿真器 传统的单片机硬件调试往往采用价格不菲的仿真器,借用仿真器的MCU实现并不完全的仿真,最后才擦写芯片固化程序; 而如今的S12(X)系列MCU都已采用了内置的可以反复擦写10万次以上的Flash存储区,并且支持在线调试系统、在线下载程序,使得单片机的开发调试更为方便快捷。 使用单线背景调试模式(BDM) 4.1 S12X开发板 使用Freescale大学计划配备的XDT512开发板套件: 核心开发板 + 目标开发板 (二者通过接插口J1相连接) 核心板-在MC9S12XDT512 MCU (与MC9S12DG128兼容)最

2、小系统基础上整合了基本的输入/输出接口、2个按键开关、4个拨位开关、4个LED灯、1个电位器分压电路、1个光敏电路、SCI串行通信电路、CAN总线通信电路、BDM调试端口等;晶振频率为4MHz; 目标板-扩展的接口、面包板、集成的USB-BDM调试器等; 开发板套件通过一根连接目标板方形USB接口的线缆连接至PC机的USB接口;供电通过外接9V电源或直接由PC机的USB供电;,重庆大学通信工程学院 任勇,目标板 核心板 核心板接口资源,重庆大学通信工程学院 任勇,核心板与目标板的连接插口(J1)引脚定义 ,重庆大学通信工程学院 任勇,4.2 集成开发环境CodeWarrior CodeWarr

3、ior-简称CW 一种国际通用的软件集成开发环境(IDE),联合子公司Metrowerks开发; 支持Freescale所有微控制器; 支持不同的操作系统,如Windows、Macintosh、Linux等; 支持汇编语言,以及C/C+、Java高级语言; 支持各种调试、仿真功能; 包括多个功能模块:编辑器、编译器、源码浏览器、搜索引擎、构造系统、调试器、工程管理器; 各种版本:特别版、标准版和专业版,特别版是免费的、用于教学目的,后两种须付费;授权文件和功能限制有区别; 本课程使用CodeWarrior for S12(X) 5.1 Special(特别版) 安装:与常规Windows软件一

4、样,按安装向导一步步进行即可 使用:找到并运行CodeWarrior IDE,重庆大学通信工程学院 任勇,4.2.1 开发入门 1. 建立工程文件 选择File New,重庆大学通信工程学院 任勇,New Project Wizard 器件型号与调试连接类型选择 : (1)选MCU型号,如MC9S12XDT512 (2)选调试连接工具, 此处加选TBDML 或P&E Multilink; (若使用连接到核心板BDM口的商用BDM调试器,则选择TBDML) (纯软件仿真选Full Chip Simulation) New Project Wizard XGate设置: 在不启用XGATE模块的情

5、况下,此处选择“Single Core”。,重庆大学通信工程学院 任勇,New Project Wizard 工程参数: (1)选编程语言,此处选Relocatable Assembly; (若用C、C+,可变/加选) (2) 输入工程的名字,如RunED 选择存放位置,如E:CodeCWRunLED,重庆大学通信工程学院 任勇,New Project Wizard的其它页用默认(C编程的存储器模式在程序量小于64K时选择Small) 最后点完成,结束新工程的建立。 以后通过File open,选 .mcp即可重新打开这个工程。,重庆大学通信工程学院 任勇,2. 左栏内是CW系统自动生成的各种

6、文件,其中用户需要修改、开发的应用程序是sources中的main.asm文件;点开后是一个自动生成的例子程序框架,保留前面部分,在汇编工程main.asm文件中提示“Insert here your data definition”的地方修改、加入数据变量,在提示“Code section”的地方、“Entry”之后修改、加入代码。,重庆大学通信工程学院 任勇,或者,在C工程main.c文件中提示“put your own code here”的地方修改、加入程序代码。,重庆大学通信工程学院 任勇,编辑main.asm文件,主要将INCLUDE mc9s12xdt512.inc之后的替换成自

7、己的代码,例如。,一个需要关心的文件是自动生成的 .prm链接文件,主要是代码地址定位信息; 其中最后: VECTOR 0 Entry 给出了复位向量地址是标号Entry的地址,而Entry在main.asm中,也就意味着复位后首先执行main.asm文件中的内容。 另一个需要关心的文件是自动生成的 .inc包含文件,主要是内存映像地址和寄存器地址的别名定义。,重庆大学通信工程学院 任勇,3. 编译程序 点选Make(或F7)-进行编译和链接项目,如果源程序有错误,CW IDE会弹出错误或警告信息。按提示修改,重新编译,直到没有错误为止,为通过。(自动存盘) 4.2.2 完全软件仿真和调试 首

8、先:设置Project Set default Target Full Chip Simulation 点选Debug(或F5)-在没有开发板的情况下,可进行软件仿真;也可在用板、制板之前的程序逻辑正确性验证。 在弹出的True-Time Simulator & Real-Time Debugger 窗口软件中进行各种信息观察和调试操作。 其中Source中的源程序行,右击可设置断点、执行到光标处等; 调试运行:开始/继续、单步运行、跨步运行、单步跳出、汇编单步、停止、复位; 调试观察:程序存放位置、寄存器值、运行位置、内存区域值等; 各寄存器值、内存区域值均可双击,进行手工编辑;还可使用方便

9、的右键功能; Component菜单Open 选择并设置一些仿真部件可进行模拟实验。 例选Io-led,为使该部件和程序对应,在部件图形上右击 setup 设置:数据寄存器PORT为PORTB,其地址DDR为01 此时,全速运行程序,可看到8只LED灯的跑马灯效果。,重庆大学通信工程学院 任勇,一些图例-,仿真与调试界面:,未接BDM时:,led仿真效果:,运行方式:,重庆大学通信工程学院 任勇,4.2.3 BDM程序下载与在线调试 首先:设置Project Set default Target TBDML 或P&E Multilink CyclonePro BDM调试器硬件连接-一端接PC机

10、USB接口,另一端插接在板上的BDM插针口(别反),PC机会自动识别安装此设备。都通电,可带电插拔。 同样点选Debug(或F5)-进入在线调试环境后,功能和方法与软件仿真完全相同,如运行/停止、单步、复位等,但已是针对板的实时、在线的调试运行。其间弹出的“LOADER WARNING”按OK,“Set Derivative”选择为MC9SXDT512,还可能要进行菜单Multilink Unsecure操作(出现的询问参数依次填入60、9)。最后正确的状态应是Source栏内有程序代码。 重新编译过的工程可以再次点选Debug重新进入调试窗口;也可以在调试窗口的连接器Multilink lo

11、ad 中直接调入新的目标文件 Multilink*.abs,它可在工程所在的文件夹下的bin子目录中找到。 上述过程实际已完成对MCU NVM的擦除和程序下载,并可以在线调试或脱机运行了。,注:CW功能庞杂,其它深入操作须在实践中摸索。,重庆大学通信工程学院 任勇,4.3 使用C语言的开发- 自学及边用边回顾为主,同汇编语言编程一样,C语言编程同样大量涉及寄存器、位操作和数据变量,但用C语句较汇编语句简洁,也能保证高效率,例如: unsigned char bPortA = PORTA; /定义bPortA变量,并将A口状态赋给bPortA变量 PORTA = 0xFF; /将0xFF赋给A口

12、,PORTA将全为高电平 TSCR1 /拷贝0x2000开始的存储器单元的8个字节的内容到0x2011开始的存储器单元中,重庆大学通信工程学院 任勇,CW给定的头文件已经将最常用的一些无符号变量类型做了类型名简化替换: typedef unsigned char byte; typedef unsigned int word; typedef unsigned long dword; 在用户C程序中,就用 byte 代替 unsigned char, word 代替 unsigned short 等等,这与Windows Visual C/C+的规范是类似的。稍有不同的是,int类型变量的数据

13、长度在CW开发环境中为2个字节,在Visual C/C+开发环境中则为4个字节。,CW中C变量的类型与长度定义 ,Freescale 字节序排布: big endian模式 高字节在低地址。 非little endian,重庆大学通信工程学院 任勇,4.4 基于CodeWarrior编程开发实践 输入输出控制的汇编实例:【例4-1】,重庆大学通信工程学院 任勇,有中断的程序安排 【例4-2】 在整个源程序的末尾声明中断子程序的所对应的向量地址,格式如例; 该程序实现当IRQ引脚电平有下降沿时触发跑马灯显示,按P P口0位键后恢复等待。,重庆大学通信工程学院 任勇,C语言程序实例 【例4-4】8个LED灯切换亮出,形成来回跑动形式的跑马/流水灯效果。,重庆大学通信工程学院 任勇,C语言程序实例 并有中断,注意1: 本例要在工程对应的prm文件最后添加一行中断向量位置定义: VECTOR 8 Timer0_ISR 或 VECTOR ADDRESS 0xFFEE Timer0_ISR 简单些直接将中断函数名写成interrupt 8 void Timer0_ISR(),这样就不必再在prm文件中声明。,注意2: #pragma CODE_SEG NON_BANKED /中断服务函数定位声明,

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

最新文档


当前位置:首页 > 电子/通信 > 综合/其它

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