解决瑞萨RA2E1开发板在RT-Thread的版本中编译报错 error: ‘board_cfg.h’ file not found

继上上周在RA2E1开发板上跑通了RT-Thread最新版本的代码后,继续折腾新的内容,在上周日的时候给小伙伴直播了一下如何基于RT-Thread在RA2E1上做开发板。直播的过程中,演示了一下基于RASC配置外设模块,以自动生成代码。结果生成代码之后,编译居然报错了,那场面是相当的尴尬。本文就冲着这个问题,顺带讲解下如何解决这个问题,同时还给大家展示一个KEIL的使用小技巧。
本问题源自由我联合瑞萨发起的【致敬未来的攻城狮计划】活动,对此计划感兴趣的可以从 这里 了解更多。

文章目录

  • 1 写在前面
  • 2 遇到问题
  • 3 分析问题
  • 4 解决问题
  • 5 更多思考
  • 6 活动预告

1 写在前面

既上上周在RA2E1上把RT-Thread跑起来之后,在上周日的晚上,马不停蹄地给《致敬未来的攻城狮计划》的小伙伴们开了一趟在线直播课,旨在辅导小伙伴们尽快上手基于RA2E1开发板的开发,同时也把基于RT-Thread的一些开发方法和基本操作流程给大家介绍了一遍。

期间遇到了一些小插曲,说起来还是有点尴尬,都怪我这个直播没做好充足的准备,后面需要加强一下。

2 遇到问题

在直播课程中,我主要基于KEIL、RASC、FSP这几个软件给大家演示,介绍如何在KEIL中打开RASC,已经从零开始配置一个新的外设(以新增UART1为例)。在RASC中完成基本的配置之后,点击右上角的 Generate Project Content 完成代码生成,随后回到KEIL这边去编译,没想到遇到了一个很诡异的报错,现场直播可把我整懵了。看大意就是 board_cfg.h 头文件没找到。蒙头一看,还不知道咋回事,整了两下没搞定,还是一样的编译报错,那直播现场可是 大写的尴尬

../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"^~~~~~~~~~~~~

3 分析问题

现场直播的时候,我以为是我操作有误,导致引入了什么配置失效;当时看到头文件找不到,我第一时间想到的是 头文件的路径没有添加进去,于是我去KEIL的配置中,新增头文件搜索路径,结果还是失败:

直播现场快速验证发现不行,我就打圆场搪塞过去了,演示其他的了。

后面直播结束后,我以为记得这事,等到我有空坐下来的时候,我再好好思考并解决这个问题。

前段时间参加瑞萨的设计大赛,我用的 RA4M2 这块开发板,基本也是KEIL+RASC的开发环境,但是印象中是没有出现这种更新了RASC的配置,导致KEIL编译不过的问题。我上网一搜,结果也是有人遇到类似的 问题: RTT&瑞萨高性能 CPK-RA6M4] FSP之后都出现找不到board_cfg.h头文件和丢失Jlink驱动 - 瑞萨电子MCU - 电子工程世界-论坛 - Powered by Discuz! Archiver (eeworld.com.cn)。

原来是RASC搞的鬼!这么一说,我回到我的git环境一看:git status,果然是 board_cfg.h 被删除了。

有点想不明白的是为何之前 RA4M2的开发配置却没有这样的问题。

突然我想到调试RA2E1要求瑞萨的FSP整个配套版本都需要使用 3.5.0 版本,而之前我用的是4.x 的版本,难道是版本不一样导致的问题?

于是我对比了一下,两次KEIL工程里面对RASC/FSP版本的要求,确实不一样:

打开那个工程绑定的RASC,版本也确实不一样:

但我尝试过,直接把RA2E1的FAP升级到RA4M2使用的版本,是不行的;这应该就是两个大版本没有做好兼容吧。

4 解决问题

明白了问题的根源,解决起来了就有思路了。

要解决这个问题,不外乎两种方法:

第一种方式:就是每次执行完RASC的配置更新之后,手动把 board_cfg.h 文件恢复一下,再执行KEIL的编译。这种方式是比较笨重的,每次都需要人去接入,非常地 “不程序猿”!

第二种方式:采用自动化脚本的方式来完成这个复制、还原的操作,使得在编译过程无感知。作为程序猿,自然是要选择这个方式比较聪明。

要使用这种方式,我想到了使用BAT脚本,这个脚本也很简单,就是预先把board_cfg.h文件备份在一个目录,然后使用脚本检测对应目标目录下的board_cfg.h是否存在,如果不存在,则拷贝过去。对应的BAT脚本如下:

@echo offSET 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里面有个配置,编译前、编译后,可以自定义脚本运行的小功能;在这里使用它就可以完美地解决我们的需求。见图:

5 更多思考

其实,这个问题的引入本质还是一个 版本兼容的问题,由此我想到了几点:

  • 版本兼容始终是个大难题,无论是小庙还是大厂,都或多或少遇到这样的困扰,如果大家有什么好的思路,可以在评论席一起交流交流。
  • 学会精准地寻找问题的答案,你遇到的问题,保不准别人早已经遇到过;善于发现它们,并整理成文,方便更多的用它解决问题;
  • 善于用脚本去解决一些机械操作的问题;灵活解放自己的双手这很重要;如果是windows下开发,自然少不了BAT脚本;如果是linux下开发,少不了SHELL脚本;当然,如果你能掌握Python脚本开发,那就再好不过了;
  • 涉及到编译过程中,找不到头文件的问题,需要多思考一步,具体的排查问题方向,可以参考:【经验科普】实战分析C工程代码可能遇到的编译问题及其解决思路_架构师李肯的博客-CSDN博客

6 活动预告

