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

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

熟悉RT-Thread和瑞萨MCU的朋友都知道,当前RT-Thread仓库的主线代码是不支持RA2E1这个BSP的。刚好,最近我在联合瑞萨推广一个叫《致敬未来的攻城狮计划》,使用的就是RA2E1开发板,正好乘着这个机会把RA2E1这个BSP合入到主线去,想必一定非常有趣。

文章目录

  • 1 写在前面
  • 2 《致敬未来的攻城狮计划》
    • 2.1 计划内容
    • 2.2 当前进展
  • 3 让RA2E1支持RT-Thread
    • 3.1 遇到的问题
    • 3.2 查找资料
    • 3.3 新的问题来了
    • 3.4 咨询大神
    • 3.5 潜心研究
    • 3.6 试着解决问题
    • 3.7 皆大欢喜
  • 4 小小总结
  • 5 下一步计划
  • 6 文末福利

1 写在前面

借助一个有趣的计划,完成一个有趣的任务,这本身就是一件很有趣的事情。

帮助一群未来的攻城狮快速地成长,把一颗芯片平台让更多人的发现并用起来,让RT-Thread的生态越来越丰富,这些事情,我们正在做,也会一直做下去,希望有更多的人加入并参与我们的实践中来。

本文的主要任务,还是聚焦在如何将RA2E1并入到RT-Thread的主线仓库。

2 《致敬未来的攻城狮计划》

2.1 计划内容

一个崭新的计划,寻找那群有志于向嵌入式发展的未来工程师!

活动计划初衷

《致敬未来的攻城狮计划》来源于架构师李肯的一个念想,我一直在寻找那群渴望学习并专注于提升自我的技术朋友,他们可能还是憧憬在象牙塔里的大学生,也可能是初出茅庐的小助理,还有可能是一群转行无门的技术小白,但是他们都有一颗热诚扎入嵌入式领域的心,我称他们为【未来的攻城狮】,而我正是希望成为他们的星光指路人。

本次计划的初衷与瑞萨MCU不谋而合,瑞萨非常支持这群《未来的攻城狮》,愿意为他们的持续学习提供必要的硬件支持。

正是在这样的背景下,《致敬未来的攻城狮计划》孕育而生,一群闪亮的新星即将登场,嵌入式的技术即将因你们而更加精彩!

想要了解更多关于这个计划的内容,可以关注我的 个人社区 https://bbs.csdn.net/topics/613916237 (复制链接到浏览器即可打开

2.2 当前进展

《致敬未来的攻城狮计划》,从3月中旬就开始宣传推广,经过一周的报名筛选,我们挑选了10名优秀的、有潜力的未来攻城狮,第一时间聚拢大家,聊一聊这次计划的主要目的和开展形式,很快得到了大家的一致认可和支持,计划得以快速启动。

作为本次计划的主赞助商,瑞萨也在收到审核通过的名单后,迅速把板子发过来,这不刚过去一周,很多小伙伴已经把板子玩上几天了,好不惬意。

