--- 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 - 按下 Ctrl-Alt-2 切換到 serial0 畫面時,可發現 FreeRTOS 示範程式中的 thread 已主動作了輸出,並且可在該畫面中,進行輸入操作。請觀察其行為並比對程式碼 作業 (A) ------------- .. image:: /embedded/Lab3/gtkwave.png