---
title: Lab3: GNU Toolchain and RTOS
toc: no
...
預期目標
-------
- 學習 GNU Toolchain 的使用
- 在 QEMU 模擬的 STM32 環境中,嘗試執行 `FreeRTOS`_ 並且學習相關的操作
- 對 RTOS 內部運作進行視覺化,以銜接未來的硬體操作
GTKWave
--------------
- `GTKWave`_: 強大的 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`_ 操作,取得最新的 Lab3 程式碼
- 狀況一:只是在課堂練習
.. code-block:: prettyprint
git clone git://gitcafe.com/embedded2012/Labs.git
cd Labs/Lab-3
- 狀況二:整合到 P-,準備可提交作業的環境。以 `jserv`_ 為例:
.. code-block:: prettyprint
cd P-jserv
git fetch labs
git rebase labs/master
cd Lab-3
- 取得最新的 QEMU-STM32,注意:與 `Lab-1`_ 的 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`_ 的操作,編譯並執行 FreeRTOS 程式
.. code-block:: prettyprint
cd freertos
make
make qemu
作業 (A)
-------------
.. image:: /embedded/Lab3/gtkwave.png