去年买了一块战舰开发板,摆在家里睡觉到现在,打算弄出来倒持一下。。。因为之前只接触过51,发现stm32下载调试程序还需要用到仿真器?!
上网去搜了下仿真器是干嘛的,目前有以下几点理解,另外也有一些困惑,希望大家能抽空给我揪揪错:
1.最早的51芯片没有片内rom或者片内rom烧写很慢,或者是一次性烧写的,所以就搞了仿真器,它的作用通俗的来解释就是:如果把开发板上的芯片拔了,把仿真器的放到芯片应该在的位置,是可以运行跑程序的。于是我认为,仿真器简直就是另一个芯片,对它“烧写”程序会显得简单些(比如,更快捷?),对它的内部寄存器检测起来比较容易,就通过监测程序在仿真器中的运行状态来模拟在真实芯片中的运行情况了
2.在网上看到另一种解释,说仿真器相当于一个ram。使用仿真器的时候,程序并没有被下载到芯片片内rom上去,而是下到了仿真器这个ram中。执行程序的时候,开发板上的cpu从仿真器这个ram中取指,真正执行还是在cpu中进行的。那么我的问题来了,使用仿真器调试的时候,到底开发板上的芯片有没有参与进来?
3.以前调试51的时候,我都是直接把程序烧到芯片里,直接用keil就能监测运行状态了,也可以单步执行啊什么的。那么stm32的调试,如果想单步或者暂停,是不是一定要借助仿真器?
4.以前51的程序下载,说最早期的时候要把芯片从开发板上弄下来,用专用的设备才能下载;后来出现了ISP技术,说是芯片内集成了专门的硬件部分,这样就能从外部直接引出几根指定的引脚,可以进行程序烧写(也就是说这是一种“硬”机制下载);再到后来,国产的宏晶51芯片,支持IAP烧写,也就是串口烧写程序。原理是专门加了个片内Flash,放着一段程序。作用是开启串口接受程序,并将这段程序放到用户可用的Flash中。这段代码一般由厂家预设,上电复位后程序先从这个Flash开始执行,如果没有程序等待下载,就去正常执行另一片Flash中的程序。后期又推出了允许用户自己修改IAP Flash代码的芯片版本。我想知道stm32的程序烧写机制有没有像51这样的,比较常用的是怎样的? |