最近我的**《致敬未来的攻城狮计划》第2期**,免费指导和学习RA2E1与RT-Thread的结合开发,正式开启报名了,有意向报名的朋友,可以通过这里来了解更多信息。【重磅推出】《致敬未来的工程师计划》,第2期计划火热招募中。。。

【致敬嵌入式攻城狮第2期活动预热征文】解决瑞萨RA2E1开发板在RT-Thread的版本中编译报错 error: ‘board_cfg.h‘ file not found相关推荐

  1. 【致敬嵌入式攻城狮第2期活动预热征文】 [深入理解SSD 20] 话说固态硬盘里的HMB

    声明 主页: 元存储的博客_CSDN博客 依公开知识及经验整理,如有误请留言. 个人辛苦整理,付费内容,禁止转载. 内容摘要 1. 何为 HMB? 2. HMB 是怎么做到的? 2.1 被替代的 DR ...

  2. 【致敬嵌入式攻城狮第2期活动预热征文】蜂鸣器加流水灯按键检测的实现

    一.实验目的 实现按键按下去的时候蜂鸣器响,并且有流水灯效果,当按下另一个按键的时候,关闭蜂鸣器和流水灯. 二.实验原理 图 5.2.1 蜂鸣器原理图 蜂鸣器与 STM32F4 连接原理图图中我们用到 ...

  3. Haozi的嵌入式攻城狮修炼历程

    文章目录 入门 -- 基础 进阶 -- RTOS(RT-Thread) 番外:工具 练习:设计 入门 -- 基础 ===>> 此系列代码在这 Gitee <<=== STM32 ...

  4. 嵌入式攻城狮 I Linux基础

    一.操作系统概述 1.励志公式 2.什么是OS? 3.不同领域的主流操作系统 4.虚拟机 5.操作系统发展简史 转存失败重新上传取消二.Linux与Windows对比 1.Windows与Linux的 ...

  5. 《致敬未来的攻城狮计划》 第2期正式开启报名。。。

    <致敬未来的攻城狮计划> 第2期 摘要: 一个崭新的计划,寻找那群有志于向嵌入式发展的未来工程师! 1 活动计划初衷 <致敬未来的攻城狮计划>来源于架构师李肯的一个念想,我一直 ...

  6. 【致敬未来的攻城狮计划】— 连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下(文字上的初理解)

    系列文章目录 系列文章目录 前言 一.瑞萨MCU(CPK_RA2E1是瑞萨RA系列开发板)是什么? 首先引入是什么? 他的优势在哪? 瑞萨CPK_RA2E1 对标stm32 相似之处和不同之处? 瑞萨 ...

  7. 【致敬未来的攻城狮计划】第1期 作业汇总贴 + 获奖公布

    ​ 文章目录 一.写在前面 二.种子学员介绍 三.作业贴汇总 四.小小总结 五.获奖公布 六.学员有话说 七.特别致谢 一.写在前面 时间过得真快,距离 [致敬未来的攻城狮计划]第1期 的发起,已经过 ...

  8. 【致敬未来的攻城狮计划】第2期定向赠书《RT-Thread设备驱动开发指南》+ 《GD32 MCU原理及固件库开发指南》

    开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯(超链接:http://yyds.recan-li.cn)和 瑞萨MCU (超链接:瑞萨电子 (Renesas Electronics ...

  9. 《致敬未来的攻城狮计划》| 文末赠书3本

    <致敬未来的攻城狮计划>-- 文末有福利 摘要: 一个崭新的计划,寻找那群有志于向嵌入式发展的未来工程师! 文章目录 1 活动计划初衷 2 活动计划形式 3 活动计划收获 4 活动计划要求 ...

最新文章

  1. 您知道为何要采用固定的迭代周期吗
  2. java.sql.SQLException: Zero date value prohibited 报错分析
  3. UA MATH566 统计理论 Fisher信息量的性质上
  4. c# uri 取文件名_asp.net获取当前网址url的各种属性(文件名、参数、域名 等)的代码...
  5. MyEclipse 2017(英文版)安装教程
  6. 一百馒头一百僧,大僧三个更无争,小僧三人分一个大小和尚得几丁?
  7. 设计抗住千万级流量的架构思路(转)
  8. jquery 立体走马灯_jQuery简单的文字跑马灯特效
  9. python支持esc退出_听说你不会用mac电脑装Python?看了这篇文章,秒懂!
  10. dubbo整合springmvc 使用 学习二(spring+dubbo+zookeeper单机服务)
  11. Android系统的若干关键词大汇总
  12. IGBT工作原理,解析IGBT工作原理及作用
  13. android读取剪切板的方法,Android10中获取剪切板内容
  14. 前端笔记05 - js
  15. 尚德机构季报图解:净利1.79亿 实现连续四个季度盈利
  16. html 链接长宽,CSS实现长宽比的几种方案【转载】
  17. 苹果 WWDC21 发布会全汇总,iOS 15更个性化,全家桶协作更有生产力
  18. 开源的轻量级JSON存储Kinto介绍
  19. jquery获取元素(父级的兄弟元素的子元素)
  20. python绘制缓和曲线_autocad绘制缓和曲线

热门文章

  1. 河南省小学计算机教室配备目录,河南省小学功能室 教育技术装备标准.doc
  2. PHP接入 paytm的支付 和转账
  3. 基于QFT的量子加法器的原理与实现-mindspore quantum
  4. Java 语言中的函数编程
  5. linux创建定时任务定期(每分钟)执行一次脚本
  6. 【愚公系列】2022年02月 微信小程序-Behavior
  7. 数据接入 数据膨胀与系统瓶颈
  8. 恢复OA6.1 演示帐套
  9. 引文分析软件histcite简介
  10. GD32 ADC检测电压