該文主要記錄為 BL808 BSP 添加 GPIO 驅(qū)動時踩到的一些坑及解決方案。這是我第一次對接 RT-Thread BSP 的驅(qū)動,整理出本文避免之后踩到同樣的坑,也希望能幫助到和我一樣的新手。如有描述不當(dāng)和不足的地方,還望大家指出和補充,一起交流學(xué)習(xí)。
構(gòu)建該項目最好在 Linux 環(huán)境,能夠避免大部分奇怪的問題,這里推薦使用 WSL ,因為筆者是 Linux 菜鳥,而且 WSL 和 windows 之間文件傳輸比較方便。
工具鏈需要在 WSL 中解壓 tar -xvf ,不能在 windows 中解壓后傳入 WSL ,不同環(huán)境下解壓出來的文件會有問題
可以使用如下命令指定工具鏈并進行構(gòu)建(需要提前在 Linux 環(huán)境中配置好 scons 等,可以參考 RT-Thread BSP BL808 中的 READme )
scons --exec-path=/opt/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/bin
export RTT_EXEC_PATH=/opt/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/bin
scons
如果使用的是 WSL ,可以在命令行中運行code .命令,即可通過VS code進行開發(fā),前提是windows中已經(jīng)安裝了VS code
gpio的驅(qū)動我主要調(diào)用了m0librariesplatformsocbl808bl808_e907_stdbl808_bsp_driverhal_drvsrchal_gpio.c這里面的函數(shù)(后續(xù)并沒有直接使用 hal 中封裝的函數(shù),因為太多層的封裝可能會降低效率)
需要在 board.c 文件中添加以下代碼:
/* GPIO driver initialization is open by default */
#ifdef RT_USING_PIN
rt_hw_pin_init();
#endif
//這樣才調(diào)用了drv_gpio.c中定義的rt_hw_pin_init()函數(shù)
在m0driversSConscript中添加以下代碼:
if GetDepend('RT_USING_PIN'):
src += ['drv_gpio.c']
//這樣drv_gpio.c才加入到了編譯中
在m0librariesSConscript中添加相應(yīng)路徑(如果調(diào)用的頭文件,以及需要編譯的 .c 文件不包含在 SConscript 中,需要自行添加)
808能識別到兩個usb converter設(shè)備 但是識別不到串口設(shè)備,重新燒寫702的固件也沒用,最后的解決辦法是在設(shè)備管理器中右擊對應(yīng)的USB設(shè)備,選擇屬性,進入高級設(shè)置,勾選vcp,刷新后出現(xiàn)串口。進入下載模式是先上電,然后同時按住RST和BOOT按鍵,然后先松開RST,再松開BOOT即可。
最后提交PR的時候需要注意格式問題:注釋使用/**/,最后用自動化軟件刷一下格式。
-
驅(qū)動器
+關(guān)注
關(guān)注
52文章
8168瀏覽量
146052 -
USB設(shè)備
+關(guān)注
關(guān)注
0文章
57瀏覽量
16323 -
GPIO
+關(guān)注
關(guān)注
16文章
1196瀏覽量
51934 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1274瀏覽量
39941 -
HAL庫
+關(guān)注
關(guān)注
1文章
114瀏覽量
6181
發(fā)布評論請先 登錄
相關(guān)推薦
評論