在Xilinx FPGA上使用Cortex M1 软核——Keil中使用J-Link调试Cortex-M1嵌入式工程
本文的软件代码部分参考自ARM提供的例程。
本文适合第一章(https://blog.csdn.net/lai823177557/article/details/99691926
)中创建的FPGA工程。理论上所有使用J-Link(JTAG模式)调试接口的CM1均适用。
这里有本文的工程:
https://download.csdn.net/download/lai823177557/11607865
连接硬件
将FPGA中分配的J-Link IO与J-Link调试器一一连接,
配置FPGA
下载第一章中生成的bit流文件
配置debug
- 将J-Link调试器连接到电脑后打开Keil中的
Options for Target
配置界面。 - 在
Debug
标签下选择J-Link后点击“Settings”。
不出意外调试器能直接读取软核的信息:
- 在
Debug
标签下,设置其他选项:
其中“RAM.ini”是调试的初始化文件,用于加载程序文件到软核并设置软核的堆栈信息。RAM.ini的内容如下:
//*** <<< Use Configuration Wizard in Context Menu >>> ***
FUNC void Setup (void)
{
SP = _RDWORD(0x00000000);
PC = _RDWORD(0x00000004);
_WDWORD(0xE000ED08, 0x00000000);
}
LOAD Objects\exec.axf INCREMENTAL
Setup();
g, main
其中,“Objects\exec.axf”是工程的输出,名字来源于Output
标签中的“Name of Executable”
- 在
Utilities
标签中,取消“Update Target before Debugging”复选框:
- 配置完成
现在可以调试了:
在进入调试界面后,务必复位CM1一次,否则CM1会一直处于Handler模式无法响应用户中断。具体原因不明确,猜测时bit文件中没有CM1的程序文件,导致其进入LOCKED状态导致的。固化程序后一切正常。 - 调试结果
中断(Systick、定时器)、GPIO、串口均正常工作
下一章将分享如何固化Cortex-M1代码到FPGA的BIN文件中。
如发现有错误或者疏漏,请留言~~~