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

版本 d9dedc09c4fe64d79f2e7f6ebd518b324f67f7c5

Lab3: GNU Toolchain and RTOS

預期目標

  • 學習 GNU Toolchain 的使用
  • 在 QEMU 模擬的 STM32 環境中,嘗試執行 FreeRTOS<http://www.freertos.org/>_ 並且學習相關的操作
  • 對 RTOS 內部運作進行視覺化,以銜接未來的硬體操作

GTKWave

  • GTKWave<http://gtkwave.sourceforge.net/>_: 強大的 wave viewer
  • 在 Ubuntu Linux 的安裝與操作

.. code-block:: prettyprint

sudo apt-get install gtkwave
cp -af /usr/share/doc/gtkwave/examples/ && cd examples
vzt2vcd des.vzt > des.vcd
gtkwave des.vcd
  • 參考輸出畫面。記得要先選取左下方 Type / SIgnals 並以 Append 加入到分析的清單中

.. image:: http://www.gentoo.org/proj/en/science/electronics/tests/gtkwave.png

FreeRTOS for STM32

  • 仿造 Lab-2</embedded/Lab2>_ 操作,取得最新的 Lab3 程式碼
  • 狀況一:只是在課堂練習

.. code-block:: prettyprint

git clone git://gitcafe.com/embedded2012/Labs.git
cd Labs/Lab-3
  • 狀況二:整合到 P-,準備可提交作業的環境。以 jserv</User/jserv>_ 為例:

.. code-block:: prettyprint

cd P-jserv
git fetch labs
git rebase labs/master
cd Lab-3
  • 取得最新的 QEMU-STM32,注意:與 Lab-1</embedded/Lab1>_ 的 QEMU 是不同版本 git clone git://gitcafe.com/embedded2012/qemu_stm32.git

  • 配置 QEMU-STM32 組態並編譯

.. code-block:: prettyprint

cd qemu_stm32
./configure --disable-werror --enable-debug --target-list="arm-softmmu" \
    --extra-cflags=-DDEBUG_CLKTREE \
    --extra-cflags=-DDEBUG_STM32_RCC \
    --extra-cflags=-DDEBUG_STM32_UART \
    --extra-cflags=-DSTM32_UART_NO_BAUD_DELAY \
    --extra-cflags=-DSTM32_UART_ENABLE_OVERRUN
make && cd ..
  • 仿造 Lab-2</embedded/Lab2>_ 的操作,編譯並執行 FreeRTOS 程式

.. code-block:: prettyprint

cd freertos
make
make qemu
  • 按下 Ctrl-Alt-2 切換到 serial0 畫面時,可發現 FreeRTOS 示範程式中的 thread 已主動作了輸出,並且可在該畫面中,進行輸入操作。請觀察其行為並比對程式碼

作業 (A)

.. image:: /embedded/Lab3/gtkwave.png