为什么可以做到随时装载代码呢? 答: 跟51emb-32k不同,我的仿真机不用预先擦除用户的程序空间,你可以随时装载你的调试代码, 不需要擦除,不需要重新启动. 为什么51emb-32k要预先擦除用户代码呢? 这是因为keil是通过发出一条0205的指令来装载代码的:
如果用户的程序代码空间没有预先擦除的话,数据是不可以直接写到ROM里(SST89C58只有当原来的数据为0xff 时才可以直接写入),而且这时候必须写入1个扇区,在51emb-32k执行擦除写入操作时会超时(因为擦写操作至少要11毫秒),而引起数据包的数据丢失(11毫秒无法接收数据),装载便失败. 我的仿真机是双CPU的,数据包会在主CPU里临时存储,等到用户CPU擦写完毕之后才送到用户CPU,因此不会引起数据丢失,不会装载失败. 代码装载可以重复装载,重复装载时,实际上是不改写原来的代码空间的(因为跟原来的存储的代码一样,不执行写入操作). 用户也可以装载多个目标文件.
|