准备工作
- 先安装keil和ra smart config工具,安装步骤参考网上教程。
- 到https://github.com/RT-Thread/rt-thread fork源码到自己账号。
- 通过git clone从自己fork的仓库下载源码;
- 到bsp/renesas/libraries下复制bsp-template到bsp/renesas目录,然后重命名为ra4m2-eco;
- 打开ra smart config,创建一个工程如下图
![image.png](//file.elecfans.com/web2/M00/81/18/poYBAGOQPZGAZsHvAABzwhc8Cro712.png)
![image.png](//file.elecfans.com/web2/M00/81/18/poYBAGOQPceAC2RrAACdRBe7bCU992.png)
![image.png](//file.elecfans.com/web2/M00/81/18/poYBAGOQPeSATv9uAAASxHUl0oA954.png)
![image.png](//file.elecfans.com/web2/M00/81/A2/pYYBAGOQPgWAe5yUAABPYA79ZsI324.png)
- 然后是配置工程,如下图:
调试接口配置
![image.png](//file.elecfans.com/web2/M00/81/18/poYBAGOQPqeAR_z7AADM8zEPdvA411.png)
引脚配置
![image.png](//file.elecfans.com/web2/M00/81/19/poYBAGOQQK6AQD-rAAEVhcoV8to941.png)
串口和SPI配置
![image.png](//file.elecfans.com/web2/M00/81/A3/pYYBAGOQP2mAZRXMAAI9p7BH0ec525.png)
串口配置
![image.png](//file.elecfans.com/web2/M00/81/1A/poYBAGOQQciAMFBOAAC38iElWs4059.png)
SPI配置
![image.png](//file.elecfans.com/web2/M00/81/A6/pYYBAGOQRoeAIFIAAACMlSxW35I086.png)
CS脚配置
![image.png](//file.elecfans.com/web2/M00/81/A8/pYYBAGOQSmaAfFS3AABFR4RFVfY555.png)
- 创建工程
![image.png](//file.elecfans.com/web2/M00/81/1C/poYBAGOQRq6APaKyAABPzNEbJiY023.png)
移植与适配
修改bsp/renesas/ra4m2-eco/board/Kconfig的芯片型号
![image.png](//file.elecfans.com/web2/M00/81/37/poYBAGOQmGeAGQNaAAA16NdMAOk131.png)
参考BSP_USING_UART0增加BSP_USING_UART1-9,如下
![image.png](//file.elecfans.com/web2/M00/81/C2/pYYBAGOQnSCAGIxYAAB9207c49U102.png)
增加BSP_USING_SPI及BSP_USING_SCI_SPI0-9,如下
![image.png](//file.elecfans.com/web2/M00/81/C2/pYYBAGOQnfiABkQbAACdgpu94-c460.png)
在env里通过menuconfig选中UART0、UART4和SCI_SPI9,如下图:
![image.png](//file.elecfans.com/web2/M00/81/39/poYBAGOQoMaAQ2zqAABsrQc8SMM580.png)
![image.png](//file.elecfans.com/web2/M00/81/39/poYBAGOQoN-AI1zSAABnzLL3kmk064.png)
其中UART0的接收缓存大小改大点,这里是1024:
![image.png](//file.elecfans.com/web2/M00/81/39/poYBAGOQoPeAQNwzAABpbV9f8Uc796.png)
下面是SCI_SPI9
![image.png](//file.elecfans.com/web2/M00/81/39/poYBAGOQoUiAQBrEAAB3feHkPsU464.png)
然后修改控制台串口号为UART4,即通过206和207跟shell交互:
![image.png](//file.elecfans.com/web2/M00/81/39/poYBAGOQoZOAFmG2AAB0z3-NGJ4771.png)
敲命令scons --tartget=mdk5
生成keil工程
然后打开keil进行编译,然后是drv_spi.c报错如下:
![image.png](//file.elecfans.com/web2/M00/81/C4/pYYBAGOQpgmAEyWxAACuUc5Co-U054.png)
这是因为定义RT_USING_SPI之后,既没有定义BSP_USING_SPI0也没有BSP_USING_SPI1导致的,修改源码
#include "drv_spi.h"
#ifdef RT_USING_SPI
#define DBG_TAG "drv.spi"
#ifdef DRV_DEBUG
#define DBG_LVL DBG_LOG
#else
#define DBG_LVL DBG_INFO
#endif
#include <rtdbg.h>
#if defined(BSP_USING_SPI0) || defined(BSP_USING_SPI1)
int ra_hw_spi_init(void)
{
}
INIT_BOARD_EXPORT(ra_hw_spi_init);
#endif
void rt_hw_spi_device_attach(struct rt_spi_device *device, const char *device_name, const char *bus_name, void *user_data)
{
}
#endif
然后再次编译,报错如下:
![image.png](//file.elecfans.com/web2/M00/81/3A/poYBAGOQp_uAFyVLAABJRwbCXF0779.png)
修改drv_config.h,并复制bsp/renesas/libraries/HAL_Drivers/config下的ra6m4文件夹到此目录,改名为ra4m2
![image.png](//file.elecfans.com/web2/M00/81/C4/pYYBAGOQp9CAFig9AAC1IYFy7m8555.png)
修改bsp/renesas/libraries/Kconfig,在最后增加以下内容
![image.png](//file.elecfans.com/web2/M00/81/3B/poYBAGOQqouAHZBRAAA5KjwVxJM888.png)
再次进一下menuconfig,然后保存一下配置,最后进行keil编译。
报错如下:
![image.png](//file.elecfans.com/web2/M00/81/C5/pYYBAGOQqwKAZZ9nAABPWSh4_pQ300.png)
修改hal_entry.c里面的代码,改成如下后再次编译:
![image.png](//file.elecfans.com/web2/M00/81/3B/poYBAGOQrG2AIFvLAABMUyKwbr0506.png)
然后报错如下:
![image.png](//file.elecfans.com/web2/M00/81/C5/pYYBAGOQrIqAVC99AABMODsUk0Q329.png)
接下来需要增加sci_spi相关的驱动代码才能解决错误,请看下一节。
添加驱动代码
添加drv_sci_spi.c和drv_sci_spi.h,到bsp/renesas/libraries/HAL_Drivers目录下,然后修改该目录下的SConscript,增加如下内容:
![image.png](//file.elecfans.com/web2/M00/81/C5/pYYBAGOQrZCADqdHAAA0qK0gxBs240.png)
drv_sci_spi.c和drv_sci_spi.h内容请查看源码。
运行一次scons --target=mdk5,添加drv_sci_spi.c到工程中
然后编译keil工程,如果出现以下错误:
![image.png](//file.elecfans.com/web2/M00/81/3B/poYBAGOQro-AFdUoAABH6PkjDfE102.png)
则右键drv_sci_spi.c,然后排除drv_sci_spi.c编译一次,然后包含进来之后在编译一次就好了。
![image.png](//file.elecfans.com/web2/M00/81/3B/poYBAGOQrvCAUGI0AABlnUP6GMg491.png)
也可能是前面ra smart config中添加r_sci_spi名字写错了,如下图改过来就可以:
![image.png](//file.elecfans.com/web2/M00/81/3B/poYBAGOQr6KAa50xAABvTq-MOKE331.png)
到此工程编译应该是通过了。
添加SPI SD驱动
通过env的menuconfig添加SD卡相关驱动包:
![image.png](//file.elecfans.com/web2/M00/81/3B/poYBAGOQsCiAPo1dAACytm1uKPI831.png)
通过scons更新一下工程,hal_entry函数修改如下:
![image.png](//file.elecfans.com/web2/M00/81/3C/poYBAGOQsNyAKywQAADErYZ7Efw521.png)
然后编译,到此SD卡驱动起来了。接下来移植应用软件就可以了。