其实在完成这个之前,花了很久的时间折腾OpenOCD,在OpenOCD没有LPC5400的下载算法,对了下寄存器和LPC4300系列有点差距,SPIFI到是一样的,好不容易移植好了,调试又经常断,既然是LPC-Link2,那不如直接使用LPC-Link2原始的调试器Server,是不是性能更好.
下载并安装NXP LinkServer,这个不用教程大家应该都能搞定,然后先以GUI启动一下,记得链接目标板.
记下这个JTAVBQJQ,后面有用.
接着在CLion新建好工程并确保编译能通过,既然已经决定上了非官方推荐工具,那工程架构就没法生成,自己构建了.
调试配置新建一个嵌入式GDB服务器.
- 我们计划监听2330端口,所以连接到localhost:2330
- GDB服务器就是刚才安装的LinkServer
- 启动参数 -l5 gdbserver "LPC54608J512:LPCXpresso54608" --probe JTAVBQJQ --gdb-port 2330 --no-boot --redlink-port 2440 --core primary
- LPC54608J512 是具体芯片型号
- LPCXpresso54608 是板子的配置文件,是一个JSON文件,包括你的片外Flash大小,下载算法等都在这个JSON文件描述,路径:C:\NXP\LinkServer_*\devices\LPCXpresso54608.json
- JTAVBQJQ 前面获取到的调试器ID
- primary 因为有一些芯片是多核的,所以有些调试会话是从机.
- -l5 是输出日志等级,调试没问题可以去掉.
- 调试器会同时启动redlink,redlink是服务于linkserver,linkserver服务于gdb.
SVD可以在NXP的开源GitHub上下载到,xml结尾的其实也是svd文件,svd内部组织本身就是XML.
https://github.com/nxp-mcuxpresso/mcux-soc-svd
但是这时候发现外设寄存器是无法读取的.
需要在GDB初始化时进行一些配置
set mem inaccessible-by-default off
完整的建议配置
set mem inaccessible-by-default off
set remotetimeout 600
set non-stop off
mon ondisconnect cont
monitor SWO datasource
工程示例