前面的所有测试都是提前编写好ROM.O文件,程序编译的时候提前初始化好rom空间,MCU在运行期间不能改变程序,感觉不方便,编写了一个Debug模块,使用Uart收发命令及数据,充当Jtag功能,仿真调试等等。
目前已实现程序在线下载功能,今天晚上测试通过。
增加了几条debug命令(Debug命令是4字节命令,使用Uart下发到MCU的debug模块):
同时MCU增加了软重启命令,机器码如下:
24'b0000_0001_0000_0000_0000_0000;
Debug命令主要涉及以下两个模块(ROM、Core):
进入Debug模式后,会先复位MCU并中断CPU的执行,终止从Rom读取指令。然后根据不同的Debug命令进行不同的操作。
进行的测试:
去掉程序中rom.o的加载,即当MCU刚开始运行时ROM中是没有程序的,然后通过debug模块将程序下载到Rom中,下载完成之后,退出debug模式,软重启MCU。
1、刚开始上电如下,按按键没反应,灯不亮(因为rom中还没有程序):
2、使用串口将程序下载到rom中:
上图中左边为以前的按键控制LED程序,现在将它使用串口通过MCU的Debug模块下载到ROM中。
3、命令发完之后,按键测试:
程序已正常运行,上图为按下按键。
下一步可以考虑编写一个上位机界面程序了,实现汇编程序编译并在线下载,以下是暂时考虑到的汇编指令与机器码的对应关系: