【瑞萨RA4系列开发板体验】RA通用VSCode开发环境搭建并顺带流水灯
作者:HonestQiao
瑞萨为开发者提供了多种开发工具,其中有e2 studio、Keil/IAR+Pack的模式。 e2 studio是基于Eclipse的,功能强大,性能低下! Keil+Pack是基于老旧的Keil的,能够用,很不好用。 IAR也是商用工具,用不起。 幸好,瑞萨提供的RA系列图形化配置工具(RASC,RA智能配置器),支持生成cmake工程,用开源的ARM-GCC就能够编译,将其与VSCode结合,就能够形成一个强大的开发编译烧录调试的开发环境。 RASC其实也不想装,基于老大笨的Eclipse,但多少还有一些用处,能够帮忙进行一些关键性的配置,也不需要时时用,暂且忍受吧。 一、软件资料包准备 要搭建基于VSCode的RA开编烧调环境,瑞萨提供的软件资料包,只需要两个即可:
其他的通通都不需要,没用,还占用空间。 下载完成后,做点小处理,提取需要的文件: 建议Windows下面按照下面的目录放置: macOS/Linux按照如下目录放置在当前用户根目录下: 另外,还需要安装编译烧录相关的工具: 安装时,安装路径中最好不要有空格,以免存在潜在问题: 注意要勾选下面的选项: 安装完成后,开黑窗口,检查安装是否成功: 如果找不到的话,那么注销一下当前用户,再登录即可。
安装命令: - brew install arm-none-eabi-gcc
- arm-none-eabi-gcc -v
复制代码
- sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
- sudo apt-getupdate
- sudo apt-get install gcc-arm-embedded
- arm-none-eabi-gcc -v
复制代码- 其他Linux:使用各自系统的包管理工具进行安装
- cmake和make
macOS/Linux上面,一般都安装了,不单说了。 Windows上面,需要先下载,再安装: 安装路径,也最好没有空格。 安装完成后,同样检测一下安装是否成功,不然就注销重新登录: 然后下载make: - # 安装,如果提示没有python3,那就换用python
- python3 -m pip install -U pyocd
- # 查看版本
- pyocd --version
复制代码
二、安装RASC 在Windows系统上,直接点击 setup_fsp_v4_1_0_rasc_v2022-10.exe 安装即可。其也有Linux下面的版本,在前面的下载页面可以下载。 其安装路径,也最好没有空格。 一路Next到Install,到Finish即可,没有特殊的地方。 三、生成测试代码 找到rasc的安装目录,运行rasc: 可以打开配置界面,添加新工程: 然后设置好对应的类型: 在设置项目的类型: 以及RTOS的类型: 最后选择不带点灯的模版: RASC一番自动操作后,最终生成了下面的工程: 点击右上角的生成代码,就能生成需要的工程了: 然后到工程目录中,就能看到输出的cmake工程了: 四、测试代码编译 前面已经生成了cmake的工程,我们只需要进行编译即可。 打开一个黑窗口,然后切换到目录下,再使用cmake进行编译即可: Windows: - cd \Projects\Renesas\Workspace\Test_Project
- cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=cmake/gcc.cmake -H. -B./build
- cmake --build build
复制代码macOS、Linux: - cd ~/Projects/Renesas/Workspace/Test_Project
- cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=cmake/gcc.cmake -H. -B./build
- cmake --build build
复制代码运行第一个cmake的时候,会提示如下的错误(macOS/Linux错误与下面类似): 意思是说,没有设置编译工具链的查找路径,打开Config.cmake设置一下就好: 简单来说,就是要设置CMAKE_FIND_ROOT_PATH的路径,能够在其中找到arm-none-eabi-gcc这个文件 然后再次执行一遍,再执行第二条cmake指令,最终结果如下: Windows: macOS/Linux: 可以用dir(win)或者ls(macOS/Linux)查看一下生成的文件: 五、VSCode配置 RASC生成的工程,是cmake的,在VSCode中,可以很方便的配置整合。 先用VSCode打开工程所在的目录,然后进行配置。 重点在于如下三个文件的配置: - {
- "configurations": [
- {
- "name": "Generic",
- "configurationProvider": "ms-vscode.cmake-tools",
- "includePath": [
- "./ra/board/ra4m2_ek/",
- "./ra/fsp/inc/",
- "./ra/fsp/inc/api/",
- "./ra/fsp/inc/instances/",
- "./ra/fsp/inc/",
- "./ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/",
- "./ra/fsp/src/bsp/mcu/all/",
- "./ra/fsp/src/bsp/mcu/ra4m2/",
- "./ra/arm/CMSIS_5/CMSIS/Core/Include/",
- "./ra_gen/",
- "./ra_cfg/fsp_cfg/bsp/",
- "./ra_cfg/fsp_cfg/"
- ],
- "defines": [
- "_DEBUG",
- "UNICODE",
- "_UNICODE"
- ],
- "intelliSenseMode": "clang-x64",
- "compilerArgs": [],
- "browse": {
- "path": [],
- "limitSymbolsToIncludedHeaders": true
- }
- }
- ],
- "version": 4
- }
复制代码.vscode/tasks.json: 主要用于配置相关的快捷路径,除了ARMGCC_DIR和Renesas.RA_DFP.4.1.0.pack,其他的一般不用配置。
- {
- // See https://go.microsoft.com/fwlink/?LinkId=733558
- // for the documentation about the tasks.json format
- "version": "2.0.0",
- /*"options": {
- "cwd": "${workspaceFolder}/build"
- },*/
- "options": {
- "env": {
- "ARMGCC_DIR": "/usr/local", // Windows下面根据安装路径设置
- "PATH": "/usr/local/bin:${env:PATH}" //Windows下面直接欧注释掉
- }
- },
- "tasks": [
- {
- "label": "_makebuildfolder",
- "type": "shell",
- "command": "mkdir",//Windows下面改为dir
- "args": [
- "-p",//Windows下面直接注释掉
- ""${workspaceFolder}""
- ],
- "problemMatcher": [],
- "group": "none"
- },
- {
- "label": "env",
- "type": "shell",
- "command": "env", //Windows下面改为set
- "args": [],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "cmake",
- "type": "shell",
- "command": "cmake",
- "args": [
- "-G","Unix Makefiles",
- "-DCMAKE_TOOLCHAIN_FILE=cmake/gcc.cmake",
- "-H.",
- "-B./build"
- ],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "clean",
- "type": "shell",
- "command": "rm",//Windows下面rmdir
- "args": [
- "-rf", //Windows下面"/s","/q".
- "./build" //Windows下面改./build为build
- ],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "make",
- "type": "shell",
- "command": "cmake",
- "args": [
- "--build",
- "build"
- ],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "flash",
- "type": "shell",
- "command": "pyocd",
- "args": [
- "flash",
- // "--erase",
- // "chip",
- "--target",
- "r7fa6m5bh", // r7fa4m2ad 、 r7fa6m5bh
- "--pack",
- "Renesas.RA_DFP.4.1.0.pack文件的绝对路径",
- "./build/CMakeFiles/FSP_Project.elf.dir/Test_Project.elf"
- ],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "Build",
- "dependsOrder": "sequence",
- "dependsOn": [
- "_makebuildfolder",
- "env",
- "cmake",
- "make"
- ],
- "problemMatcher": []
- },
- {
- "label": "Build_Flash",
- "dependsOrder": "sequence",
- "dependsOn": [
- "Build",
- "flash",
- ],
- "problemMatcher": []
- }
- ]
- }
复制代码.vscode/launch.json文件: 主要配置R7FA4M2AD.svd、Renesas.RA_DFP.4.1.0.pack及armToolchainPath的路径:
- {
- "version": "0.2.0",
- "configurations": [
- {
- "name": "RA Debug with PyOCD",
- "cwd": "${workspaceRoot}",
- "executable": "./build/CMakeFiles/FSP_Project.elf.dir/FSP_Project.elf",
- "request": "launch",
- "type": "cortex-debug",
- "runToEntryPoint": "main",
- "servertype": "pyocd",
- "targetId":"r7fa4m2ad", // r7fa4m2ad 、 r7fa6m5bh
- "armToolchainPath": "/usr/local/bin/",
- "svdFile": "SVD/R7FA4M2AD.svd的绝对路径", // R7FA4M2AD.svd 、 R7FA6M5BH.svd
- "showDevDebugOutput": "both",
- "preLaunchTask": "Build",
- "cmsisPack": "Renesas.RA_DFP.4.1.0.pack的绝对路径"
- }
- ]
- }
复制代码然后,就可以在VSCode中运行对应的任务了。 现将板子用仿真调试器鱼电脑连接,具体接口位置如下: 连接后如下: 然后使用pyocd检查: 再调用Build_Flash任务,结果如下: Windows: macOS/Linux: 然后,如下图所示,进入调试: 说明:Windows环境下VSCode环境配置,与macOS/Linux相比,没有特殊,不同系统上一致,就是pack、svd、arm gcc的路径不同,rm指令不同。 六、流水灯测试 完成了上面的工作后,就可以正式使用VSCode进行开发了,下面我们来一个流水灯测试。 先看原理图: 实物图: 从原理图可知,LED1、LED2、LED3对听P415、P404、P405,现在要FSP里面进行配置: 配置好以后,就可以在VSCode里面控制他们了: - void hal_entry(void)
- {
- unsigned int c = 0;
- bsp_io_port_pin_t pins[] = {
- BSP_IO_PORT_04_PIN_15,
- BSP_IO_PORT_04_PIN_05,
- BSP_IO_PORT_04_PIN_05
- };
- /* TODO: add your own code here */
- R_BSP_PinAccessEnable();
- while(1) {
- for(unsigned int i=0;i<sizeof(pins)/sizeof(bsp_io_port_pin_t);i++) {
- if(i==c) {
- R_BSP_PinWrite(pins[i], BSP_IO_LEVEL_HIGH);
- } else {
- R_BSP_PinWrite(pins[i], BSP_IO_LEVEL_LOW);
- }
- }
- R_BSP_SoftwareDelay(100, BSP_DELAY_UNITS_MILLISECONDS);
- c++;
- if(c>=3) {
- c = 0;
- }
- }
- #if BSP_TZ_SECURE_BUILD
- /* Enter non-secure code */
- R_BSP_NonSecureEnter();
- #endif
- }
复制代码具体文件如下: 再次调用Build_Flash任务,就会重新编译烧录,板子上的三颗LED,就会欢快的流水点亮嘞: 【重点】
|