分享到plurk 分享到twitter 分享到facebook

版本 d2d966f77ed96e796c644a5483068b1caa067253

ChibiOS/RT

組員

  • 莊承翰 / vchchuang
  • 詹尚倫 / game
  • 陳祐任 / bruce30262
  • 陳易駿 / alex122380
  • 郭耀琮 / rbugoo131

共筆: hackpad<https://stm32f429.hackpad.com/ChibiOSRT--tRTURqqJOhr>_

作業系統架構

系統狀態(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()<chSysInit()>_ 這個函式進行初始化
    • 在這個狀態裡所有可以發出Maskable Interrupt的sources全部失效
    • 初始化完後進到 Normal
  • Normal
    • 初始化完後到達的狀態
    • 在這裡可以執行Thread, 產生任何中斷及呼叫任何system API
  • Suspended
    • 在這個狀態裡,無法接收正常中斷(IRQ),但是可以接收快速中斷(FIQ)
    • 除了可以呼叫chSysDisable()<chSysDisable()>_到達Disable狀態,以及chSysEnable()<chSysEnable()>_到達Normal狀態之外,其他所有system API都不能呼叫
  • Disabled
  • Sleep
  • 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<http://www.embedded.com/design/mcus-processors-and-socs/4426244/1/Building-eye-catching-GUIs-for-your-embedded-MCU-designs>_
  • ChibiOS/RT - SourceForge<http://chibios.sourceforge.net/html/index.html>_
  • Overview of the Cortex-M3, Chapter 2<http://www.arm.com/files/word/Yiu_Ch2.pdf>_