STM32F429ZI-disco1 === ###### tags: `stm32` ## Toolchain (以 Ubuntu Linux 作為開發平台) 由於 ABI 採用 hardfp,需要有對應的 GNU Toolchain,可直接使用 Ubuntu 的 gcc-arm-none-eabi : sudo apt-get install gcc-arm-none-eabi 若因為 Ubuntu 版本較舊,而找不到 apt 來源而致使前一命令失敗的話,改為以下操作: - sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded - sudo apt-get update - sudo apt-get install gcc-arm-none-eabi - 針對 Ubuntu 14.04,執行以下指令: sudo apt-get remove binutils-arm-none-eabi gcc-arm-none-eabi sudo apt-get install gcc-arm-none-eabi=4-8-2014q2-0trusty10 sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded sudo apt-get update sudo apt-get install gcc-arm-none-eabi=4.9.3.2015q3-1trusty1 或是直接下載 prebuilt package,然後解壓縮放到自己習慣的目錄下,如 $HOME/STM32/toolchain,一個名為 envsetup.sh 的bash script 可協助您設定環境變數 #!/bin/bash echo “setting build environment for STM32F4″ export STM32_PATH=$HOME/STM32 export PATH=$STM32_PATH/toolchain/gcc-arm-none-eabi-4_8-2013q4/bin/:$STM32_PATH/toolkit/bin:$PATH 確保使用 Ubuntu 的 toolchain: (請將下方的 /usr/bin 字串改為下載 toolchain 所解開後的目錄) - env | grep ^PATH - which arm-none-eabi-gcc 參考輸出為 /usr/bin/arm-none-eabi-gcc ### 安裝 st-link 工具 - 為避免無謂的版本問題,請不要用 Debian/Ubuntu 內建的套件,一律從原始程式碼編譯並安裝 sudo apt-get install automake* libtool libusb-1.0-0-dev 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/ ### 安裝 OpenOCD - 不要用 Debian/Ubuntu 內建的套件,需要從 Git 取得最新程式碼並編譯 - 操作方式: sudo apt-get install texi2html texinfo git clone git://git.code.sf.net/p/openocd/code openocd cd openocd ./bootstrap ./configure --prefix=/usr --enable-stlink make sudo make install 更新/還原 ST 展示韌體程式碼 操作方式: - 確認 STM32F429I-Discovery_FW_V1.0.1 已下載: http://www.st.com/web/en/catalog/tools/PF259429 - unzip stsw-stm32138.zip - 確認已正確設定 Toolchain 的 $PATH 環境變數 - arm-none-eabi-objcopy -I ihex -O binary `find -name STM32F429I-DISCOVERY_Demo_V1.0.1.hex` /tmp/out.bin - st-flash write /tmp/out.bin 0x8000000 燒錄示範韌體 操作方式: - 確認前述 st-link, openocd 以及 Toolchain 均已正確安裝和設定 - git clone https://github.com/jserv/stm32f429-demos.git - cd stm32f429-demos - make list 應該可見若干韌體清單,以 Paint 為例,可透過以下命令燒錄到 STM32F429 Discovery 中: - make flash-Paint 其他展示: (以下任選一個) - make flash-TouchGFX-demo2014 - make flash-STM32CubeDemo_STM32F429I-Discovery - make flash-STM32F429I-DISCOVERY_Demo_V1.0.1 Tip: 遇到無法透過 openocd 燒錄韌體怎麼辦? 可以透過前述 stm32f429-demos,然後執行 - make flash-STM32CubeDemo_STM32F429I-Discovery 重新燒錄 flash 即可 示範專案:簡單的 3D rendering 程式 操作方式: - 確認 STM32F429I-Discovery_FW_V1.0.1 已下載: http://www.st.com/web/en/catalog/tools/PF259429 - unzip stsw-stm32138.zip - git clone https://github.com/jserv/stm32f429-r3d - cd stm32f429-r3d - make 確保新版 stlink 或 OpenOCD 已正確安裝後,建議使用 git 版本 (OpenOCD 安裝方式請見後方) - make flash 有時得重複此操作,才會正確燒錄 若看到畫面一片白,可按下 RESET 按鈕,稍候即可見到茶壺,此時順勢晃動開發板,可見茶壺隨著轉動。接著按下 USER 按鈕 (藍色),會切換到不同的 3D model  示範專案:USART 測試程式 簡單測試 USB TTL Cable 與 STM32F429 Discovery Board 的連接。 選 PA9/PA10 腳位 (USART1 RXD/TXD) 做測試的原因: 從 32F429I Discovery 的 user manual 得知這兩個腳位是 free 的,過去在 STM32F4 Discovery 選用的 PA0/PA1 腳位 (USART4), 在 STM32F429 Discovery 上都另有用途 (user button, MEMS-INT1) 操作方式: - git clone https://github.com/KunYi/stm32F429-usart1.git - cd stm32F429-usart1 - make clean all - make flash - 接線只需要3 pin (建議翻面) - PA9 (USART1_TX) 接白線 - PA10 (USART1_RX) 接綠線 - Discovery 上的 GND 接黑線  安裝 GNU screen 來操作 ttyUSB sudo apt-get install screen 操作方式: - 先確認 ttyUSB 裝置正確建立: ls /dev/ttyUSB* - 範例: attach the device ttyUSB0 - screen /dev/ttyUSB0 115200 8n1 - 執行此命令之前,應該確定你使用的帳號已加入到 dialout 群組,否則無法正確開啟 /dev/ttyUSB? 裝置 - 參考 Howto: Linux Add User To Group - 按下版子上的 RESET 按鈕 (黑色) - 當要離開,按組合鍵 CTRL+a 之後再按 k 參考執行畫面: [Open /dev/ttyUSB0] Hello World! Just for STM32F429I Discovery verify USART1 with USB TTL Cable 問題排除 無法透過 stlink 正確燒錄: st-flash write r3d.bin 0x8000000 2014-01-30T11:46:56 INFO src/stlink-common.c: Loading device parameters.... 2014-01-30T11:46:56 WARN src/stlink-common.c: unknown chip id! 0x10036419 stlink_sram_flash() == -1 make: *** [flash] Error 255 表示 stlink 軟體太舊,請自 github 更新 並安裝。請確認 which st-flash 的結果正確指向新版的 stlink。在 Ubuntu 下用 stlink,記得要把 49-stlinkv2.rules 檔案複製到 /etc/udev/rules.d/ 目錄下 改用 STlink GUI 也可燒錄,執行畫面如下:  使用 OpenOCD 燒錄 (流程) 確保版本 > 0.7.0 - 不要用 Debian/Ubuntu 內建的套件 - openocd --version - 預期類似以下: Open On-Chip Debugger 0.8.0-dev-00432-gdba153b (2014-03-29-18:18) 執行 openocd -f stm32f429discovery.cfg 參考輸出畫面 Info : This adapter doesn't support configurable speed Info : STLINK v2 JTAG v17 API v2 SWIM v0 VID 0x0483 PID 0x3748 Info : using stlink api v2 Info : Target voltage: 2.873814 Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints 在其他終端機 視窗執行: telnet localhost 4444 (按下 Ctrl-] 再按 q 鍵可離開 telnet 畫面) 以下參考畫面和指令 (粗體部份; 過程中留意到板子左上方的燈號會持續閃著) Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Open On-Chip Debugger > init > reset init target state: halted target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc > halt > flash write_image erase /full_path/r3d.elf auto erase enabled device id = 0x10036419 flash size = 2048kbytes target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x20000042 msp: 0xfffffffc wrote 524288 bopenocd -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg -c "init" -c "reset init" -c "halt" -c "flash write_image erase $IMG" -c "verify_image $IMG" -c "reset run" -c shutdownytes from file /full_path/r3d.bin in 20.244406s (25.291 KiB/s) > verify_image /full_path/r3d.elf target state: halted target halted due to breakpoint, current mode: Handler HardFault xPSR: 0x61000003 pc: 0x2000002e msp: 0x2002fc70 target state: halted target halted due to breakpoint, current mode: Handler HardFault xPSR: 0x61000003 pc: 0x2000002e msp: 0x2002fc70 verified 450192 bytes in 0.326716s (1345.635 KiB/s) > reset run > https://docs.google.com/document/d/1Ygl6cEGPXUffhTJE0K6B8zEtGmIuIdCjlZBkFlijUaE/edit https://www.ptt.cc/bbs/ASM/M.1502383786.A.47C.html http://descent-incoming.blogspot.tw/2016/04/books-stm32f4.html ## stm32 qemu函式庫not found問題 ``` libtinfow.so.6 -> /lib/x86_64-linux-gnu/libtinfo.so.5 libncursesw.so.6 -> /lib/x86_64-linux-gnu/libncursesw.so.5 ``` 編譯時需要加入disable werror的flag ``` ./configure --disable-werror ``` ## pin Legend     from: https://os.mbed.com/platforms/ST-Discovery-F429ZI/
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up