Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
瑞萨_Renesas
支持RT-Thread最新版本的瑞萨RA2E1开发板终于要大展身手了
发布于 2023-03-24 08:55:33 浏览:464
订阅该版
**支持RT-Thread最新版本的瑞萨RA2E1开发板终于要大展身手了** > 熟悉RT-Thread和瑞萨MCU的朋友都知道,当前RT-Thread仓库的主线代码是不支持RA2E1这个BSP的。刚好,最近我在联合瑞萨推广一个叫《致敬未来的攻城狮计划》,使用的就是RA2E1开发板,正好乘着这个机会把RA2E1这个BSP合入到主线去,想必一定非常有趣。 [toc] # 1 写在前面 借助一个有趣的计划,完成一个有趣的任务,这本身就是一件很有趣的事情。 帮助一群未来的攻城狮快速地成长,把一颗芯片平台让更多人的发现并用起来,让RT-Thread的生态越来越丰富,这些事情,我们正在做,也会一直做下去,希望有更多的人加入并参与我们的实践中来。 本文的主要任务,还是聚焦在如何将RA2E1并入到RT-Thread的主线仓库。 # 2 《致敬未来的攻城狮计划》 ## 2.1 计划内容 > 一个崭新的计划,寻找那群有志于向嵌入式发展的未来工程师! **活动计划初衷** [《致敬未来的攻城狮计划》](https://bbs.csdn.net/topics/613916237)来源于架构师李肯的一个念想,我一直在寻找那群渴望学习并专注于提升自我的技术朋友,他们可能还是憧憬在象牙塔里的大学生,也可能是初出茅庐的小助理,还有可能是一群转行无门的技术小白,但是他们都有一颗热诚扎入嵌入式领域的心,我称他们为【**未来的攻城狮**】,而我正是希望成为他们的星光指路人。 本次计划的初衷与瑞萨MCU不谋而合,瑞萨非常支持这群《**未来的攻城狮**》,愿意为他们的持续学习提供必要的硬件支持。 正是在这样的背景下,[《致敬未来的攻城狮计划》](https://bbs.csdn.net/topics/613916237)孕育而生,一群闪亮的新星即将登场,嵌入式的技术即将因你们而更加精彩! 想要了解更多关于这个计划的内容,可以关注我的 [个人社区](https://bbs.csdn.net/topics/613916237 ) https://bbs.csdn.net/topics/613916237 (**复制链接到浏览器即可打开**) ## 2.2 当前进展 [《致敬未来的攻城狮计划》](https://bbs.csdn.net/topics/613916237),从3月中旬就开始宣传推广,经过一周的报名筛选,我们挑选了10名优秀的、有潜力的未来攻城狮,第一时间聚拢大家,聊一聊这次计划的主要目的和开展形式,很快得到了大家的一致认可和支持,计划得以快速启动。 作为本次计划的主赞助商,瑞萨也在收到审核通过的名单后,迅速把板子发过来,这不刚过去一周,很多小伙伴已经把板子玩上几天了,好不惬意。 昨天开始,我在社区发布本期计划的激励措施,号召大家再社区打卡学习,现在好多小伙伴已经开始火热打卡学习了,欢迎大家来围观。(**复制下面的链接到浏览器即可打开**) 【致敬未来的攻城狮计划】[任务提交及奖惩措施的相关说明](https://bbs.csdn.net/topics/614070195) https://bbs.csdn.net/topics/614070195 【致敬未来的攻城狮计划】[学习打卡频道](https://bbs.csdn.net/forums/recan-iot?typeId=2717193) https://bbs.csdn.net/forums/recan-iot?typeId=2717193 ![image-20230323232547334](https://s2.loli.net/2023/03/24/STXADq3ihOrHBob.png) ![image-20230323232348559](https://s2.loli.net/2023/03/24/pulEwPz5Y9bZ2QB.png) # 3 让RA2E1支持RT-Thread ## 3.1 遇到的问题 最早我们在为[《致敬未来的攻城狮计划》](https://bbs.csdn.net/topics/613916237)选型开发板的时候,也有过考虑的,尽快要选择一款能快速用上RT-Thread的板子。 当得知RT-Thread主线代码其实已经支持了RA2L1的,而我们选型的RA2E1与RA2L1基本是完全兼容的,只是存储有些不一样。 自然我的第一感觉也是,那就用它吧。应该问题不大,毕竟还有RA2L1在那里兜底。 然而,不幸的是,当我们参与计划的小伙伴拿到板子后,根据我给他们的信息提示,去RT-Thread的主线仓库拉取RA2L1的代码时,到KEIL中一编译,竟然发现有 **20几个编译错误**。Word天呐,简直有点不敢相信,然后一看仓库代码的提交记录,最后一次提交大概是 **2个月前**,感觉代码也不旧啊?怎么会这样,有些纳闷! ![image-20230324001213154](https://s2.loli.net/2023/03/24/mZiV9416up5hMDa.png) ## 3.2 查找资料 果然,白嫖是不可能的,这辈子都不可能白嫖的,关键时候还是要靠自己的双手来解决问题(**此处没有开车**)! 遇到问题,首先我想到的可能是 [RT-Thread-首页-RT-Thread问答社区 - RT-Thread](https://club.rt-thread.org/index.html),虽然现在的活跃度比较差一些,但整体来说,还是能够找到一些有用的东西,帮助自己解决一些问题。 抱着试一下的心态去搜索,果然论坛里面很多介绍RA2L1这块芯片(板子)的,也有一个搭建开发环境踩坑的笔记之类的,看起来还是比较多。 ![image-20230324001606438](https://s2.loli.net/2023/03/24/PnvVFGcwtkTjRIX.png) 经过一番筛选,我找到了这一篇文章 : [RT-Thread-【开发板评测】Renesas RA2L 点亮LCD (SPI)RT-Thread问答社区 - RT-Thread](https://club.rt-thread.org/ask/article/89f43e3f0d1370be.html),里面的几点对我接上面遇到的编译问题就很有帮助。 ![image-20230324001708825](https://s2.loli.net/2023/03/24/bU5mEycwPjBuHXN.png) 根据他的提示,很快我明白了原理,原理是RT-Thread主仓库的代码并不是根据这套板子来配置的,而是其他的一些配置,所以,需要解决编译的问题,要修改以下几个配置: - 使能RA2L1的uart9 - RT-Thread的调试串口启用uart9 - RT-Thread的串口驱动版本选用V2 以上几个步骤需要借助env工具,然后配置完了,重新使用 **scons --target=mdk5** 生成KEIL的工程。 经过上面的配置后,再编译新的工程,终于是 **0 error** 了。 ![image-20230324002116202](https://s2.loli.net/2023/03/24/DTMSjqOKPXBCiex.png) ## 3.3 新的问题来了 本以为,探索之旅到此结束,没想到把编译出来的可执行文件通过烧录器下载到(**RA2E1**)板子上,居然跑不起来,连我们常见的灯也不闪了,简直傻眼了。我开始想起最早的时候选项时:RA2E1与RA2L1是兼容的! 该不会除了啥问题吧?排除掉是板子的问题以及接线的问题之后,我开始锁定,非常有可能就是两个板子不完全兼容导致的。 手上有调试器,自然先跑一把调试下看看。记得上一小节找到的那个帖子,有说他遇到的问题是直接开始,最后排查是串口的问题导致,注释掉某一行代码就解决了,我们也尝试用这个小方法,还是不行,结果是一样的,灯不闪烁,串口无输出。 使用单步一调试,跳出这样的出错,本想去搜搜看,可是压根没有这样关键字的资料。 ![image-20230324002829364](https://s2.loli.net/2023/03/24/63Dlfw9YcyIJpKW.png) 虽然没有啥解决方法,但是从这张错误中,我们可以看到,一定是 **MEMORY** 出问题了。 这时候我想起最早的选项,两者代码上是兼容的,但是就是内存不太一样。 至此,我基本断定了就是 **Memory Layout** 导致的问题,但是具体要怎么修改才行呢。还是没有思路。 ## 3.4 咨询大神 自己想了一天,加上工作也比较忙,一直拖着没有解决。 想着这个问题我不能托太久,不然学习的小伙伴,也没法往下基于这个板子学习RT-Thread了。 于是我想到一个方法,那我就厚着脸皮去问一下瑞萨原厂的开发工程师吧。 之前参加 RA4M2网关设计大赛的时候,有加到RA的工程师,我就虚心地去请教了一下: ![image-20230324003415509](https://s2.loli.net/2023/03/24/2EgerDWtHf65Lwl.png) 大家都工作忙,也不可能真的手把手教你去解决,关键时候还得靠自己。 从这次简短的沟通,基本已经完全确认方向了,就是内存的配置问题。 有了思路,就好办了,问题应该很快就有方法了。 ## 3.5 潜心研究 在这里,我不得不提一句,瑞萨的资料是真的多,多到什么程度呢?就是多到你不知道该看哪个?或者说,究竟哪个文档或资料才能找到你想要的东西。 ![image-20230324003833787](https://s2.loli.net/2023/03/24/HNDVyz68qlgmtvM.png) 既然上面大致都已经定位到内存的问题,那我首先要做的就是找出 RA2E1 和 RA2L1 在内存上的差别究竟在哪里? 这些信息从哪里可以得出,那自然是官方的datasheet 最权威了。 最后,我也是大致翻看,发现这份**《RA2E1硬件用户手册(中英).pdf》**有讲到Memory划分的详细内容,既然RA2E1有,自然RA2L1也有类似的文档,所以我就从官方找到了**《RA2L1硬件用户手册(中英).pdf》**。 分别找到他们的内存划分那一章节: ![image-20230324004203049](https://s2.loli.net/2023/03/24/pQZJTy4mPG8Ycrg.png) ![image-20230324004243815](https://s2.loli.net/2023/03/24/I5EDNJLw1KSVp9f.png) ![image-20230324004402451](https://s2.loli.net/2023/03/24/knprNA8bjtXqPhR.png) ![image-20230324004331818](https://s2.loli.net/2023/03/24/1P7dgIrtSYZl6Wy.png) 有了这些内存分布之后,基本就知道怎么改了。 ## 3.6 试着解决问题 熟悉KEIL编译环境的都知道,在KEIL里面,关于芯片的内存分布是在一种叫 **分散文件** 的东西里面配置,它的文件名后缀是 .scat 顺着工程目录找到对应的分散文件,看到里面开头有这么一段: ```shell #! armclang -mcpu=cortex-m4 --target=arm-arm-none-eabi -E -x c -I. #include "memory_regions.scat" ``` 虽然不太懂它的语法,但是一猜就知道,这种就是文件包含,也就是说芯片的内存划分是单纯放在 **memory_regions.scat** 文件里面。 这里,其实我还做了一个小动作,就是我从其他小伙伴手上拿到一份,可以工作的示例工程(这个工程是使用瑞萨的配置工具,从0到1自己配置出来的),所以它里面的内存划分肯定是正确的。 两个分散文件一拎出来,我一对比,就发现问题所在了: ![image-20230324005115092](https://s2.loli.net/2023/03/24/uS2yEw1CevfHtVL.png) 还有一个方法也可以确认下这个内存分布,就是分析两个工程的axf文件。 比如我用如下的指令,导出axf的头部信息,对比如下: ```shell recan@ubuntu:~/11111$ readelf -a project3.axf | head -n 100 > 111.txt recan@ubuntu:~/11111$ readelf -a rtthread2.axf | head -n 100 > 333.txt ``` ![image-20230324014040829](https://s2.loli.net/2023/03/24/49zS1kJZLUwbNBi.png) 结合上一小节看到的RA2E1的内存分布,一下子就明白了,RAM的起始地址必须配置成上图中的右边部分。 为了快速验证,我直接把小伙伴的分散文件替换成我本地的RA2E1工程(实则是RT-Thread仓库的RA2L1工程)。 一编译,同样的0错误可用,然后我就快速地发起功能验证。 ## 3.7 皆大欢喜 看到这个小标题自然就知道,问题迎刃而解,达到了我们预期的效果:灯也照常闪了,串口也正常输出了,RT-Thread的标志性的启动LOG输出也来了,一切都回到熟悉的样子。 ![image-20230324005532626](https://s2.loli.net/2023/03/24/Lyp4oqEZuKtSP6f.png) 我也在我们致敬未来攻城狮的小群里,第一时间发布了喜讯,号召大家尽快把RT-Thread学起来。 ![image-20230324005706003](https://s2.loli.net/2023/03/24/XlgcEnGmoViMshC.png) 对我的本次修改感兴趣的可以关注我的代码仓库,不出意外的话,应该拉下来就能编译、烧录、调试、运行。有心者,请记一下这个[仓库地址](https://gitee.com/recan-li/ra4m2-rt-thread):https://gitee.com/recan-li/ra4m2-rt-thread # 4 小小总结 经过这几天的计划开展和对RA2E1的摸索,有几点东西想总结一下: - 现在的就业环境可以说是非常卷,但是我能从这帮 **未来的攻城狮** 中看到上进的求知欲,满满的都是欣慰;能带这样一帮优秀的潜力股,是我的荣幸。 - 虽然有时候会收到一些,在我看来是比较 **简单** 的问题,但对于初学者来说,可能就是一个一时半会难以跨越的门槛,这时候就是需要同伴、老师点拨一下,受点启发,一下子思路就打开了。 - 学习道路总是枯燥且漫长的,尤其像这次这样,突然就给你一个你从来就没有见过,更没有接触过的东西,要你在一个月内学出点东西来,并以文档或者视频的方式,展示你的学习成果,这本身就是一件比较难的事情;如果你能从中克服自己的惰性,积极参与学习,同时打破自己内心的恐惧,埋下心来取坚定地学习它,并用最饱满的热情去输出你的成果,这本身就是一件很锻炼人的事情。经过这样的一次学习训练,将来你遇到类似的工作场景,你一定要感谢现在努力上进的你自己,因为当下培养的自学能力,你将受益一生。 - 程序猿最怕的两个事情:一是,要接手(学习)的项目没有文档;二是,自己的项目要自己去写文档!现在,我觉得我应该补充一句:“**文档多了,也不一定是好事,满城尽是黄金甲,到底哪个才是你真正需要的关键内容,需要你的敏锐的检索能力及专业筛选能力**”。 - **工欲善其事,必先利其器** :这里指的就是开发环境,很多小伙伴就是卡在这里,无法进行下一步学习;有点夸张的说,开发环境搞好了,50%就到手了。 - 从一堆看似无关紧要的错误里面寻找解决问题的线索,这也是学习和解决问题能力的一种体现,可以有意识地培养自己这方面的能力。 - 温故而知新,放在写代码是也是完全讲得通的;而与此对立面就是,长时间不维护的代码,时间一久,拉出来可能就会出莫名其妙的问题,就像本次遇到的RT-Thread主仓库的 **bsp/ra2l1** ,拉下来,编译20几个错误,什么状况,DDDD ! # 5 下一步计划 下一步计划,主要分为三个部分吧: - 尽快发起PR,把RA2E1这套BSP合入到RT-Thread主线仓库中去,预计最快本月即可完成; - 集中火力,把这帮未来的攻城狮扶持好,祖国的新希望,民族的新未来,帮助他们最快地成长;预计本周会开一次直播课程,感兴趣的同行朋友,也可以一起来聊聊;关注我的 **同名微信公众号** 即可获得最新的信息; - 构思下一期[**《致敬未来的攻城狮计划》**](https://bbs.csdn.net/topics/613916237),有更多的想法,有更多的知心者,有更多的目标,都在进一步细化中。。。 # 6 活动预热 第2期《致敬未来的攻城狮计划》马上就要来了。。。 对本次计划感兴趣的,可以先参考 [第1期的计划](https://bbs.csdn.net/topics/613916237),有意向参与的,可以联系我。 第1期,目前正在火热学习中。。。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230331/d0bae8f34ed030dcf88fd21e0ee3d9a2.png.webp)
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
李肯陪你玩赚嵌入式
2022年度和2023年度RT-Thread社区优秀开源布道师,COC深圳城市开发者社区主理人,专注于嵌入式物联网的架构设计
文章
47
回答
504
被采纳
82
关注TA
发私信
相关文章
1
Renesas Ra6m2串口接收事件触发定时器启动失败
2
瑞萨RA2E1芯片移植发生的问题
3
RT-Thread有对应瑞萨MCU的版本吗?
4
瑞萨RA2L1 SPI相关问题
5
瑞萨RH850系列的芯片有移植过rt thread吗
6
瑞萨RL78系列的芯片有移植过rt thread吗
7
使用瑞萨的 FSP里面不小心把配置属性的界面给删除掉了,然后就找不回来这个页面了,这啥软件啊叉掉了就找不回了,重装也不行
8
2023开发者大会动手实验环境搭建
9
Vision Board 兩個專案編譯問題
10
Vision-Board例程编译后不通过
推荐文章
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总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
289
次被采纳
张世争
809
个答案
175
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部