Ubuntu16.04下的stm32环境配置

时间:2022-06-14 09:19:15

安装stlink

必须安装libusb-1.0-0-dev, 其他安装不起作用

sudo apt-get install libusb-1.0-0-dev
git clone https://github.com/texane/stlink.git
cd stlink/
make clean
make
cd build/Release/
sudo make install


安装openocd

tar zxvf openocd-0.10.0.tar.gz
cd openocd-0.10.0/
./configure
make
sudo make install

Update 2018-05-11: 在Ubuntu18.04下, 无法使用tar包编译安装, 如果带 --enable-stlink会报错误 configure: error: libusb-1.x is required for the ST-Link JTAG Programmer, 但是不带这个参数一样无法通过编译, 经apt-cache show openocd发现版本是 0.10.0-4, 于是直接通过apt-get install安装

安装 gcc-arm-none-eabi

tar xvf gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2
cd /opt/
sudo mkdir gcc-arm
cd gcc-arm/
sudo mv ~/Backup/linux/gcc-arm-none-eabi-5_4-2016q3/ .
sudo chown -R root:root gcc-arm-none-eabi-5_4-2016q3/
/opt/gcc-arm/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-gcc -v

Update 2018-05-11: 在Ubuntu18.04下, 自带的版本是 Version: 15:6.3.1+svn253039-1build1, 这个应该是比2016q4还更新的版本, 从官方下载的版本是 https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/7-2017q4/gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2 . 使用2017q4这个版本编译安装后工作正常


将gcc-arm-none-eabi executables添加到PATH

edit ~/.profile, edit the last line

PATH="$HOME/bin:$HOME/.local/bin:/opt/gcc-arm/gcc-arm-none-eabi-5_4-2016q3/bin/:$PATH"

then run: source .prifle to make it take effect

硬件准备

.

硬件连接
st-link pin to STM32F103C8T6 mini board(SWD)
GND     G
SWCLK   CLK
SWDIO   IO
3.3V    V3

连接到PC后的dmesg输出

[10371.046367] usb 2-1.2: new full-speed USB device number 3 using ehci-pci
[10371.157440] usb 2-1.2: New USB device found, idVendor=0483, idProduct=3748
[10371.157448] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[10371.157453] usb 2-1.2: Product: STM32 STLink
[10371.157457] usb 2-1.2: Manufacturer: STMicroelectronics
[10371.157461] usb 2-1.2: SerialNumber: VÿkIfHV'Fg


写入

$:~/ArmProjects/simple-gcc-stm32-project$ openocd -f /usr/local/share/openocd/scripts/interface/stlink-v2.cfg  -f /usr/local/share/openocd/scripts/target/stm32f1x.cfg -c init -c halt -c "flash write_image erase LED_project.hex" -c reset -c shutdown
Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
none separate
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
Info : STLINK v2 JTAG v21 API v2 SWIM v4 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.256122
Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints
target halted due to debug-request, current mode: Thread
xPSR: 0x61000000 pc: 0x0800026e msp: 0x200003f0
auto erase enabled
Info : device id = 0x20036410
Info : flash size = 64kbytes
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000003a msp: 0x200003f0
wrote 7168 bytes from file LED_project.hex in 0.431739s (16.213 KiB/s)
shutdown command invoked

.