支持RT-Thread最新版本的瑞薩RA2E1開發(fā)板終于要大展身手了
“熟悉RT-Thread和瑞薩MCU的朋友都知道,當(dāng)前RT-Thread倉庫的主線代碼是不支持RA2E1這個BSP的。剛好,最近我在聯(lián)合瑞薩推廣一個叫《致敬未來的攻城獅計劃》,使用的就是RA2E1開發(fā)板,正好乘著這個機(jī)會把RA2E1這個BSP合入到主線去,想必一定非常有趣。
”
1 寫在前面
借助一個有趣的計劃,完成一個有趣的任務(wù),這本身就是一件很有趣的事情。
幫助一群未來的攻城獅快速地成長,把一顆芯片平臺讓更多人的發(fā)現(xiàn)并用起來,讓RT-Thread的生態(tài)越來越豐富,這些事情,我們正在做,也會一直做下去,希望有更多的人加入并參與我們的實踐中來。
本文的主要任務(wù),還是聚焦在如何將RA2E1并入到RT-Thread的主線倉庫。
2 《致敬未來的攻城獅計劃》
2.1 計劃內(nèi)容
“一個嶄新的計劃,尋找那群有志于向嵌入式發(fā)展的未來工程師!
”
活動計劃初衷
《致敬未來的攻城獅計劃》來源于架構(gòu)師李肯的一個念想,我一直在尋找那群渴望學(xué)習(xí)并專注于提升自我的技術(shù)朋友,他們可能還是憧憬在象牙塔里的大學(xué)生,也可能是初出茅廬的小助理,還有可能是一群轉(zhuǎn)行無門的技術(shù)小白,但是他們都有一顆熱誠扎入嵌入式領(lǐng)域的心,我稱他們?yōu)椤?span style="max-width:100%;font-weight:700;color:rgb(248,57,41);">未來的攻城獅】,而我正是希望成為他們的星光指路人。
本次計劃的初衷與瑞薩MCU不謀而合,瑞薩非常支持這群《未來的攻城獅》,愿意為他們的持續(xù)學(xué)習(xí)提供必要的硬件支持。
正是在這樣的背景下,《致敬未來的攻城獅計劃》孕育而生,一群閃亮的新星即將登場,嵌入式的技術(shù)即將因你們而更加精彩!
想要了解更多關(guān)于這個計劃的內(nèi)容,可以關(guān)注我的個人社區(qū):https://bbs.csdn.net/topics/613916237 (復(fù)制鏈接到瀏覽器即可打開)
2.2 當(dāng)前進(jìn)展
《致敬未來的攻城獅計劃》,從3月中旬就開始宣傳推廣,經(jīng)過一周的報名篩選,我們挑選了10名優(yōu)秀的、有潛力的未來攻城獅,第一時間聚攏大家,聊一聊這次計劃的主要目的和開展形式,很快得到了大家的一致認(rèn)可和支持,計劃得以快速啟動。
作為本次計劃的主贊助商,瑞薩也在收到審核通過的名單后,迅速把板子發(fā)過來,這不剛過去一周,很多小伙伴已經(jīng)把板子玩上幾天了,好不愜意。
昨天開始,我在社區(qū)發(fā)布本期計劃的激勵措施,號召大家再社區(qū)打卡學(xué)習(xí),現(xiàn)在好多小伙伴已經(jīng)開始火熱打卡學(xué)習(xí)了,歡迎大家來圍觀。(復(fù)制下面的鏈接到瀏覽器即可打開)
【致敬未來的攻城獅計劃】任務(wù)提交及獎懲措施的相關(guān)說明 https://bbs.csdn.net/topics/614070195
【致敬未來的攻城獅計劃】學(xué)習(xí)打卡頻道 https://bbs.csdn.net/forums/recan-iot?typeId=2717193

