强烈要求版主给我加分,加精。

关于调试方法的一般概念就不讲了,什么 Emulator, Simulator, Rom-Monitor,JTAG等等。
首先建立一个认识: M16C R8, M32也好是一款CISC结构MCU系列,类似于飞思卡尔的S12系列一样的。不过,两者最大的一个区别是S12有支持似乎是全硬件仿真的BDM调试方式
(BDM的调试原理没仔细研究过),而m16c上是没有类似于此或JTAG的硬件调试模块。在玩飞思卡尔时,觉得有个硬件调试器(BDM调试模块),真爽啊。那么m16c的调试方式是怎样的呢?一种就是E8/E8A的所谓硬件调试器,另外一种就是Rom-Monitor的方式, 其实两者的原理是一样的(这是我分析的)。由于m16c没有专用的硬件调试模块,所以应该不可能像用JTAG,BDM以及其他的方式实现在线的调试。
m16c的主要调试原理类似于我们PC机上的调试方式,即有一段专门的程序接管了程序的运行,并把调试结果发送给上位机。在嵌入式式领域,这种方式称之为Rom-Monitor。如果有用过m16c的Rom-monitor进行调试的童鞋可能会清楚, 如果是一块什么新的MCU,你要开始调试的话,要先下载一个叫mon_uart.mot的文件下载到MCU中,然后才能用KD30或者ForuartUSB的调试平台进行调试,这个调试是通过串口进行的。在调试过程中你可能会被告知, 有一个串口中断向量你是不能用的。那个mon_uart.mot其实就是监控程序,它控制着整个调试过程,包括接受上位机传来的.x30文件,执行上位机传来的指令,并把结果返回给上位机。那个不能使用的串口中断就是用于监控程序和上位机进行通信的。
为什么说E8/E8A的原理和rom-monitor的是一致的呢?当谈我没具体用过E8/E8A, 不过请仔细看一下E8/E8A的电路图,你会发现它也占用了一个串口,加上CPU模式选择信号以及其他。如果截收一下使用rom-monitor时上位机和MCU之间以及使用E8/E8A时上位机和MCU之间的通信数据,应该会发现两者是惊人的相似(我只做过rom-monitor的例子)。E8/E8A可能功能更强大,自动化程度更高一些,看起来像硬件仿真,但实质上应该和rom-monitor一样, 只不过可能rom-monitor在E8/E8A上有一个备份,需要时把这个备份下到MCU中去。
邵贝贝的一本关于S12的书中介绍了这种Rom-monitor的调试方式,并提供了在s12上的实现(我估计是改良自飞思卡尔所提供的s12的ROM-monitor的例子)。正如邵所说,其实任何MCU或者CPU都可以采用rom-monitor的方式进行调试,例如ARM中Angel, 这种调试方式其实有点类似于GDB。然而为什么rom-monitor不是很常用呢,一个关键就是没有上位机的调试平台与之配套,而且是要可以和IDE整合在一起,所幸HEW中可以实现。
总结一下: m16c m32 R8 都可以用kd30 或者是Foruartusb调试,只要有对应rom-monitor。如果有可能的话,到时分享几个rom-monitor, 分别针对m16c m32 r8.
另外,瑞萨的另一个铲平h8也可以这样搞, 我记得有一个h8 monitor的实现, 对应的调试平台就不知道了,可能的话可以作为一个小小的开源项目,尝试做做。
想知道文章出处以及作者介绍,回复可见。
——回复可见内容——

 
					
				
 
			
			
			
						
			 
					
				 
					
				 
					
				 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

