支持RT-Thread最新版本的瑞薩RA2E1開發板終于要大展身手了
“熟悉RT-Thread和瑞薩MCU的朋友都知道,當前RT-Thread倉庫的主線代碼是不支持RA2E1這個BSP的。剛好,最近我在聯合瑞薩推廣一個叫《致敬未來的攻城獅計劃》,使用的就是RA2E1開發板,正好乘著這個機會把RA2E1這個BSP合入到主線去,想必一定非常有趣。
”
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-20230323232547334image-20230323232348559
3 讓RA2E1支持RT-Thread
3.1 遇到的問題
最早我們在為《致敬未來的攻城獅計劃》選型開發板的時候,也有過考慮的,盡快要選擇一款能快速用上RT-Thread的板子。
當得知RT-Thread主線代碼其實已經支持了RA2L1的,而我們選型的RA2E1與RS2L1基本是完全兼容的,只是存儲有些不一樣。
自然我的第一感覺也是,那就用它吧。應該問題不大,畢竟還有RA2L1在那里兜底。
然而,不幸的是,當我們參與計劃的小伙伴拿到板子后,根據我給他們的信息提示,去RT-Thread的主線倉庫拉取RA2L1的代碼時,到KEIL中一編譯,竟然發現有20幾個編譯錯誤。Word天吶,簡直有點不敢相信,然后一看倉庫代碼的提交記錄,最后一次提交大概是2個月前,感覺代碼也不舊啊?怎么會這樣,有些納悶!
image-202303240012131543.2 查找資料
果然,白嫖是不可能的,這輩子都不可能白嫖的,關鍵時候還是要靠自己的雙手來解決問題(此處沒有開車)!
遇到問題,首先我想到的可能是 RT-Thread的官方技術論壇 (https://club.rt-thread.org/index.html),雖然現在的活躍度比較差一些,但整體來說,還是能夠找到一些有用的東西,幫助自己解決一些問題。
抱著試一下的心態去搜索,果然論壇里面很多介紹RA2L1這塊芯片(板子)的,也有一個搭建開發環境踩坑的筆記之類的,看起來還是比較多。
image-20230324001606438
經過一番篩選,我找到了這一篇文章: RT-Thread-【開發板評測】Renesas RA2L 點亮LCD (SPI)RT-Thread問答社區 - https://club.rt-thread.org/ask/article/89f43e3f0d1370be.html 里面的幾點對我接上面遇到的編譯問題就很有幫助。
image-20230324001708825
根據他的提示,很快我明白了原理,原理是RT-Thread主倉庫的代碼并不是根據這套板子來配置的,而是其他的一些配置,所以,需要解決編譯的問題,要修改以下幾個配置:
- 使能RA2L1的uart9
- RT-Thread的調試串口啟用uart9
- RT-Thread的串口驅動版本選用V2
以上幾個步驟需要借助env工具,然后配置完了,重新使用scons --target=mdk5生成KEIL的工程。
經過上面的配置后,再編譯新的工程,終于是0 error了。
image-202303240021162023.3 新的問題來了
本以為,探索之旅到此結束,沒想到把編譯出來的可執行文件通過燒錄器下載到(RA2E1)板子上,居然跑不起來,連我們常見的燈也不閃了,簡直傻眼了。我開始想起最早的時候選項時:RA2E1與RA2L1是兼容的!
該不會除了啥問題吧?排除掉是板子的問題以及接線的問題之后,我開始鎖定,非常有可能就是兩個板子不完全兼容導致的。
手上有調試器,自然先跑一把調試下看看。記得上一小節找到的那個帖子,有說他遇到的問題是直接開始,最后排查是串口的問題導致,注釋掉某一行代碼就解決了,我們也嘗試用這個小方法,還是不行,結果是一樣的,燈不閃爍,串口無輸出。
使用單步一調試,跳出這樣的出錯,本想去搜搜看,可是壓根沒有這樣關鍵字的資料。
image-20230324002829364
雖然沒有啥解決方法,但是從這張錯誤中,我們可以看到,一定是MEMORY出問題了。
這時候我想起最早的選項,兩者代碼上是兼容的,但是就是內存不太一樣。
至此,我基本斷定了就是Memory Layout導致的問題,但是具體要怎么修改才行呢。還是沒有思路。
3.4 咨詢大神
自己想了一天,加上工作也比較忙,一直拖著沒有解決。
想著這個問題我不能托太久,不然學習的小伙伴,也沒法往下基于這個板子學習RT-Thread了。
于是我想到一個方法,那我就厚著臉皮去問一下瑞薩原廠的開發工程師吧。
之前參加 RA4M2網關設計大賽的時候,有加到RA的工程師,我就虛心地去請教了一下:
image-20230324003415509大家都工作忙,也不可能真的手把手教你去解決,關鍵時候還得靠自己。
從這次簡短的溝通,基本已經完全確認方向了,就是內存的配置問題。
有了思路,就好辦了,問題應該很快就有方法了。
3.5 潛心研究
在這里,我不得不提一句,瑞薩的資料是真的多,多到什么程度呢?就是多到你不知道該看哪個?或者說,究竟哪個文檔或資料才能找到你想要的東西。
image-20230324003833787既然上面大致都已經定位到內存的問題,那我首先要做的就是找出 RA2E1 和 RA2L1 在內存上的差別究竟在哪里?
這些信息從哪里可以得出,那自然是官方的datasheet 最權威了。
最后,我也是大致翻看,發現這份《RA2E1硬件用戶手冊(中英).pdf》有講到Memory劃分的詳細內容,既然RA2E1有,自然RA2L1也有類似的文檔,所以我就從官方找到了《RA2L1硬件用戶手冊(中英).pdf》。
分別找到他們的內存劃分那一章節:
image-20230324004203049image-20230324004243815image-20230324004402451image-20230324004331818有了這些內存分布之后,基本就知道怎么改了。
3.6 試著解決問題
熟悉KEIL編譯環境的都知道,在KEIL里面,關于芯片的內存分布是在一種叫分散文件的東西里面配置,它的文件名后綴是 .scat
順著工程目錄找到對應的分散文件,看到里面開頭有這么一段:
#!armclang-mcpu=cortex-m4--target=arm-arm-none-eabi-E-xc-I.
#include"memory_regions.scat"
雖然不太懂它的語法,但是一猜就知道,這種就是文件包含,也就是說芯片的內存劃分是單純放在memory_regions.scat文件里面。
這里,其實我還做了一個小動作,就是我從其他小伙伴手上拿到一份,可以工作的示例工程(這個工程是使用瑞薩的配置工具,從0到1自己配置出來的),所以它里面的內存劃分肯定是正確的。
兩個分散文件一拎出來,我一對比,就發現問題所在了:
image-20230324005115092
結合上一小節看到的RA2E1的內存分布,一下子就明白了,RAM的起始地址必須配置成上圖中的右邊部分。
為了快速驗證,我直接把小伙伴的分散文件替換成我本地的RA2E1工程(實則是RT-Thread倉庫的RA2L1工程)。
一編譯,同樣的0錯誤可用,然后我就快速地發起功能驗證。
3.7 皆大歡喜
看到這個小標題自然就知道,問題迎刃而解,達到了我們預期的效果:燈也照常閃了,串口也正常輸出了,RT-Thread的標志性的啟動LOG輸出也來了,一切都回到熟悉的樣子。
image-20230324005532626我也在我們致敬未來攻城獅的小群里,第一時間發布了喜訊,號召大家盡快把RT-Thread學起來。
image-20230324005706003
對我的本次修改感興趣的可以關注我的代碼倉庫,不出意外的話,應該拉下來就能編譯、燒錄、調試、運行。有心者,請記一下這個倉庫地址:https://gitee.com/recan-li/ra4m2-rt-thread
4 小小總結
經過這幾天的計劃開展和對RA2E1的摸索,有幾點東西想總結一下:
- 現在的就業環境可以說是非常卷,但是我能從這幫未來的攻城獅中看到上進的求知欲,滿滿的都是欣慰;能帶這樣一幫優秀的潛力股,是我的榮幸。
- 雖然有時候會收到一些,在我看來是比較簡單的問題,但對于初學者來說,可能就是一個一時半會難以跨越的門檻,這時候就是需要同伴、老師點撥一下,受點啟發,一下子思路就打開了。
- 學習道路總是枯燥且漫長的,尤其像這次這樣,突然就給你一個你從來就沒有見過,更沒有接觸過的東西,要你在一個月內學出點東西來,并以文檔或者視頻的方式,展示你的學習成果,這本身就是一件比較難的事情;如果你能從中克服自己的惰性,積極參與學習,同時打破自己內心的恐懼,埋下心來取堅定地學習它,并用最飽滿的熱情去輸出你的成果,這本身就是一件很鍛煉人的事情。經過這樣的一次學習訓練,將來你遇到類似的工作場景,你一定要感謝現在努力上進的你自己,因為當下培養的自學能力,你將受益一生。
- 程序猿最怕的兩個事情:一是,要接手(學習)的項目沒有文檔;二是,自己的項目要自己去寫文檔!現在,我覺得我應該補充一句:“文檔多了,也不一定是好事,滿城盡是黃金甲,到底哪個才是你真正需要的關鍵內容,需要你的敏銳的檢索能力及專業篩選能力”。
- 工欲善其事,必先利其器:這里指的就是開發環境,很多小伙伴就是卡在這里,無法進行下一步學習;有點夸張的說,開發環境搞好了,50%就到手了。
- 從一堆看似無關緊要的錯誤里面尋找解決問題的線索,這也是學習和解決問題能力的一種體現,可以有意識地培養自己這方面的能力。
- 溫故而知新,放在寫代碼是也是完全講得通的;而與此對立面就是,長時間不維護的代碼,時間一久,拉出來可能就會出莫名其妙的問題,就像本次遇到的RT-Thread主倉庫的bsp/ra2l1,拉下來,編譯20幾個錯誤,什么狀況,DDDD !
———————End———————
RT-Thread線下入門培訓
1.免費2.動手實驗+理論3.主辦方免費提供開發板4.自行攜帶電腦,及插線板用于筆記本電腦充電5.參與者需要有C語言、單片機(ARM Cortex-M核)基礎,請提前安裝好RT-Thread Studio 開發環境
立即掃碼報名
報名鏈接
https://jinshuju.net/f/UYxS2k
巡回城市:青島、北京、西安、成都、武漢、鄭州、杭州、深圳、上海、南京
你可以添加微信:rtthread2020 為好友,注明:公司+姓名,拉進RT-Thread官方微信交流群!
你也可以把文章轉給學校老師等相關人員,讓RT-Thread可以惠及更多的開發者
-
RT-Thread
+關注
關注
31文章
1273瀏覽量
39925
原文標題:工程師自述:如何將RA2E1并入到RT-Thread的主線倉庫
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論