Linux下使用STM32F103C8

ubuntu18.04.1(x64) 使用STM32F103C8

1.板子使用JLINK烧写程序,需要先安装JLINK驱动(V9)

SEGGER官网下载最新jlink驱动,网址 https://www.segger.com/downloads/jlink

jlink_01

JLinkExe会用到libreadline库,所以得把libreadline库装上。http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html 中Current Status选择下载,并安装,如下所示:

1
2
3
4
tar -zxvf readline-6.2.tar.gz
./configure
make
make install

2.Jlink安装好啦,找到 /opt目录下/opt/SEGGER/JLink,说明驱动已经安装

jlink_02

3.执行./JLinkExe 进入JLink命令行模式,出现下图

jlink_03

4.输入cconnect,如果设备显示 Unspecified,要先设置目标处理器,否则无法正常烧写,我的型号是STM32F103C8T6,这里只能输入

1
J-Link>exec device=STM32F103C8

jlink_04

4.下载loadbin

loadbin用于将二进制文件下载到目标存储器,语法如下:

1
Syntax: loadbin <filename>, <addr>  //Load binary file into target memory

有个麻烦,下载完没有明显提示成功与否,可以通过这样解决:在PC通过命令xxd查看待下载文件,下载进去通过JLink命令mem查看,判断这两者是否一样(只比较前面若干字节即可),若一样,则表示烧写成功。举个例子,把/bin/cp文件烧到板子:

1
2
3
4
5
6
7
8
9
10
11
12
13
J-Link>loadbin /bin/xxx.bin 0x08000000
Loading binary file... [/bin/cp]
Writing bin data into target memory @ 0x08000000.
J-Link>mem 0x08000000,3f
08000000 = 7F 45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00
08000010 = 02 00 03 00 01 00 00 00 40 A1 04 08 34 00 00 00
08000020 = 04 73 01 00 00 00 00 00 34 00 20 00 09 00 28 00
08000030 = 1D 00 1C 00 06 00 00 00 34 00 00 00 34 80 04
root@tiger:~$ xxd /bin/xxx.bin | more
0000000: 7f45 4c46 0101 0100 0000 0000 0000 0000 .ELF............
0000010: 0200 0300 0100 0000 40a1 0408 3400 0000 ........@...4...
0000020: 0473 0100 0000 0000 3400 2000 0900 2800 .s......4. ...(.
0000030: 1d00 1c00 0600 0000 3400 0000 3480 0408 ........4...4...

3.2 保存savebin

1
Syntax: savebin <filename>, <addr>, <NumBytes>   //Saves target memory into binary file

这里值得一提的是,参数是十六进制,比如指定10,保存的是16个字节。

命令mem的也是十六进制的。

------ 本文结束------