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

版本 e9f5d7c4c13bae969af843ec81b4c8acc4abde5b

Lab23: RTOS

預期目標

  • 在 QEMU 模擬的 STM32 環境中,嘗試執行 FreeRTOS<http://www.freertos.org/>_ 並且學習相關的操作
    • 熟悉 Interrupt 處理機制

Interrupt Service Routine

.. code-block:: prettyprint

git clone git://github.com/beckus/stm32_p103_demos.git
cd stm32_p103_demos
make
make uart_repeat_write_int_QEMURUN
  • 注意 LED 和 USART 的變化
  • 程式碼: demos/uart_repeat_write_int/main.c
  • FreeRTOS Tick<http://www.freertos.org/implementation/a00011.html>_

SysTick

  • context switch 的時間單位為 1 個 tick
  • 讀取 SysTick 中 current & reload 的數值,用來計算更精確的時間單位 (小於tick)
    • http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0179b/ar01s02s08.html
  • 參考資訊: Lab-8</embedded/Lab8>_
    • https://gitcafe.com/embedded2013/Labs/blob/SOL-8/Lab-8/freertos/gdbscript

參考作業要求

  • 將 Lab22 的 FreeRTOS 程式碼中,替換所有 polling I/O 成 interrupt-based handling
  • 透過 SysTick,計算 USART Interrupt 處理之時間成本

作業繳交方式

  • 更新作業提案到共筆網站: Lab 23 / 作業共筆<https://embedded2013.hackpad.com/Lab23-RTOS-mxRAhTfjcJh>,需要標注自己的 ID,可參考 Lab 20 / 作業共筆<https://embedded2013.hackpad.com/Lab20-GNU-Toolchain-zI6gzN3uv1c> 格式
  • 在 Nov 1, 2013 前,將符合作業提案的程式碼,提交到自行 fork 的 repository https://github.com/embedded2013/freertos