仿真、调试与C语言编程_第1页
仿真、调试与C语言编程_第2页
仿真、调试与C语言编程_第3页
仿真、调试与C语言编程_第4页
仿真、调试与C语言编程_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

仿真、调试与C语言编程第一页,共20页。

目标板→核心板↓核心板接口资源↓第二页,共20页。核心板与目标板的连接插口(J1)引脚定义→PC机开发板(用户板)BDM调试器CWIDEUSB第三页,共20页。4.2集成开发环境CodeWarriorCodeWarrior---简称CW一种国际通用的软件集成开发环境(IDE),联合子公司Metrowerks开发;支持Freescale所有微控制器;支持不同的操作系统,如Windows、Macintosh、Linux等;支持汇编语言,以及C/C++、Java高级语言;支持各种调试、仿真功能;包括多个功能模块:编辑器、编译器、源码浏览器、搜索引擎、构造系统、调试器、工程管理器;各种版本:特别版、标准版和专业版,特别版是免费的、用于教学目的,后两种须付费;授权文件和功能限制有区别;本课程使用CodeWarriorforS12(X)5.1Special(特别版)安装:与常规Windows软件一样,按安装向导一步步进行即可使用:找到并运行CodeWarriorIDE第四页,共20页。4.2.1开发入门1.建立工程文件

选择FileNew第五页,共20页。NewProjectWizard–器件型号与调试连接类型选择:(1)选MCU型号,如MC9S12XDT512

(2)选调试连接工具,

此处加选TBDML或P&EMultilink;(若使用连接到核心板BDM口的商用BDM调试器,则选择TBDML)(纯软件仿真选FullChipSimulation)NewProjectWizard–XGate设置:在不启用XGATE模块的情况下,此处选择“SingleCore”。

第六页,共20页。NewProjectWizard–工程参数:(1)选编程语言,此处选RelocatableAssembly;

(若用C、C++,可变/加选)(2)输入工程的名字,如RunED

选择存放位置,如E:\CodeCW\RunLED第七页,共20页。NewProjectWizard的其它页用默认(C编程的存储器模式在程序量小于64K时选择Small)

最后点完成,结束新工程的建立。以后通过Fileopen,选.mcp即可重新打开这个工程。第八页,共20页。2.左栏内是CW系统自动生成的各种文件,其中用户需要修改、开发的应用程序是sources中的main.asm文件;点开后是一个自动生成的例子程序框架,保留前面部分,在汇编工程main.asm文件中提示“Inserthereyourdatadefinition”的地方修改、加入数据变量,在提示“Codesection”的地方、“Entry”之后修改、加入代码。第九页,共20页。或者,在C工程main.c文件中提示“putyourowncodehere”的地方修改、加入程序代码。第十页,共20页。编辑main.asm文件,主要将INCLUDE‘mc9s12xdt512.inc’之后的替换成自己的代码,例如。

一个需要关心的文件是自动生成的.prm链接文件,主要是代码地址定位信息;其中最后:

VECTOR0Entry给出了复位向量地址是标号Entry的地址,而Entry在main.asm中,也就意味着复位后首先执行main.asm文件中的内容。另一个需要关心的文件是自动生成的.inc包含文件,主要是内存映像地址和寄存器地址的别名定义。第十一页,共20页。3.编译程序点选Make(或F7)---进行编译和链接项目,如果源程序有错误,CWIDE会弹出错误或警告信息。按提示修改,重新编译,直到没有错误为止,为通过。(自动存盘)4.2.2完全软件仿真和调试首先:设置ProjectSetdefaultTargetFullChipSimulation点选Debug(或F5)---在没有开发板的情况下,可进行软件仿真;也可在用板、制板之前的程序逻辑正确性验证。

