0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:recan 作者:recan 2023-09-28 14:47 次阅读

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_genhal_data.h(5): warning: In file included from...
./ra/fsp/inc/apibsp_api.h(32): warning: In file included from...
ra_cfg/fsp_cfg/bspbsp_cfg.h(6): error: 'board_cfg.h' file not found
#include "board_cfg.h"
^~~~~~~~~~~~~

1.jpg

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

1.jpg

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

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

前段时间参加瑞萨的设计大赛,我用的 RA4M2 这块开发板,基本也是KEIL+RASC的开发环境,但是印象中是没有出现这种更新了RASC的配置,导致KEIL编译不过的问题。我上网一搜,结果也是有人遇到类似的

1.jpg

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

1.jpg

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

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

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

1.jpg

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

1.jpg

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

4 解决问题

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

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

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

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

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

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

1.jpg

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    55

    文章

    4777

    浏览量

    84397
  • UART接口
    +关注

    关注

    0

    文章

    124

    浏览量

    15259
  • RT-Thread
    +关注

    关注

    31

    文章

    1266

    浏览量

    39865
  • FSP
    FSP
    +关注

    关注

    0

    文章

    34

    浏览量

    7101
收藏 人收藏

    评论

    相关推荐

    使用RT-Thread和CPK-RA2L1采集DHT11温湿度

    本篇文章主要介绍使用RT-Thread Studio 和 CPK-RA2L1评估,使用大佬的轮子采集温湿度
    的头像 发表于 10-11 11:34 1556次阅读
    使用<b class='flag-5'>RT-Thread</b>和CPK-<b class='flag-5'>RA2L1</b>采集DHT11温湿度

    【Vision Board创客营连载体验】RA8D1 Vision Board初体验

    1 RA8D1 Vision Board简介 Vision-Board 开发板RT-Thread
    发表于 04-23 21:53

    如何在CPK-RA6M4 MCU评估上让RT-Thread运行起来

    1、打开 RT-Thread studio,新建 RT-Thread 项目 —&amp;gt; 基于开发板,创建CPK-
    发表于 07-13 11:28

    RA4系列开发板体验】+rt-thread移植

    hal_entry(void)&amp;#123; rt_kprintf("\\nHello RT-Thread!\\n"); while (1) &
    发表于 11-24 21:28

    基于 RT-Thread Studio的CPK-RA6M4 开发板环境搭建

    RT-Thread 项目 —&amp;gt; 基于开发板,创建CPK-RA6M4的工程2、打开创建的工程,双击
    发表于 01-10 14:41

    RT-Thread联合即将发布高性价比HMI Board

    、灵活性较差。为此,RT-Thread 联合 推出了全新的 HMI Board 开发模式,取代传统的 HMI + 主控
    发表于 05-08 08:22

    FPB-RA6E1快速原型板】RT-Thread移植

    本篇主要在fpb-ra6e1上移植RT-Thread 5.0。 一、思路 通过RASC工具生成关于RA系列MCU的HAL驱动程序,通过scons配置RT-Thread 相关参数。
    发表于 05-24 23:52

    RT-Thread全球技术大会:关于RA2L1-CPK低功耗CPU演示

    RT-Thread全球技术大会:关于RA2L1-CPK低功耗CPU演示           审核编辑:彭静  
    的头像 发表于 05-27 15:23 1346次阅读
    <b class='flag-5'>RT-Thread</b>全球技术大会:关于<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA2L1</b>-CPK低功耗CPU演示

    RA2E1开发板资料

    RA2E1开发板资料
    发表于 11-07 19:50 4次下载
    <b class='flag-5'>RA2E1</b><b class='flag-5'>开发板</b>资料

    工程师自述:如何将RA2E1并入到RT-Thread的主线仓库

    支持RT-Thread最新版本RA2E1开发板终于要大展身手了 “ 熟悉
    的头像 发表于 03-25 20:50 690次阅读

    支持RT-Thread最新版本RA2E1开发板终于要大展身手了

    支持RT-Thread最新版本RA2E1开发板终于要大展身手了
    的头像 发表于 05-16 15:30 834次阅读
    支持<b class='flag-5'>RT-Thread</b>最新<b class='flag-5'>版本</b>的<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA2E1</b><b class='flag-5'>开发板</b>终于要大展身手了

    RA6M3 开发实践指南-UART实践

    RT-Thread即将发布一系列RA6M3外设驱动的实践指南,我们将使用RA6M3 HMI-Boar
    的头像 发表于 09-23 12:15 1265次阅读

    RA6M3 RT-Thread* LVGL HMI Board开发实践指南-GPIO实践

    是最常见的外设,GPIO可以实现对IO的高低电平控制,读取IO的电平,以及配置为中断输入后,中断函数处理相关事件待。 开发板简介 HMI-Board
    的头像 发表于 11-30 19:05 1136次阅读
    <b class='flag-5'>RA</b>6M3 <b class='flag-5'>RT-Thread</b>* LVGL HMI <b class='flag-5'>Board</b><b class='flag-5'>开发</b>实践指南-GPIO实践

    使用e² studio FSP基于RA2E1定时器配置PWM输出

    使用e² studio FSP基于RA2E1定时器配置PWM输出
    的头像 发表于 08-01 00:13 648次阅读
    使用<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>e</b>² studio FSP基于<b class='flag-5'>RA2E1</b>定时器配置PWM输出

    RT-Thread推出基于RT-Thread&;amp;OpenMV的RA8人机交互方案

    与战略合作伙伴RT-Thread携手于2024年2月底正式发布了全新的硬件产品——基于RT-Thread&;OpenMV的
    的头像 发表于 04-01 14:10 839次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>与<b class='flag-5'>RT-Thread</b>推出基于<b class='flag-5'>RT-Thread&</b>;<b class='flag-5'>amp</b>;OpenMV的<b class='flag-5'>RA</b>8人机交互方案