Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
编译
解决瑞萨RA2E1开发板在RT-Thread的版本中编译报错 error: 'board_cfg.h' file not found
发布于 2023-04-01 17:46:55 浏览:460
订阅该版
**解决瑞萨RA2E1开发板在RT-Thread的版本中编译报错 error: 'board_cfg.h' file not found** > 继上上周在RA2E1开发板上跑通了RT-Thread最新版本的代码后,继续折腾新的内容,在上周日的时候给小伙伴直播了一下如何基于RT-Thread在RA2E1上做开发板。直播的过程中,演示了一下基于RASC配置外设模块,以自动生成代码。结果生成代码之后,编译居然报错了,那场面是相当的尴尬。本文就冲着这个问题,顺带讲解下如何解决这个问题,同时还给大家展示一个KEIL的使用小技巧。 [toc] # 1 写在前面 既上上周在RA2E1上把RT-Thread跑起来之后,在上周日的晚上,马不停蹄地给《致敬未来的攻城狮计划》的小伙伴们开了一趟在线直播课,旨在辅导小伙伴们尽快上手基于RA2E1开发板的开发,同时也把基于RT-Thread的一些开发方法和基本操作流程给大家介绍了一遍。 期间遇到了一些小插曲,说起来还是有点尴尬,都怪我这个直播没做好充足的准备,后面需要加强一下。 # 2 遇到问题 在直播课程中,我主要基于KEIL、RASC、FSP这几个软件给大家演示,介绍如何在KEIL中打开RASC,已经从零开始配置一个新的外设(以新增UART1为例)。在RASC中完成基本的配置之后,点击右上角的 **Generate Project Content** 完成代码生成,随后回到KEIL这边去编译,没想到遇到了一个很诡异的报错,现场直播可把我整懵了。看大意就是 board_cfg.h 头文件没找到。蒙头一看,还不知道咋回事,整了两下没搞定,还是一样的编译报错,那直播现场可是 **大写的尴尬** ! ```c ../libraries/HAL_Drivers/config/ra2l1/uart_config.h(15): warning: In file included from... ./ra_gen\hal_data.h(5): warning: In file included from... ./ra/fsp/inc/api\bsp_api.h(32): warning: In file included from... ra_cfg/fsp_cfg/bsp\bsp_cfg.h(6): error: 'board_cfg.h' file not found #include "board_cfg.h" ^~~~~~~~~~~~~ ``` ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230401/ae8a2c6b617d94a622d209591f387a42.png.webp) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230401/45d2090e5159afa7fcf1e0c37f1e0e42.png) # 3 分析问题 现场直播的时候,我以为是我操作有误,导致引入了什么配置失效;当时看到头文件找不到,我第一时间想到的是 头文件的路径没有添加进去,于是我去KEIL的配置中,新增头文件搜索路径,结果还是失败: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230401/acd4430bb4c364929d6a7dd06d69a93a.png.webp) 直播现场快速验证发现不行,我就打圆场搪塞过去了,演示其他的了。 后面直播结束后,我以为记得这事,等到我有空坐下来的时候,我再好好思考并解决这个问题。 前段时间参加瑞萨的设计大赛,我用的 **RA4M2** 这块开发板,基本也是KEIL+RASC的开发环境,但是印象中是没有出现这种更新了RASC的配置,导致KEIL编译不过的问题。我上网一搜,结果也是有人遇到类似的 问题: [RTT&瑞萨高性能 CPK-RA6M4\] FSP之后都出现找不到board_cfg.h头文件和丢失Jlink驱动 - 瑞萨电子MCU - 电子工程世界-论坛 - Powered by Discuz! Archiver (eeworld.com.cn)](https://bbs.eeworld.com.cn/archiver/tid-1205025.html)。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230401/3bfb95450b0db48e61a45f3c4dba5db1.png.webp) 原来是RASC搞的鬼!这么一说,我回到我的git环境一看:git status,果然是 board_cfg.h 被删除了。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230401/3bfb95450b0db48e61a45f3c4dba5db1.png.webp) 有点想不明白的是为何之前 RA4M2的开发配置却没有这样的问题。 突然我想到调试RA2E1要求瑞萨的FSP整个配套版本都需要使用 **3.5.0** 版本,而之前我用的是4.x 的版本,难道是版本不一样导致的问题? 于是我对比了一下,两次KEIL工程里面对RASC/FSP版本的要求,确实不一样: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230401/28c55fe3576a89b5d660e4b38cab0adb.png) 打开那个工程绑定的RASC,版本也确实不一样: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230401/5967e103090abb4fc859419ca9cc8ecb.png.webp) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230401/a902515eb04e5656d3111c2682642bdf.png.webp) 但我尝试过,直接把RA2E1的FAP升级到RA4M2使用的版本,是不行的;这应该就是两个大版本没有做好兼容吧。 # 4 解决问题 明白了问题的根源,解决起来了就有思路了。 要解决这个问题,不外乎两种方法: 第一种方式:就是每次执行完RASC的配置更新之后,手动把 board_cfg.h 文件恢复一下,再执行KEIL的编译。这种方式是比较笨重的,每次都需要人去接入,非常地 “不程序猿”! 第二种方式:采用自动化脚本的方式来完成这个复制、还原的操作,使得在编译过程无感知。作为程序猿,自然是要选择这个方式比较聪明。 要使用这种方式,我想到了使用BAT脚本,这个脚本也很简单,就是预先把board_cfg.h文件备份在一个目录,然后使用脚本检测对应目标目录下的board_cfg.h是否存在,如果不存在,则拷贝过去。对应的BAT脚本如下: ```c @echo off SET BoardCfgFile=board_cfg.h SET SourceFile=ra_bak\%BoardCfgFile% SET DstFile=ra_cfg\fsp_cfg\bsp\%BoardCfgFile% if exist %SourceFile% ( if not exist %DstFile% ( echo f | xcopy %SourceFile% %DstFile% /i /y ) else ( echo %DstFile% is exist! ) ) else ( echo %SourceFile% is not exist! ) ``` 把上面的脚本取名为 **board_cfg.bat**,在每次KEIL执行编译前调用一下就可以了。 但是,还是要手动去执行一下这个BAT脚本? 这就需要了解一下KEIL里面有个配置,编译前、编译后,可以自定义脚本运行的小功能;在这里使用它就可以完美地解决我们的需求。见图: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230401/0becf70c05baf5e5995c460b7d807e05.png) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230401/37335a865544ba7200ab1cf8708440af.png) # 5 更多思考 其实,这个问题的引入本质还是一个 **版本兼容的问题**,由此我想到了几点: - 版本兼容始终是个大难题,无论是小庙还是大厂,都或多或少遇到这样的困扰,如果大家有什么好的思路,可以在评论席一起交流交流。 - 学会精准地寻找问题的答案,你遇到的问题,保不准别人早已经遇到过;善于发现它们,并整理成文,方便更多的用它解决问题; - 善于用脚本去解决一些机械操作的问题;灵活解放自己的双手这很重要;如果是windows下开发,自然少不了BAT脚本;如果是linux下开发,少不了SHELL脚本;当然,如果你能掌握Python脚本开发,那就再好不过了; - 涉及到编译过程中,找不到头文件的问题,需要多思考一步,具体的排查问题方向,可以参考:[【经验科普】实战分析C工程代码可能遇到的编译问题及其解决思路_架构师李肯的博客-CSDN博客](https://recan.blog.csdn.net/article/details/122261137) # 6 活动预告 最近我的**《致敬未来的攻城狮计划》第2期**,免费指导和学习RA2E1与RT-Thread的结合开发,正式开启报名了,有意向报名的朋友,可以通过这里来了解更多信息。[【重磅推出】《致敬未来的工程师计划》,第2期计划火热招募中。。。](https://bbs.csdn.net/topics/614375136) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230401/423cbf7f55d58ef60391342c9e968b33.png.webp)
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
李肯陪你玩赚嵌入式
2022年度和2023年度RT-Thread社区优秀开源布道师,COC深圳城市开发者社区主理人,专注于嵌入式物联网的架构设计
文章
47
回答
504
被采纳
82
关注TA
发私信
相关文章
1
Rtthread-studio编译报错
2
编译及下载必要进程的名称
3
studio 命令行编译
4
BSP首次使用编译不过
5
ART-PI factory demo在gcc 9.3.1 上无法编译.
6
ART-PI中 ART-Pi_W25Q64.stldr是怎么制作和应用的
7
RT-Thread Studio编译操作失败
8
ART-PI的例子工程文件导入后编译不通过
9
如何选择只编译部分文件经验
10
lv7_rtthread_f1c100s编译问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
cubemx
PWM
flash
packages_软件包
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
ulog
C++_cpp
at_device
本月问答贡献
张世争
7
个答案
2
次被采纳
用户名由3_15位
10
个答案
1
次被采纳
KunYi
4
个答案
1
次被采纳
踩姑娘的小蘑菇
2
个答案
1
次被采纳
bernard
1
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
4
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部