昨天开始,我在社区发布本期计划的激励措施,号召大家再社区打卡学习,现在好多小伙伴已经开始火热打卡学习了,欢迎大家来围观。(复制下面的链接到浏览器即可打开

【致敬未来的攻城狮计划】任务提交及奖惩措施的相关说明 https://bbs.csdn.net/topics/614070195

【致敬未来的攻城狮计划】学习打卡频道 https://bbs.csdn.net/forums/recan-iot?typeId=2717193

image-20230323232547334

image-20230323232348559

3 让RA2E1支持RT-Thread

3.1 遇到的问题

最早我们在为《致敬未来的攻城狮计划》选型开发板的时候,也有过考虑的,尽快要选择一款能快速用上RT-Thread的板子。

当得知RT-Thread主线代码其实已经支持了RA2L1的,而我们选型的RA2E1与RA2L1基本是完全兼容的,只是存储有些不一样。

自然我的第一感觉也是,那就用它吧。应该问题不大,毕竟还有RA2L1在那里兜底。

然而,不幸的是,当我们参与计划的小伙伴拿到板子后,根据我给他们的信息提示,去RT-Thread的主线仓库拉取RA2L1的代码时,到KEIL中一编译,竟然发现有 20几个编译错误。Word天呐,简直有点不敢相信,然后一看仓库代码的提交记录,最后一次提交大概是 2个月前,感觉代码也不旧啊?怎么会这样,有些纳闷!

image-20230324001213154

3.2 查找资料

果然,白嫖是不可能的,这辈子都不可能白嫖的,关键时候还是要靠自己的双手来解决问题(此处没有开车)!

遇到问题,首先我想到的可能是 RT-Thread-首页-RT-Thread问答社区 - RT-Thread,虽然现在的活跃度比较差一些,但整体来说,还是能够找到一些有用的东西,帮助自己解决一些问题。

抱着试一下的心态去搜索,果然论坛里面很多介绍RA2L1这块芯片(板子)的,也有一个搭建开发环境踩坑的笔记之类的,看起来还是比较多。

在这里插入图片描述

经过一番筛选,我找到了这一篇文章 : RT-Thread-【开发板评测】Renesas RA2L 点亮LCD (SPI)RT-Thread问答社区 - RT-Thread,里面的几点对我接上面遇到的编译问题就很有帮助。

image-20230324001708825

根据他的提示,很快我明白了原理,原理是RT-Thread主仓库的代码并不是根据这套板子来配置的,而是其他的一些配置,所以,需要解决编译的问题,要修改以下几个配置:

  • 使能RA2L1的uart9
  • RT-Thread的调试串口启用uart9
  • RT-Thread的串口驱动版本选用V2

以上几个步骤需要借助env工具,然后配置完了,重新使用 scons --target=mdk5 生成KEIL的工程。

经过上面的配置后,再编译新的工程,终于是 0 error 了。

image-20230324002116202

3.3 新的问题来了

本以为,探索之旅到此结束,没想到把编译出来的可执行文件通过烧录器下载到(RA2E1)板子上,居然跑不起来,连我们常见的灯也不闪了,简直傻眼了。我开始想起最早的时候选项时:RA2E1与RA2L1是兼容的!

该不会除了啥问题吧?排除掉是板子的问题以及接线的问题之后,我开始锁定,非常有可能就是两个板子不完全兼容导致的。

手上有调试器,自然先跑一把调试下看看。记得上一小节找到的那个帖子,有说他遇到的问题是直接开始,最后排查是串口的问题导致,注释掉某一行代码就解决了,我们也尝试用这个小方法,还是不行,结果是一样的,灯不闪烁,串口无输出。

使用单步一调试,跳出这样的出错,本想去搜搜看,可是压根没有这样关键字的资料。

image-20230324002829364

虽然没有啥解决方法,但是从这张错误中,我们可以看到,一定是 MEMORY 出问题了。

这时候我想起最早的选项,两者代码上是兼容的,但是就是内存不太一样。

至此,我基本断定了就是 Memory Layout 导致的问题,但是具体要怎么修改才行呢。还是没有思路。

3.4 咨询大神

自己想了一天,加上工作也比较忙,一直拖着没有解决。

想着这个问题我不能托太久,不然学习的小伙伴,也没法往下基于这个板子学习RT-Thread了。

于是我想到一个方法,那我就厚着脸皮去问一下瑞萨原厂的开发工程师吧。

之前参加 RA4M2网关设计大赛的时候,有加到RA的工程师,我就虚心地去请教了一下:

在这里插入图片描述

大家都工作忙,也不可能真的手把手教你去解决,关键时候还得靠自己。

从这次简短的沟通,基本已经完全确认方向了,就是内存的配置问题。

有了思路,就好办了,问题应该很快就有方法了。

3.5 潜心研究

在这里,我不得不提一句,瑞萨的资料是真的多,多到什么程度呢?就是多到你不知道该看哪个?或者说,究竟哪个文档或资料才能找到你想要的东西。

在这里插入图片描述

既然上面大致都已经定位到内存的问题,那我首先要做的就是找出 RA2E1 和 RA2L1 在内存上的差别究竟在哪里?

这些信息从哪里可以得出,那自然是官方的datasheet 最权威了。

最后,我也是大致翻看,发现这份**《RA2E1硬件用户手册(中英).pdf》有讲到Memory划分的详细内容,既然RA2E1有,自然RA2L1也有类似的文档,所以我就从官方找到了《RA2L1硬件用户手册(中英).pdf》**。

分别找到他们的内存划分那一章节:

image-20230324004203049

image-20230324004243815

image-20230324004402451

image-20230324004331818

有了这些内存分布之后,基本就知道怎么改了。

3.6 试着解决问题

熟悉KEIL编译环境的都知道,在KEIL里面,关于芯片的内存分布是在一种叫 分散文件 的东西里面配置,它的文件名后缀是 .scat

顺着工程目录找到对应的分散文件,看到里面开头有这么一段:

#! armclang -mcpu=cortex-m4 --target=arm-arm-none-eabi -E -x c -I.
#include "memory_regions.scat"

虽然不太懂它的语法,但是一猜就知道,这种就是文件包含,也就是说芯片的内存划分是单纯放在 memory_regions.scat 文件里面。

这里,其实我还做了一个小动作,就是我从其他小伙伴手上拿到一份,可以工作的示例工程(这个工程是使用瑞萨的配置工具,从0到1自己配置出来的),所以它里面的内存划分肯定是正确的。

两个分散文件一拎出来,我一对比,就发现问题所在了:

image-20230324005115092
还有一个方法也可以确认下这个内存分布,就是分析两个工程的axf文件。

比如我用如下的指令,导出axf的头部信息,对比如下:

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

结合上一小节看到的RA2E1的内存分布,一下子就明白了,RAM的起始地址必须配置成上图中的右边部分。

为了快速验证,我直接把小伙伴的分散文件替换成我本地的RA2E1工程(实则是RT-Thread仓库的RA2L1工程)。

一编译,同样的0错误可用,然后我就快速地发起功能验证。

3.7 皆大欢喜

看到这个小标题自然就知道,问题迎刃而解,达到了我们预期的效果:灯也照常闪了,串口也正常输出了,RT-Thread的标志性的启动LOG输出也来了,一切都回到熟悉的样子。

image-20230324005532626

我也在我们致敬未来攻城狮的小群里,第一时间发布了喜讯,号召大家尽快把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主线仓库中去,预计最快本月即可完成;
  • 集中火力,把这帮未来的攻城狮扶持好,祖国的新希望,民族的新未来,帮助他们最快地成长;预计本周会开一次直播课程,感兴趣的同行朋友,也可以一起来聊聊;关注我的 同名微信公众号 即可获得最新的信息;
  • 构思下一期《致敬未来的攻城狮计划》,有更多的想法,有更多的知心者,有更多的目标,都在进一步细化中。。。

6 文末福利

熟悉我的朋友都知道,近期我在疯狂地开展赠书活动,也有不少的朋友从我这里获得了许多高质量的精美图书,累计有送出近60本图书,这个事情我坚持做下去,努力把幸运和福利送到每一个知心者手中。

之前呢,每次基本送的都是一些技术研发类的书籍,所以近期也有收到一些朋友反馈说能不能送一些非技术的书籍。这不,有了目标,里面给安排上。

本期送出的书籍是一个关于Excel高效应用的数据,详细的图书介绍可以参考的社区文章:【第19期社区福利赠书活动】新书上市 | 《Excel高效应用:HR数字化管理实战》,30个二维码观看视频讲解(文末赠书5本)-CSDN社区

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/2854.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习 Python 之 Pygame 开发魂斗罗(十)

学习 Python 之 Pygame 开发魂斗罗(十)继续编写魂斗罗1. 解决敌人不开火的问题2. 创建爆炸效果类3. 为敌人跳入河中增加爆炸效果4. 玩家击中敌人继续编写魂斗罗 在上次的博客学习 Python 之 Pygame 开发魂斗罗(九)中,…

如何系统型地学习深度学习?

要学习深度学习,需要先掌握一些基本技能。所有机器学习方法都涉及从数据中提取信息。因此,我们先学习一些关于数据的实用技能。包括存储、操作和预处理数据。 机器学习通常需要处理大型数据集。我们可以将某些数据集神为一个表,其中表的行对…

Python日志logging实战教程

一、什么是日志 在《网络安全之认识日志采集分析审计系统》中我们认识了日志。日志数据的核心就是日志消息或日志,日志消息是计算机系统、设备、软件等在某种刺激下反应生成的东西。 日志数据(log data)就是一条日志消息的内在含义&#xf…

利用Cookie劫持+HTML注入进行钓鱼攻击

目录 HTML注入和cookie劫持: 发现漏洞 实际利用 来源 HTML注入和cookie劫持: HTML注入漏洞一般是由于在用户能够控制的输入点上,由于缺乏安全过滤,导致攻击者能将任意HTML代码注入网页。此类漏洞可能会引起许多后续攻击&#…

服务端测试知识汇总

目录 服务端测试思想 经济学⻆度 ⾦字塔模型 技术⻆度 HTTP协议 三次握⼿ HTTP完整请求 通信模式 URI信息 请求⽅法 请求状态码 请求/响应头 常⽤请求数据格式 COOKIE请求流程 SESSION请求流程 TOKEN请求流程 API测试维度 单接⼝测试 多个接⼝测试 …

基于原生Javascript的放大镜插件的设计和实现

概要 本文主要介绍一个前端放大镜插件的设计和实现,该插件可以将图片的指定区域进行局部放大,插件运行不依赖任何第三方库,可以在Chrome或Edge的常见版本上运行。 基本功能 可以将图片中指定区域扩大1.5倍放大镜可以跟随鼠标进行移动放大镜…

贪心算法(一)

一、概念 贪心算法的核心思想是,在处理一个大问题时,划分为多个局部并在每个局部选择最优解,并且认为在每个局部选择最优解,那么最后全局的问题得到的就是最优解。 贪心算法可以解决一些问题,但是不适用于所有问题&a…

蓝桥杯刷题冲刺 | 倒计时18天

作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录0.知识点1.乳草的入侵今天写 搜索题 0.知识点 DFS 设计步骤 确定该题目的状态(包括边…

MD5加密竟然不安全,应届生表示无法理解?

前言 近日公司的一个应届生问我,他做的一个毕业设计密码是MD5加密存储的,为什么密码我帮他调试的时候,我能猜出来明文是什么? 第六感,是后端研发的第六感! 正文 示例,有个系统,前…

Java每日一练(20230324)

目录 1. 链表插入排序 🌟🌟 2. 最接近的三数之和 🌟🌟 3. 寻找旋转排序数组中的最小值 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一…

手写一个Promise

Promise Promise是一个对象,用于解决异步变成的问题,由传统的异步回调为服务端立即调用优化为使用者者掌握回调主动权。 比如传统的JSONP,如下,在请求路由里添加回调函数,由接收请求的一方来调用请求,使用…

maya python 中的maya.cmds 与maya.mel模块的区别笔记

作为一个python的小白,之前多从事mel程序开发,因为python变化太快,不如maya内置mel语言稳定,所以一直懒于python学习,后来偶尔使用中发现,其实python作为maya mel的封装,与内置的mel还是有很大差…

新闻文本分类任务:使用Transformer实现

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

A.机器学习入门算法(六)基于天气数据集的XGBoost分类预测

1.机器学习算法(六)基于天气数据集的XGBoost分类预测 本项目链接:https://www.heywhale.com/home/column/64141d6b1c8c8b518ba97dcc 1.1 XGBoost的介绍与应用 XGBoost是2016年由华盛顿大学陈天奇老师带领开发的一个可扩展机器学习系统。严…

用嘴写代码?继ChatGPT和NewBing之后,微软又开始整活了,Github Copilot X!

用嘴写代码?继ChatGPT和NewBing之后,微软又开始整活了,Github Copilot X! AI盛行的时代来临了,在这段时间,除了爆火的GPT3.5后,OpenAI发布了GPT4版本,同时微软也在Bing上开始加入了A…

第十四届蓝桥杯三月真题刷题训练——第 21 天

目录 第 1 题:灭鼠先锋 问题描述 运行限制 代码: 思路: 第 2 题:小蓝与钥匙 问题描述 答案提交 运行限制 代码: 思路 : 第 3 题:李白打酒加强版 第 4 题:机房 第 1 题&#xff1…

【尝鲜版】ChatGPT插件开发指南

3月23日,OpenAI官方发布了一则公告,宣告ChatGPT已经支持了插件功能,现在处于内测阶段。插件的意义不仅仅在于功能的扩展,它直接让ChatGTP拥有了联网的能力!简直是猛兽出笼、蛟龙出海,要让ChatGPT大杀特杀啊…

无需公网IP,远程连接SQL Server数据库【内网穿透】

文章目录1.前言2.本地安装和设置SQL Server2.1 SQL Server下载2.2 SQL Server本地连接测试2.3 Cpolar内网穿透的下载和安装2.3 Cpolar内网穿透的注册3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置4.公网访问测试5.结语1.前言 数据库的重要性相信大家都有所了解&#xf…

【Unityc#专题篇】之c#基础篇

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

ASO优化之应用商店中的A/B测试——改良版

A/B 测试在应用营销中发挥着重要作用,是根据实际用户行为不断改进应用商店列表的最佳方式。 A/B 测试包括将相同的受众分成相同大小的两组实验。第一组用户能够看到测试的A变体和原始资产,第二组用户能够看到带有要测试资产的B变体。运行一段时间后&…
最新文章