支持RT-Thread最新版本的瑞薩RA2E1開發(fā)板終于要大展身手了
熟悉RT-Thread和瑞薩MCU的朋友都知道,當(dāng)前RT-Thread倉庫的主線代碼是不支持RA2E1這個BSP的。剛好,最近我在聯(lián)合瑞薩推廣一個叫《致敬未來的攻城獅計(jì)劃》,使用的就是RA2E1開發(fā)板,正好乘著這個機(jī)會把RA2E1這個BSP合入到主線去,想必一定非常有趣。
@
-
2.1 計(jì)劃內(nèi)容
-
2.2 當(dāng)前進(jìn)展
-
3.1 遇到的問題
-
3.2 查找資料
-
3.3 新的問題來了
-
3.4 咨詢大神
-
3.5 潛心研究
-
3.6 試著解決問題
-
3.7 皆大歡喜
1 寫在前面
借助一個有趣的計(jì)劃,完成一個有趣的任務(wù),這本身就是一件很有趣的事情。
幫助一群未來的攻城獅快速地成長,把一顆芯片平臺讓更多人的發(fā)現(xiàn)并用起來,讓RT-Thread的生態(tài)越來越豐富,這些事情,我們正在做,也會一直做下去,希望有更多的人加入并參與我們的實(shí)踐中來。
本文的主要任務(wù),還是聚焦在如何將RA2E1并入到RT-Thread的主線倉庫。
2 《致敬未來的攻城獅計(jì)劃》
2.1 計(jì)劃內(nèi)容
活動計(jì)劃初衷
《致敬未來的攻城獅計(jì)劃》
來源于架構(gòu)師李肯的一個念想,我一直在尋找那群渴望學(xué)習(xí)并專注于提升自我的技術(shù)朋友,他們可能還是憧憬在象牙塔里的大學(xué)生,也可能是初出茅廬的小助理,還有可能是一群轉(zhuǎn)行無門的技術(shù)小白,但是他們都有一顆熱誠扎入嵌入式領(lǐng)域的心,我稱他們?yōu)椤?strong>未來的攻城獅】,而我正是希望成為他們的星光指路人。
本次計(jì)劃的初衷與瑞薩MCU不謀而合,瑞薩非常支持這群《未來的攻城獅》,愿意為他們的持續(xù)學(xué)習(xí)提供必要的硬件支持。
正是在這樣的背景下,
《致敬未來的攻城獅計(jì)劃》
孕育而生,一群閃亮的新星即將登場,嵌入式的技術(shù)即將因你們而更加精彩!
想要了解更多關(guān)于這個計(jì)劃的內(nèi)容,可以關(guān)注我的
個人社區(qū)
https://bbs.csdn.net/topics/613916237 (復(fù)制鏈接到瀏覽器即可打開)
2.2 當(dāng)前進(jìn)展
《致敬未來的攻城獅計(jì)劃》
,從3月中旬就開始宣傳推廣,經(jīng)過一周的報(bào)名篩選,我們挑選了10名優(yōu)秀的、有潛力的未來攻城獅,第一時間聚攏大家,聊一聊這次計(jì)劃的主要目的和開展形式,很快得到了大家的一致認(rèn)可和支持,計(jì)劃得以快速啟動。
作為本次計(jì)劃的主贊助商,瑞薩也在收到審核通過的名單后,迅速把板子發(fā)過來,這不剛過去一周,很多小伙伴已經(jīng)把板子玩上幾天了,好不愜意。
昨天開始,我在社區(qū)發(fā)布本期計(jì)劃的激勵措施,號召大家再社區(qū)打卡學(xué)習(xí),現(xiàn)在好多小伙伴已經(jīng)開始火熱打卡學(xué)習(xí)了,歡迎大家來圍觀。(復(fù)制下面的鏈接到瀏覽器即可打開)
【致敬未來的攻城獅計(jì)劃】
任務(wù)提交及獎懲措施的相關(guān)說明
https://bbs.csdn.net/topics/614070195
【致敬未來的攻城獅計(jì)劃】
學(xué)習(xí)打卡頻道
https://bbs.csdn.net/forums/recan-iot?typeId=2717193
3 讓RA2E1支持RT-Thread
3.1 遇到的問題
最早我們在為
《致敬未來的攻城獅計(jì)劃》
選型開發(fā)板的時候,也有過考慮的,盡快要選擇一款能快速用上RT-Thread的板子。
當(dāng)?shù)弥猂T-Thread主線代碼其實(shí)已經(jīng)支持了RA2L1的,而我們選型的RA2E1與RA2L1基本是完全兼容的,只是存儲有些不一樣。
自然我的第一感覺也是,那就用它吧。應(yīng)該問題不大,畢竟還有RA2L1在那里兜底。
然而,不幸的是,當(dāng)我們參與計(jì)劃的小伙伴拿到板子后,根據(jù)我給他們的信息提示,去RT-Thread的主線倉庫拉取RA2L1的代碼時,到KEIL中一編譯,竟然發(fā)現(xiàn)有 20幾個編譯錯誤。Word天吶,簡直有點(diǎn)不敢相信,然后一看倉庫代碼的提交記錄,最后一次提交大概是 2個月前,感覺代碼也不舊啊?怎么會這樣,有些納悶!
3.2 查找資料
果然,白嫖是不可能的,這輩子都不可能白嫖的,關(guān)鍵時候還是要靠自己的雙手來解決問題(此處沒有開車)!
遇到問題,首先我想到的可能是
RT-Thread-首頁-RT-Thread問答社區(qū) - RT-Thread
,雖然現(xiàn)在的活躍度比較差一些,但整體來說,還是能夠找到一些有用的東西,幫助自己解決一些問題。
抱著試一下的心態(tài)去搜索,果然論壇里面很多介紹RA2L1這塊芯片(板子)的,也有一個搭建開發(fā)環(huán)境踩坑的筆記之類的,看起來還是比較多。
經(jīng)過一番篩選,我找到了這一篇文章 :
RT-Thread-【開發(fā)板評測】Renesas RA2L 點(diǎn)亮LCD (SPI)RT-Thread問答社區(qū) - RT-Thread
,里面的幾點(diǎn)對我接上面遇到的編譯問題就很有幫助。
根據(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)板子上,居然跑不起來,連我們常見的燈也不閃了,簡直傻眼了。我開始想起最早的時候選項(xiàng)時:RA2E1與RA2L1是兼容的!
該不會除了啥問題吧?排除掉是板子的問題以及接線的問題之后,我開始鎖定,非常有可能就是兩個板子不完全兼容導(dǎo)致的。
手上有調(diào)試器,自然先跑一把調(diào)試下看看。記得上一小節(jié)找到的那個帖子,有說他遇到的問題是直接開始,最后排查是串口的問題導(dǎo)致,注釋掉某一行代碼就解決了,我們也嘗試用這個小方法,還是不行,結(jié)果是一樣的,燈不閃爍,串口無輸出。
使用單步一調(diào)試,跳出這樣的出錯,本想去搜搜看,可是壓根沒有這樣關(guān)鍵字的資料。
雖然沒有啥解決方法,但是從這張錯誤中,我們可以看到,一定是 MEMORY 出問題了。
這時候我想起最早的選項(xiàng),兩者代碼上是兼容的,但是就是內(nèi)存不太一樣。
至此,我基本斷定了就是 Memory Layout 導(dǎo)致的問題,但是具體要怎么修改才行呢。還是沒有思路。
3.4 咨詢大神
自己想了一天,加上工作也比較忙,一直拖著沒有解決。
想著這個問題我不能托太久,不然學(xué)習(xí)的小伙伴,也沒法往下基于這個板子學(xué)習(xí)RT-Thread了。
于是我想到一個方法,那我就厚著臉皮去問一下瑞薩原廠的開發(fā)工程師吧。
之前參加 RA4M2網(wǎng)關(guān)設(shè)計(jì)大賽的時候,有加到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 文件里面。
這里,其實(shí)我還做了一個小動作,就是我從其他小伙伴手上拿到一份,可以工作的示例工程(這個工程是使用瑞薩的配置工具,從0到1自己配置出來的),所以它里面的內(nèi)存劃分肯定是正確的。
兩個分散文件一拎出來,我一對比,就發(fā)現(xiàn)問題所在了:
還有一個方法也可以確認(rèn)下這個內(nèi)存分布,就是分析兩個工程的axf文件。
比如我用如下的指令,導(dǎo)出axf的頭部信息,對比如下:
recan@ubuntu:~/11111$readelf-aproject3.axf|head-n100>111.txt
recan@ubuntu:~/11111$readelf-artthread2.axf|head-n100>333.txt
結(jié)合上一小節(jié)看到的RA2E1的內(nèi)存分布,一下子就明白了,RAM的起始地址必須配置成上圖中的右邊部分。
為了快速驗(yàn)證,我直接把小伙伴的分散文件替換成我本地的RA2E1工程(實(shí)則是RT-Thread倉庫的RA2L1工程)。
一編譯,同樣的0錯誤可用,然后我就快速地發(fā)起功能驗(yàn)證。
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)過這幾天的計(jì)劃開展和對RA2E1的摸索,有幾點(diǎn)東西想總結(jié)一下:
-
現(xiàn)在的就業(yè)環(huán)境可以說是非常卷,但是我能從這幫 未來的攻城獅 中看到上進(jìn)的求知欲,滿滿的都是欣慰;能帶這樣一幫優(yōu)秀的潛力股,是我的榮幸。
-
雖然有時候會收到一些,在我看來是比較 簡單 的問題,但對于初學(xué)者來說,可能就是一個一時半會難以跨越的門檻,這時候就是需要同伴、老師點(diǎn)撥一下,受點(diǎn)啟發(fā),一下子思路就打開了。
-
學(xué)習(xí)道路總是枯燥且漫長的,尤其像這次這樣,突然就給你一個你從來就沒有見過,更沒有接觸過的東西,要你在一個月內(nèi)學(xué)出點(diǎn)東西來,并以文檔或者視頻的方式,展示你的學(xué)習(xí)成果,這本身就是一件比較難的事情;如果你能從中克服自己的惰性,積極參與學(xué)習(xí),同時打破自己內(nèi)心的恐懼,埋下心來取堅(jiān)定地學(xué)習(xí)它,并用最飽滿的熱情去輸出你的成果,這本身就是一件很鍛煉人的事情。經(jīng)過這樣的一次學(xué)習(xí)訓(xùn)練,將來你遇到類似的工作場景,你一定要感謝現(xiàn)在努力上進(jìn)的你自己,因?yàn)楫?dāng)下培養(yǎng)的自學(xué)能力,你將受益一生。
-
程序猿最怕的兩個事情:一是,要接手(學(xué)習(xí))的項(xiàng)目沒有文檔;二是,自己的項(xiàng)目要自己去寫文檔!現(xiàn)在,我覺得我應(yīng)該補(bǔ)充一句:“文檔多了,也不一定是好事,滿城盡是黃金甲,到底哪個才是你真正需要的關(guān)鍵內(nèi)容,需要你的敏銳的檢索能力及專業(yè)篩選能力”。
-
工欲善其事,必先利其器 :這里指的就是開發(fā)環(huán)境,很多小伙伴就是卡在這里,無法進(jìn)行下一步學(xué)習(xí);有點(diǎn)夸張的說,開發(fā)環(huán)境搞好了,50%就到手了。
-
從一堆看似無關(guān)緊要的錯誤里面尋找解決問題的線索,這也是學(xué)習(xí)和解決問題能力的一種體現(xiàn),可以有意識地培養(yǎng)自己這方面的能力。
-
溫故而知新,放在寫代碼是也是完全講得通的;而與此對立面就是,長時間不維護(hù)的代碼,時間一久,拉出來可能就會出莫名其妙的問題,就像本次遇到的RT-Thread主倉庫的 bsp/ra2l1 ,拉下來,編譯20幾個錯誤,什么狀況,DDDD !
5 下一步計(jì)劃
下一步計(jì)劃,主要分為三個部分吧:
-
盡快發(fā)起PR,把RA2E1這套BSP合入到RT-Thread主線倉庫中去,預(yù)計(jì)最快本月即可完成;
-
集中火力,把這幫未來的攻城獅扶持好,祖國的新希望,民族的新未來,幫助他們最快地成長;預(yù)計(jì)本周會開一次直播課程,感興趣的同行朋友,也可以一起來聊聊;關(guān)注我的 同名微信公眾號 即可獲得最新的信息;
-
構(gòu)思下一期
《致敬未來的攻城獅計(jì)劃》
,有更多的想法,有更多的知心者,有更多的目標(biāo),都在進(jìn)一步細(xì)化中。。。
審核編輯黃宇
-
芯片
+關(guān)注
關(guān)注
455文章
50714瀏覽量
423155 -
串口
+關(guān)注
關(guān)注
14文章
1551瀏覽量
76428 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5032瀏覽量
97375 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1285瀏覽量
40088
發(fā)布評論請先 登錄
相關(guān)推薦
評論