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

版本 719cb92666a2ab1d6733867c891949109eac9e1c

embedded/chibios

Changes from 719cb92666a2ab1d6733867c891949109eac9e1c to 8069d6a13ea59c94fd40df4bdfd3260888dc77b7

---
title: ChibiOS/RT
categories: embedded, arm, stm32, stm32f429
toc: yes
...

組員
----
* 莊承翰 / 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 
    + 所有可遮罩式中斷資源全部失效,系統僅能處理不可遮罩式中斷
    + 除了可以呼叫`chSysEnable()<chSysEnable()>`_到達Normal狀態,以及`chSysSuspend()<chSysSuspend()>`_到達Suspended狀態之外,其他所有system API都不能呼叫
* Sleep 
    + 當系統中沒有其他的Thread要跑時,此時系統會執行一個 `idle 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<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>`_