亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在樹莓派2上移植rt-thread操作系統

發布時間:2021-11-20 10:05:59 來源:億速云 閱讀:272 作者:小新 欄目:互聯網科技

這篇文章給大家分享的是有關怎么在樹莓派2上移植rt-thread操作系統的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1.準備工作

硬件

1.樹莓派2開發板(如果沒有,可以直接用qemu替代)。

軟件

1.window上可以采用rt-thread提供的env工具。

2.Ubuntu上需要裝scons,因為rt-thread操作系統是通過scons組織的。

3.git工具,進行代碼管理

4.qemu,模擬開發板

5.arm gcc版本gcc-arm-none-eabi-5_4-2016q3

以下文章的實驗都是在Ubuntu16.04下進行,用qemu仿真樹莓派2。實際硬件也進行過測試,效果一樣。

2.移植思路

樹莓派2的啟動上電流程是先啟動gpu,從sd卡中讀取kernel固件。所以如果要自己實現kernel,也需要做類似的處理,編譯一個kernel7.img的固件放在sd卡中。如果直接用qemu操作,那么就不需要這么多復雜的操作,直接本地模擬就可以了。

如果要實現移植rt-thread操作系統到樹莓派上,要點是什么?

2.1.啟動代碼

當樹莓派的gpu加載kernel7.img到sdram開始執行的時候,首先需要做必要的初始化工作。所以鏈接地址0x00008000需要正確的給予。初始化必要的設備,由于前期沒有分配棧,只能使用匯編進行初始化。簡而言之,進行必要的操作。那么這些必要的操作有那些?由于樹莓派2的芯片采用bcm2835,里面有4個核在工作,所以只能讓一個核工作,其他三個核睡眠。然后關閉mmu,分配棧空間,清除bss段。此時可以跳轉到C語言去執行相關的邏輯操作了。畢竟C語言的操作比匯編看起來讓人清晰。

2.2.中斷向量初始化

這里需要指定中斷向量表,指定中斷函數的處理函數。根據armv7的體系架構,整理中斷向量表的偏移。然后初始化rt-thread中斷向量表的初始化。當然,這些已經在操作系統里面完成了。

2.3.tick

rt-thread操作系統需要有時鐘tick,也就是定時中斷。對于這部分來說,需要自己實現一個timer中斷。在實體硬件上,我們可以采用的是樹莓派內部自帶的一個名為SP802的時鐘模塊產生的中斷,但是qemu并沒有實現,只實現gtimer。所以為了保證硬件和qemu都能運行,實驗中采用的是gtimer。

2.4.上下文切換

如果要實現中斷現場的返回和線程切換現場的返回,少不了上下文切換的邏輯,也就是context。這部分主要完成的是切換上下文前保存狀態寄存器,切換完成后恢復寄存器的內容。這樣就能夠恢復上次的現場了。

2.5.uart

如果要調試rt-thread程序,當然少不了串口打印,rt-thread操作系統的一大特色就是支持shell。可以通過命令來操作系統,查看信息。樹莓派有兩個串口,一個是直接通過內部時鐘驅動的mini uart。另外一個是pl011串口模塊,兩者操作的寄存器地址不一樣。

以上5點也是整個最小系統移植關鍵。現在筆者已經將這個樹莓派rt-thread最小系統移植上去了。有興趣的自己可以玩一下。

https://github.com/bigmagic123/raspi-littlevgl。

這個項目的是為了在樹莓派上移植littlevgl。初代版本就是最小系統。

3.操作步驟

首先需要將代碼clone下來。

git@github.com:bigmagic123/raspi-littlevgl.git

怎么在樹莓派2上移植rt-thread操作系統

然后進入到工程目錄/bsp/raspi2。這里需要修改的是rtconfig.py文件中的GCC路徑。

怎么在樹莓派2上移植rt-thread操作系統  

這里需要改成自己的gcc路徑。

然后打開vscode上的Terminal --> new  Terminal可以看到控制臺窗口的出現。

怎么在樹莓派2上移植rt-thread操作系統

輸入scons進行編譯。現象如下則表示成功。


怎么在樹莓派2上移植rt-thread操作系統  

QEMU運行

如果此時電腦上已經裝了qemu,那么直接啟動腳本即可正常運行了。


怎么在樹莓派2上移植rt-thread操作系統  

此時表示系統正常運行成功。

樹莓派2硬件運行


怎么在樹莓派2上移植rt-thread操作系統  

連接樹莓派用USB轉TTL模塊。然后將剛才編譯好的文件放到SD卡目錄中。

SD卡文件只留下這三個文件就可以了,其中kernel7.img就是我們剛才用scons編譯出來的rtthread固件。


怎么在樹莓派2上移植rt-thread操作系統  

4.代碼分析

相關的內核代碼可以在rt-thread的官方網站上進行下載。筆者只是改了一些bsp文件。

CPU相關

與cpu相關的在bsp/raspi2/cpu目錄下。

啟動從start_gcc.S開始。上下文切換在context_gcc.S文件中。

外設相關

外設相關的代碼在driver目錄下。目前只有實現uart和tick。

用戶操作代碼

用戶操作代碼在applications文件中,其中啟動的第一個線程就是在main函數中

int main(int argc, char** argv)
{
   rt_kprintf("Hello RT-Thread!\n");
   while(1)
   {
       rt_kprintf("cur tick is %d\n",rt_tick_get());
       rt_thread_delay(1000);
   }
   return 0;
}

感謝各位的閱讀!關于“怎么在樹莓派2上移植rt-thread操作系統”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

合阳县| 辽宁省| 怀化市| 临安市| 高淳县| SHOW| 称多县| 德州市| 兴隆县| 中江县| 海城市| 蓝山县| 东丽区| 怀远县| 自治县| 睢宁县| 永定县| 大英县| 乌什县| 特克斯县| 梨树县| 芜湖市| 连城县| 阳春市| 抚州市| 房山区| 宜兰县| 牟定县| 通江县| 广昌县| 乌鲁木齐县| 千阳县| 南昌市| 特克斯县| 安仁县| 乌兰察布市| 汉源县| 扎赉特旗| 个旧市| 瓦房店市| 南漳县|