2016年3月13日 星期日

Raspberry Pi 移植即時作業系統FreeRTOS




在本次專題研究探討中, 我們以 Rasberry Pi 2 為硬體平台, 一開始先經由移植開源 U-boot 以了解CPU初始化程序及硬體初始化程序,接著以bare-metal 方式來開發Raspberry Pi 週邊界面的驅動程式,如 GPIO、UART及I2C 。

從 U-boot 移植的經驗, 我們不僅熟悉了ARM 組合語言,也了解到ARM 開機程序為何? 初始化中斷向量表為何意? Assembly Code要如何進入到C Code ? Startup Code 為何意 ? Linker Script 角色為何?

接著我們研究FreeRTOS 這套即時作業系統架構及如何將FreeRTOS移稙到各種不同硬體平台上。經由code的層層剖析,了解到任何平台都必須促使FreeRTOS在timer ticker中斷處理函式能正確被觸發, 如此FreeRTOS中的context switch 機制才可正確運作,以達到其Multi-tasking 多工的角色。

我們成功了移植FreeRTOS 到Raspberry Pi 上, 我們也藉由執行FreeRTOS 的API,如xTaskCreate(), vTaskDelay(),xSemaphoreCreateBinary() , 來實測FreeRTOS 的多工與排程等功能。

關鍵詞: Raspberry Pi, FreeRTOS, ARM Cortex-A7,uboot, Bare-metal 閞發, I2C, UART, SPI

 arm bootloader



沒有留言 :

張貼留言