3 讓RA2E1支持RT-Thread
3.1 遇到的問題
最早我們在為《致敬未來的攻城獅計劃》選型開發(fā)板的時候,也有過考慮的,盡快要選擇一款能快速用上RT-Thread的板子。
當(dāng)?shù)弥猂T-Thread主線代碼其實已經(jīng)支持了RA2L1的,而我們選型的RA2E1與RS2L1基本是完全兼容的,只是存儲有些不一樣。
自然我的第一感覺也是,那就用它吧。應(yīng)該問題不大,畢竟還有RA2L1在那里兜底。
然而,不幸的是,當(dāng)我們參與計劃的小伙伴拿到板子后,根據(jù)我給他們的信息提示,去RT-Thread的主線倉庫拉取RA2L1的代碼時,到KEIL中一編譯,竟然發(fā)現(xiàn)有20幾個編譯錯誤。Word天吶,簡直有點不敢相信,然后一看倉庫代碼的提交記錄,最后一次提交大概是2個月前,感覺代碼也不舊啊?怎么會這樣,有些納悶!

3.2 查找資料
果然,白嫖是不可能的,這輩子都不可能白嫖的,關(guān)鍵時候還是要靠自己的雙手來解決問題(此處沒有開車)!
遇到問題,首先我想到的可能是 RT-Thread的官方技術(shù)論壇 (https://club.rt-thread.org/index.html),雖然現(xiàn)在的活躍度比較差一些,但整體來說,還是能夠找到一些有用的東西,幫助自己解決一些問題。
抱著試一下的心態(tài)去搜索,果然論壇里面很多介紹RA2L1這塊芯片(板子)的,也有一個搭建開發(fā)環(huán)境踩坑的筆記之類的,看起來還是比較多。
經(jīng)過一番篩選,我找到了這一篇文章: RT-Thread-【開發(fā)板評測】Renesas RA2L 點亮LCD (SPI)RT-Thread問答社區(qū) - https://club.rt-thread.org/ask/article/89f43e3f0d1370be.html 里面的幾點對我接上面遇到的編譯問題就很有幫助。
根據(jù)他的提示,很快我明白了原理,原理是RT-Thread主倉庫的代碼并不是根據(jù)這套板子來配置的,而是其他的一些配置,所以,需要解決編譯的問題,要修改以下幾個配置:
- 使能RA2L1的uart9
- RT-Thread的調(diào)試串口啟用uart9
- RT-Thread的串口驅(qū)動版本選用V2
以上幾個步驟需要借助env工具,然后配置完了,重新使用scons --target=mdk5生成KEIL的工程。
經(jīng)過上面的配置后,再編譯新的工程,終于是0 error了。

3.3 新的問題來了
本以為,探索之旅到此結(jié)束,沒想到把編譯出來的可執(zhí)行文件通過燒錄器下載到(RA2E1)板子上,居然跑不起來,連我們常見的燈也不閃了,簡直傻眼了。我開始想起最早的時候選項時:RA2E1與RA2L1是兼容的!
該不會除了啥問題吧?排除掉是板子的問題以及接線的問題之后,我開始鎖定,非常有可能就是兩個板子不完全兼容導(dǎo)致的。
手上有調(diào)試器,自然先跑一把調(diào)試下看看。記得上一小節(jié)找到的那個帖子,有說他遇到的問題是直接開始,最后排查是串口的問題導(dǎo)致,注釋掉某一行代碼就解決了,我們也嘗試用這個小方法,還是不行,結(jié)果是一樣的,燈不閃爍,串口無輸出。
使用單步一調(diào)試,跳出這樣的出錯,本想去搜搜看,可是壓根沒有這樣關(guān)鍵字的資料。
雖然沒有啥解決方法,但是從這張錯誤中,我們可以看到,一定是MEMORY出問題了。
這時候我想起最早的選項,兩者代碼上是兼容的,但是就是內(nèi)存不太一樣。
至此,我基本斷定了就是Memory Layout導(dǎo)致的問題,但是具體要怎么修改才行呢。還是沒有思路。
3.4 咨詢大神
自己想了一天,加上工作也比較忙,一直拖著沒有解決。
想著這個問題我不能托太久,不然學(xué)習(xí)的小伙伴,也沒法往下基于這個板子學(xué)習(xí)RT-Thread了。
于是我想到一個方法,那我就厚著臉皮去問一下瑞薩原廠的開發(fā)工程師吧。
之前參加 RA4M2網(wǎng)關(guān)設(shè)計大賽的時候,有加到RA的工程師,我就虛心地去請教了一下:

大家都工作忙,也不可能真的手把手教你去解決,關(guān)鍵時候還得靠自己。
從這次簡短的溝通,基本已經(jīng)完全確認(rèn)方向了,就是內(nèi)存的配置問題。
有了思路,就好辦了,問題應(yīng)該很快就有方法了。
3.5 潛心研究
在這里,我不得不提一句,瑞薩的資料是真的多,多到什么程度呢?就是多到你不知道該看哪個?或者說,究竟哪個文檔或資料才能找到你想要的東西。

既然上面大致都已經(jīng)定位到內(nèi)存的問題,那我首先要做的就是找出 RA2E1 和 RA2L1 在內(nèi)存上的差別究竟在哪里?
這些信息從哪里可以得出,那自然是官方的datasheet 最權(quán)威了。
最后,我也是大致翻看,發(fā)現(xiàn)這份《RA2E1硬件用戶手冊(中英).pdf》有講到Memory劃分的詳細(xì)內(nèi)容,既然RA2E1有,自然RA2L1也有類似的文檔,所以我就從官方找到了《RA2L1硬件用戶手冊(中英).pdf》。
分別找到他們的內(nèi)存劃分那一章節(jié):




有了這些內(nèi)存分布之后,基本就知道怎么改了。
3.6 試著解決問題
熟悉KEIL編譯環(huán)境的都知道,在KEIL里面,關(guān)于芯片的內(nèi)存分布是在一種叫分散文件的東西里面配置,它的文件名后綴是 .scat
順著工程目錄找到對應(yīng)的分散文件,看到里面開頭有這么一段:
#!armclang-mcpu=cortex-m4--target=arm-arm-none-eabi-E-xc-I.
#include"memory_regions.scat"
雖然不太懂它的語法,但是一猜就知道,這種就是文件包含,也就是說芯片的內(nèi)存劃分是單純放在memory_regions.scat文件里面。
這里,其實我還做了一個小動作,就是我從其他小伙伴手上拿到一份,可以工作的示例工程(這個工程是使用瑞薩的配置工具,從0到1自己配置出來的),所以它里面的內(nèi)存劃分肯定是正確的。
兩個分散文件一拎出來,我一對比,就發(fā)現(xiàn)問題所在了:
結(jié)合上一小節(jié)看到的RA2E1的內(nèi)存分布,一下子就明白了,RAM的起始地址必須配置成上圖中的右邊部分。
為了快速驗證,我直接把小伙伴的分散文件替換成我本地的RA2E1工程(實則是RT-Thread倉庫的RA2L1工程)。
一編譯,同樣的0錯誤可用,然后我就快速地發(fā)起功能驗證。
3.7 皆大歡喜
看到這個小標(biāo)題自然就知道,問題迎刃而解,達(dá)到了我們預(yù)期的效果:燈也照常閃了,串口也正常輸出了,RT-Thread的標(biāo)志性的啟動LOG輸出也來了,一切都回到熟悉的樣子。

我也在我們致敬未來攻城獅的小群里,第一時間發(fā)布了喜訊,號召大家盡快把RT-Thread學(xué)起來。
對我的本次修改感興趣的可以關(guān)注我的代碼倉庫,不出意外的話,應(yīng)該拉下來就能編譯、燒錄、調(diào)試、運(yùn)行。有心者,請記一下這個倉庫地址:https://gitee.com/recan-li/ra4m2-rt-thread
4 小小總結(jié)
經(jīng)過這幾天的計劃開展和對RA2E1的摸索,有幾點東西想總結(jié)一下:
- 現(xiàn)在的就業(yè)環(huán)境可以說是非常卷,但是我能從這幫未來的攻城獅中看到上進(jìn)的求知欲,滿滿的都是欣慰;能帶這樣一幫優(yōu)秀的潛力股,是我的榮幸。
- 雖然有時候會收到一些,在我看來是比較簡單的問題,但對于初學(xué)者來說,可能就是一個一時半會難以跨越的門檻,這時候就是需要同伴、老師點撥一下,受點啟發(fā),一下子思路就打開了。
- 學(xué)習(xí)道路總是枯燥且漫長的,尤其像這次這樣,突然就給你一個你從來就沒有見過,更沒有接觸過的東西,要你在一個月內(nèi)學(xué)出點東西來,并以文檔或者視頻的方式,展示你的學(xué)習(xí)成果,這本身就是一件比較難的事情;如果你能從中克服自己的惰性,積極參與學(xué)習(xí),同時打破自己內(nèi)心的恐懼,埋下心來取堅定地學(xué)習(xí)它,并用最飽滿的熱情去輸出你的成果,這本身就是一件很鍛煉人的事情。經(jīng)過這樣的一次學(xué)習(xí)訓(xùn)練,將來你遇到類似的工作場景,你一定要感謝現(xiàn)在努力上進(jìn)的你自己,因為當(dāng)下培養(yǎng)的自學(xué)能力,你將受益一生。
- 程序猿最怕的兩個事情:一是,要接手(學(xué)習(xí))的項目沒有文檔;二是,自己的項目要自己去寫文檔!現(xiàn)在,我覺得我應(yīng)該補(bǔ)充一句:“文檔多了,也不一定是好事,滿城盡是黃金甲,到底哪個才是你真正需要的關(guān)鍵內(nèi)容,需要你的敏銳的檢索能力及專業(yè)篩選能力”。
- 工欲善其事,必先利其器:這里指的就是開發(fā)環(huán)境,很多小伙伴就是卡在這里,無法進(jìn)行下一步學(xué)習(xí);有點夸張的說,開發(fā)環(huán)境搞好了,50%就到手了。
- 從一堆看似無關(guān)緊要的錯誤里面尋找解決問題的線索,這也是學(xué)習(xí)和解決問題能力的一種體現(xiàn),可以有意識地培養(yǎng)自己這方面的能力。
- 溫故而知新,放在寫代碼是也是完全講得通的;而與此對立面就是,長時間不維護(hù)的代碼,時間一久,拉出來可能就會出莫名其妙的問題,就像本次遇到的RT-Thread主倉庫的bsp/ra2l1,拉下來,編譯20幾個錯誤,什么狀況,DDDD !
———————End———————
RT-Thread線下入門培訓(xùn)
1.免費2.動手實驗+理論3.主辦方免費提供開發(fā)板4.自行攜帶電腦,及插線板用于筆記本電腦充電5.參與者需要有C語言、單片機(jī)(ARM Cortex-M核)基礎(chǔ),請?zhí)崆鞍惭b好RT-Thread Studio 開發(fā)環(huán)境
立即掃碼報名
報名鏈接
https://jinshuju.net/f/UYxS2k
巡回城市:青島、北京、西安、成都、武漢、鄭州、杭州、深圳、上海、南京
你可以添加微信:rtthread2020 為好友,注明:公司+姓名,拉進(jìn)RT-Thread官方微信交流群!
你也可以把文章轉(zhuǎn)給學(xué)校老師等相關(guān)人員,讓RT-Thread可以惠及更多的開發(fā)者
原文標(biāo)題:工程師自述:如何將RA2E1并入到RT-Thread的主線倉庫
文章出處:【微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
RT-Thread
+關(guān)注
關(guān)注
32文章
1370瀏覽量
41515
原文標(biāo)題:工程師自述:如何將RA2E1并入到RT-Thread的主線倉庫
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
【RA-Eco-RA4M2開發(fā)板評測】開箱和RT-Thread上手操作
RT-Thread嵌入式操作系統(tǒng)專業(yè)培訓(xùn)班來上海啦!

如何將RT-Thread移植到NXP MCUXPressoIDE上

Deepseek上單片機(jī)?RT-Thread上跑通大語言模型

RT-Thread上CAN實踐

開源共生 商業(yè)共贏 | RT-Thread 2024開發(fā)者大會報名啟動!

【上海】9月21日RT-Thread巡回線下培訓(xùn)-RTduino 10分鐘上手嵌入式

【成都】9月21日RT-Thread巡回線下培訓(xùn)-OpenMV機(jī)器視覺

rt-thread studio手動導(dǎo)入bsp失敗的原因?怎么處理?
2024 RT-Thread全球巡回 線下培訓(xùn)火熱來襲!

RT-Thread 新里程碑達(dá)成——GitHub Star 破萬!

【ch32v307_RTT】1、使用RT-Thread studio新建工程
杭州站RT-Thread混合部署Workshop圓滿落幕!

開發(fā)者分享 | 基于先楫RT-Thread BSP,使用CLion開發(fā)應(yīng)用

評論