版本 86583ea7bcf9980f9732e9df4c34115f4ed115ee
Changes from 86583ea7bcf9980f9732e9df4c34115f4ed115ee to 8eee098a471445db1940b76c41a2657e1d5ca023
---
title: Lab6: Hardware
toc: no
...
預期目標
-------
- 實際體驗 STM32 硬體操作
- 以 `STM32F4-Discovery<http://www.st.com/internet/evalboard/product/252419.jsp>`_ 為參考硬體,探討相關的軟體開發工具與流程
- Unit Test 概念的落實
開發工具介紹與準備
----------------
- GNU Toolchain: 同之前 Lab
- ICE = In-Circuit Emulator
- `Remote Debugging using GDB<http://www.codeproject.com/Articles/14983/Remote-Debugging-using-GDB>`_
.. code-block:: prettyprint
sudo apt-get install automake* libusb-1.0-0-dev
git clone https://github.com/texane/stlink.git
git clone http://github.com/texane/stlink.git
cd stlink
./autogen.sh
./configure --prefix=/usr
make
sudo make install
sudo cp 49-stlinkv2.rules /etc/udev/rules.d/
- 安裝必要的 Ubuntu 套件
.. code-block:: prettyprint
sudo apt-get install libjim-dev
- 取得 OpenOCD 原始程式碼
.. code-block:: prettyprint
git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd
* 或者 `openocd-d2f61e1a4592449188305164b27f495f78dca00a.tar.bz2</embedded/Lab6/openocd-d2f61e1a4592449188305164b27f495f78dca00a.tar.bz2>`_
- 編譯 OpenOCD
.. code-block:: prettyprint
cd openocd
export SKIP_SUBMODULE=1
mkdir -p jimtcl
./bootstrap
./configure --prefix=/opt/openocd \
--enable-jlink \
--enable-amtjtagaccel \
--enable-buspirate \
--enable-stlink \
--disable-libftdi \
--disable-internal-jimtcl
echo -e "all:\ninstall:" > doc/Makefile
make
sudo make install
Programming STM32 F2, F4 ARMs under Linux
------------------------------------------
- `A Tutorial from Scratch<http://www.triplespark.net/elec/pdev/arm/stm32.html>`_
* Introduction STM32, STM32F2, STM32F4
* Obtaining and Setting Up OpenOCD
* Setting up the Hardware: STM32F4Discovery with integrated ST-Link/V2
* The Minimalistic Hello-World Program
* Running the Minimalistic Hello-World Program
* Debugging
* Automating the Steps
工作環境
-------
- 取得最新 Labs 內容 (與之前 `Lab3</embedded/Lab3>`_ 操作相似):
.. code-block:: prettyprint
git clone git://gitcafe.com/embedded2012/Labs.git
cd Labs/Lab-6
具備互動操作的 USB serial 實做
----------------------------
- http://www.sparetimelabs.com/usbcdcacm/ (文末提到與之前指定作業相關的技術議題)
- USB list: /var/lib/usbutils/usb.ids
- neocon 離開方法: ``~.``
* neocon /dev/ttyACM0
- http://wiki.openmoko.org/wiki/NeoCon
- http://wiki.openmoko.org/wiki/CDC_ACM
示範程式碼
--------
.. code-block:: prettyprint
cd Labs/Lab-6/discoveryF4
make
cd discovery_demo
make flash
cd ../serialUSB/
make flash
作業
----
- 透過 OpenOCD 對 STM32F4Discovery 內建的 ST-Link/V2 介面,設計一個驗證硬體的 unit test 環境
- 藉由 OpenOCD + GDB,實做 firmware download 程式,可視為 boot loader
- 一旦系統藉由特製的 boot loader 載入於 STM32F4-Discovery 硬體並啟動後,可監控系統運作並執行特定的 unit test 程式
參考資訊
-------
- `STM32F4-Discovery 繁體中文簡易操作<http://cms.mcuapps.com/products/stm32f4-discovery/README.html>`_
- `OpenOCD 繁體中文簡易操作<http://cms.mcuapps.com/techinfo/toolchains/openocd/>`_