RA-Eco-RA4M2-100PIN开发板由RA生态工作室出品,基于瑞萨RA4M2家族,Cortex-M33,最高频率100MHZ,512KB flash, 128KB sram, 带FS USB。板载USB转TTL模块,不用再额外接usb转ttl了。板载SWD接口,需要用户自己接一个swd调试器。板载三个user LED和一个电源LED。有两个user按钮和一个reset按钮。两个Pmod接口。
笔者一直在linux下开发,这次也不例外。toolchain使用arm-none-eabi-gcc,可以从arm官网下载;源码工程组织采用cmake,其需要的CMakeLists.txt文件可有RASC自动生成,RASC是什么请参考下文;烧>录与调试使用pyocd。
RASC配置
RASC全称Renesas Advanced Smart Configurator,是瑞萨用于配置他自家芯片的pll/clk,pinmux、中断等的工具。笔者配置大概流程如下。
新建proj,第一步选的东西比较多,注意下board选custom,device选R7FA4M2AD3CFP,语言选c,Project type选CMake,toolchain选GCC Toolchain for Arm
第二步选Flat Project
第三步选No RTOS
第四步Bare Metal-Minimal
然后就可以Finish了。接下来需要配置下pin。注意默认的pin设置Debug部分是JTAG功能,但这块开发板引出的是SWD引脚,所以需要按图所示在Pins标签页中先把Debug部分的引脚改成SWD,不然再次烧录就烧录不成了切记。
根据板子原理图板载的那颗USB转TTL是接在P109和P100引脚上,对应SCI9,所以在SCI栏按图所示配置好TXD9和RXD9的引脚功能
接下来需要配置clk。笔者拿到的板子板载晶振是12MHZ,RASC生成的默认是24MHZ,这里需要注意改过来。然后其它的clk/pll可按图所示配置即可
进stacks标签,选择New Stack->Connectivity->UART(r_sci_uart),然后按图所示配置一下uart9。
至此配置结束,点击Generate Project Content即可。
添加代码测试串口printf
添加代码如下代码到src/hal_entry.c
static volatile uint8_t uart_tx_event;
void uart9_callback (uart_callback_args_t * p_args)
{
if(p_args->event == UART_EVENT_TX_COMPLETE)
uart_tx_event = 1;
}
int _write(int file, char *ptr, int len)
{
fsp_err_t err;
(void)(file);
uart_tx_event = 0;
err = R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)ptr, (uint32_t)len);
if (FSP_SUCCESS != err)
len = -1;
while (!uart_tx_event)
;
return len;
}
hal_entry()函数修改成如下所示:
void hal_entry(void)
{
/* TODO: add your own code here */
R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
printf("Hello RA4M2\r\n");
for (;;)
__WFI();
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}
编译
cmake -B /tmp/build
cmake --build /tmp/build -j8
在/tmp/build目录下有ra4m2.elf和ra4m2.srec文件生成
打开串口工具比如minicom等
因烧录完毕后会自动重启,笔者代码只打印一次,所以先开启minicom防止串口打印丢失。
烧录
pyocd load -e sector -t R7FA4M2AD /tmp/build/ra4m2.elf
烧录完毕后自动重启,串口即有“Hello RA4M2”字样的打印如图所示:
至此开发环境搭建成功,并成功测试了串口printf输出。
|