在弹出的True-TimeSimulator&Real-TimeDebugger窗口软件中进行各种信息观察和调试操作。其中Source中的源程序行,右击可设置断点、执行到光标处等;调试运行:开始/继续、单步运行、跨步运行、单步跳出、汇编单步、停止、复位;调试观察:程序存放位置、寄存器值、运行位置、内存区域值等;各寄存器值、内存区域值均可双击,进行手工编辑;还可使用方便的右键功能;Component菜单Open选择并设置一些仿真部件可进行模拟实验。例选Io-led,为使该部件和程序对应,在部件图形上右击setup

设置:数据寄存器PORT为PORTB,其地址DDR为01

此时,全速运行程序,可看到8只LED灯的跑马灯效果。第十二页,共20页。一些图例---仿真与调试界面:未接BDM时:led仿真效果:运行方式:第十三页,共20页。4.2.3BDM程序下载与在线调试首先:设置ProjectSetdefaultTargetTBDML

或P&EMultilinkCycloneProBDM调试器硬件连接---一端接PC机USB接口,另一端插接在板上的BDM插针口(别反),PC机会自动识别安装此设备。都通电,可带电插拔。同样点选Debug(或F5)---进入在线调试环境后,功能和方法与软件仿真完全相同,如运行/停止、单步、复位等,但已是针对板的实时、在线的调试运行。其间弹出的“LOADERWARNING”按OK,“SetDerivative”选择为MC9SXDT512,还可能要进行菜单MultilinkUnsecure操作(出现的询问参数依次填入60、9)…。最后正确的状态应是Source栏内有程序代码。重新编译过的工程可以再次点选Debug重新进入调试窗口;也可以在调试窗口的连接器Multilinkload中直接调入新的目标文件Multilink*.abs,它可在工程所在的文件夹下的bin子目录中找到。上述过程实际已完成对MCUNVM的擦除和程序下载,并可以在线调试或脱机运行了。注:CW功能庞杂,其它深入操作须在实践中摸索。第十四页,共20页。4.3使用C语言的开发---自学及边用边回顾为主同汇编语言编程一样,C语言编程同样大量涉及寄存器、位操作和数据变量,但用C语句较汇编语句简洁,也能保证高效率,例如:unsignedcharbPortA=PORTA;//定义bPortA变量,并将A口状态赋给bPortA变量PORTA=0xFF;//将0xFF赋给A口,PORTA将全为高电平TSCR1&=0xDF;//对TSCR1寄存器进行位与操作if((bits&0x10)!=0)//测试bits变量的第4位是否为1if(bits&0x10)//功能同上if(bits&(1<<4))//功能同上while((bits&0x80)!=0x80);//循环测试bits的最7位,直至最7位变为1PORTA|=(1<<7);//PORTA的第7位置1PORTA&=~(1<<7);//PORTA的第7位清0PORTB^=0x80;//PORTB的与10000000b异或,即第7位取反PORTB=~PORTB;//PORTB按位取反if((PORTA&0x81)==0)//检查PORTA第7位、0位是否都为0#defineEnableSCIReInt()SCICR2|=(1<<5)//宏定义,位置1,开放SCI接收中断#defineDisableSCIReInt()SCICR2&=~(1<<5)//宏定义,位清0,禁止SCI接收中断memcpy((void*)0x2011,(void*)0x2000,8);//拷贝0x2000开始的存储器单元的8个字节的内容到0x2011开始的存储器单元中第十五页,共20页。CW给定的头文件已经将最常用的一些无符号变量类型做了类型名简化替换:

typedefunsignedcharbyte;typedefunsignedintword;typedefunsignedlongdword;在用户C程序中,就用

byte代替unsignedchar,

word代替unsignedshort

等等,这与WindowsVisualC/C++的规范是类似的。稍有不同的是,int类型变量的数据长度在CW开发环境中为2个字节,在VisualC/C++开发环境中则为4个字节。类型\长度8位16位32位64位char√short√int√long√longlong√enum√float√double√longdouble√longlongdouble√CW中C变量的类型与长度定义

Freescale字节序排布:bigendian模式

高字节在低地址。非littleendian第十六页,共20页。4.4基于Cod

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论