#申请原创# @21小跑堂
接上一篇,我们知道RA-Eco-RA4M2-100PIN开发板是基于瑞萨RA4M2家族,最高频率100MHZ,512KB flash,128KB sram,带FS(Full Speed)USB,这个可太合适做各种USB类工具啦,比如调试器、can分析仪之类的,事实上就有基于RA4M2的JLINK调试器,但是JLINK固件不开源有各种限制,所以笔者就想用用这个开发板做个基于RA4M2 CMSIS DAP Link兼容的调试器,CMSIS DAP是arm开源的,Apache-2.0开源协议,而上位机可用Keil、IAR、pyocd、openocd等等。
1. 一般思路
做这个调试器目前基本有套路了,因为RA4M2的资源比较充足,对于这类资源比较富余的MCU做CMSIS DAP调试基本上会上RTOS,处理比较方便,而且可以支持一路调试器,一路CDC,而且代码分层比较好。因任务比较简单所以选一个简单的只有基本OS原语支持的RTOS比较合适,这类选择不多常见FreeRTOS或者
ThreadX。那么USB协议栈呢?通常选用TinyUSB。所以整套思路下来就是FreeRTOS+TinyUSB+CMSIS DAP+任务处理代码,然后再加上MCU的一些porting code。事实上笔者就是这么做的,做完后笔者还把它移植到了RA-Eco-RA4E2-64PIN开发板上,RA4E2可以认为是RA4M2的青春版,但做CMSIS DAP兼容调试器够用了。然后笔者在开源还是闭源之间纠结了好久后(github创建仓库的页面都填好了)决定闭源毕竟费了不少时间的,但莫名其妙在github上搜索了下renesas cmsis dap,猜猜我发现了啥 ?
https://github.com/renesas/ra-cmsis-dap-port
原来瑞萨官方已经做了一个啦,这个仓库是基于FreeRTOS+瑞萨fsp自有USB协议栈+CMSIS DAP做的,且只支持EK-RA4M2评估板。笔者如果开始就搜索github就不会费时间自己做了,好在也有收获,把FreeRTOS+TinyUSB+CMSIS DAP这套方案第一次自己完整摸索,以后换任何一款MCU都会做了。笔者接下来的讲述瑞萨官方的这个ra-cmsis-dap-port向RA-Eco-RA4M2-100PIN开发板的移植过程。
2 fsp配置注意事项:
2.1 fsp版本问题
瑞萨官方的这个ra-cmsis-dap-port是基于fsp-4.6.0配的,有点旧了,所以建议删除ra4m2/ra这个目录,RASC最后会自动再生成的。
2.2 晶振以及各pll/clk频率
EK-RA4M2评估板的晶振是24MHZ,但笔者手里的晶振是12MHZ的,当然笔者不确定所有的RA-Eco-RA4M2-100PIN开发板晶振是否都是12MHZ,在改变之前最好写个简单的程序验证一下(可参考笔者上一篇测评文章)。最终笔者的时钟部分配置如图所示:
这里还需要注意用于usb的clk,一定要是48MHZ如下图所示
2.3 debug引脚jtag->swd
RA4M4本身支持jtag和swd,但RA-Eco-RA4M2-100PIN开发板只有现成的swd引脚,所以RA4M2自身的调试引脚修改如下:
2.4 JTAG/SWD引脚的重新选择
如上所述,瑞萨官方这个ra-cmsis-dap-port目标板是EK-RA4M2评估板,它的默认TDO、TMS、TCK、TDI>、TRST、REST等引脚用于RA-Eco-RA4M2-100PIN开发板并不合适,因为一些引脚在RA-Eco-RA4M2-100PIN开发板是PMOD,有些针脚又在那24根排针中,你接杜邦线时会非常困难。所以最好对照原理图重新选一下引脚,笔者的选择如下:
TDO, p208, PIN_CMSIS_DAP_TDO, input low cmos
TMS, p209, PIN_CMSIS_DAP_SWDIO, output initial low, low cmos
TCK, p210, PIN_CMSIS_DAP_SWCLK, output initial high, low cmos
TDI, p211, PIN_CMSIS_DAP_TDI, output initial high, low cmos
TRST,p214, PIN_CMSIS_DAP_NTRST, output initial high,low n-ch open drain
REST, p109, PIN_CMSIS_DAP_RESET, output initial high, low n-ch open drain
其中,第一类是对应的jtag引脚,第二列是gpio,第三列是设置的gpio别名,第四列和最后一列是gpio在RASC中要配置的属性。这里引脚比较多,笔者就不截图了,请按上表配置gpio引脚。
另外RA-Eco-RA4M2-100PIN开发板的LED布局也和EK-RA4M2不太一致,所以需要把p002改成gpio模式。同
时修改下ra/board/ra4m2_ek/board_leds.c中的g_bsp_prv_leds[]数组如下:
static const uint16_t g_bsp_prv_leds[] =
{
(uint16_t) BSP_IO_PORT_04_PIN_05, ///< LED1
(uint16_t) BSP_IO_PORT_04_PIN_04, ///< LED2
(uint16_t) BSP_IO_PORT_00_PIN_02, ///< LED3
};
至此RASC配置修改结束,点击RASC按钮产生CMake工程,然后编译烧录可参见上一篇评测文章,这里不再赘述。
3. 美图欣赏
笔者这里贴几张测试图片供欣赏。
3.1 RA-Eco-RA4M2-100PIN开发板调试RA-Eco-RA2E1的接线图:
3.2 Linux下检测到CMSIS DAP USB设备的信息
3.3 openocd连上RA2E1
3.4 openocd加载数据到RA2E1 sram
速度达到118KB/s,还不赖嘛 。
|