--- title: ChibiOS/RT categories: embedded, arm, stm32, stm32f429 toc: yes ... 組員 ---- * 莊承翰 / vchchuang * 詹尚倫 / game * 陳祐任 / bruce30262 * 陳易駿 / alex122380 * 郭耀琮 / rbugoo131 共筆: `hackpad`_ 作業系統架構 ------------ 系統狀態(System States) ^^^^^^^^^^^^^^^^^^^^^^ .. image:: http://chibios.sourceforge.net/html/dot_inline_dotgraph_1.png | .. image:: http://chibios.sourceforge.net/html/dot_inline_dotgraph_2.png .. image:: http://chibios.sourceforge.net/html/dot_inline_dotgraph_3.png * Init + ChibiOS/RT 進行OS初始化之前的狀態,進行所謂的物理重置(physical reset)時也會進到這個狀態 + 呼叫`chSysInit()`_ 這個函式進行初始化 + 在這個狀態裡所有可以發出Maskable Interrupt的sources全部失效 + 初始化完後進到 Normal * Normal + 初始化完後到達的狀態 + 在這裡可以執行Thread, 產生任何中斷及呼叫任何system API * Suspended + 在這個狀態裡,無法接收正常中斷(IRQ),但是可以接收快速中斷(FIQ) + 除了可以呼叫`chSysDisable()`_到達Disable狀態,以及`chSysEnable()`_到達Normal狀態之外,其他所有system API都不能呼叫 * Disabled + 所有可遮罩式中斷資源全部失效,系統僅能處理不可遮罩式中斷 + 除了可以呼叫`chSysEnable()`_到達Normal狀態,以及`chSysSuspend()`_到達Suspended狀態之外,其他所有system API都不能呼叫 * Sleep + 當系統中沒有其他的Thread要跑時,此時系統會執行一個 `idle thread`_,到達這個狀態 + 此時系統將處於 low power mode,並等待一個中斷跳出這個狀態 + 接收到一個IRQ時,將會跑到 SRI 狀態去處理中斷,處理完後會回到 Normal * S-Locked * I-Locked * Serving Regular Interrupt ( SRI ) * Serving Fast Interrupt ( SFI ) * Serving Non-Maskable Interrupt ( SNMI ) * Halted 上下文交換(Context Switch) ^^^^^^^^^^^^^^^^^^^^^^^^^ 中斷(Interrupt) ^^^^^^^^^^^^^^^ | Maskable Interrupt(可遮罩式中斷) : 一種硬體中斷。可以透過軟體控制去設定中斷遮罩暫存器(Interrupt Mask Register, IMR)內的位元遮罩值(bit-mask)來讓CPU決定要不要回應這個中斷要求。 | Non-Maskable Interrupt(不可遮罩式中斷) : 一種硬體中斷。與可遮罩式中斷不同,它無法用軟體去控制。**CPU一定要回應這個中斷要求,不可以忽略。** 硬體驅動原理 ------------ * 以 DMA2D 為例 效能表現 -------- * 參考 ChibiOS/RT 的 test/testbmk.c 參考資料 -------- * `Building eye-catching GUIs for your embedded MCU designs`_ * `ChibiOS/RT - SourceForge`_ * `Overview of the Cortex-M3, Chapter 2`_