国庆节快乐!
本来都已躺在床上准备睡了,但是心情久久不能平静,于是在22:39又爬起来,把第二篇上手文章写一下。
前一篇文章写了如何在MacOS上使用STM32CubeIDE进行搭建开发环境以及代码编译。但是对于习惯于Linux上开发的我,还是不太习惯使用这种IDE集成环境。
今天我则 使用GCC进行编译与烧录。
git clone https://github.com/Tencent/TencentOS-tiny.git
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
我当前使用的是 gcc-arm-none-eabi-8-2019-q3-update 版本 百度云盘:链接:https://pan.baidu.com/s/1IMYH_pq5Je7fmnz4YvBqPg 密码:ot50
百度云盘:链接:https://pan.baidu.com/s/1_HEmlWDU-MeQYwEbIyHjZA 密码:vnyr
其实说是安装,并谈不上。GCC交叉编译链解压缩之后,添加到系统环境变量PATH当中即可,stlink同样的,也是解压缩之后,在解压出的bin文件夹下就可以找到可执行文件。源码……没啥可说的。
使用GCC编译很简单,我们进入到Demo路径:
➜ ~ cd tiny/TencentOS-tiny/board/TencentOS_tiny_EVB_MX/GCC/hello_world
➜ hello_world git:(master) ✗ make
根据电脑配置不同,等待几十秒即可看到编译成功,生成了对应的固件程序。
进入到stlink的目录
➜ stlink-1.3.0-macosx-amd64 ll
total 0
drwxr-xr-x 6 lee staff 192B 10 1 15:51 bin
drwxr-xr-x 4 lee staff 128B 1 28 2017 include
drwxr-xr-x 7 lee staff 224B 1 28 2017 lib
drwxr-xr-x 3 lee staff 96B 1 28 2017 usr
➜ stlink-1.3.0-macosx-amd64 cd bin
➜ bin
然后使用 st-flash 命令进行烧写固件。因为对烧写固件的不熟悉,这里我耗费了不少时间。
第一点就是,之前我根本不知道用哪个程序进行下载固件,在网上查了不少资料,后来灵光一现,搜索到了st-link这个程序。
第二点,下载使用什么命令。这个比较简单了,直接执行程序即可打印出帮助信息:
➜ bin ./st-flash
invalid command line
stlinkv1 command line: ./st-flash [--debug] [--reset] [--format ] {read|write} /dev/sgX
stlinkv1 command line: ./st-flash [--debug] /dev/sgX erase
stlinkv2 command line: ./st-flash [--debug] [--reset] [--serial ] [--format ] {read|write}
stlinkv2 command line: ./st-flash [--debug] [--serial ] erase
stlinkv2 command line: ./st-flash [--debug] [--serial ] reset
Use hex format for addr, and .
Format may be 'binary' (default) or 'ihex', although must be specified for binary format only.
./st-flash [--version]
➜ bin
第三点就是,下载地址应该是多少?这里我查询了芯片手册,群里咨询了群友,后来发现,在使用STM32CubeIDE下载程序的时候,其实已经有了提示信息了:
所以,在这里我们获取到必要信息后,执行命令:
➜ bin ./st-flash write /Users/lee/tiny/TencentOS-tiny/board/TencentOS_tiny_EVB_MX/GCC/hello_world/build/TencentOS_tiny.bin 0x8000000
看到打印输出:
st-flash 1.3.0
2019-10-01T23:21:09 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Loading device parameters…
2019-10-01T23:21:09 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Device connected is: L43x device, id 0x10016435
2019-10-01T23:21:09 INFO /Users/jerry/Downloads/stlink-master/src/common.c: SRAM size: 0xc000 bytes (48 KiB), Flash: 0x40000 bytes (256 KiB) in pages of 2048 bytes
2019-10-01T23:21:09 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Attempting to write 37816 (0x93b8) bytes to stm32 address: 134217728 (0x8000000)
Flash page at addr: 0x08009000 erasedEraseFlash - Page:0x12 Size:0x800
2019-10-01T23:21:10 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Finished erasing 19 pages of 2048 (0x800) bytes
2019-10-01T23:21:10 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Starting Flash write for F2/F4/L4
2019-10-01T23:21:10 INFO /Users/jerry/Downloads/stlink-master/src/flash_loader.c: Successfully loaded flash loader in sram
size: 32768
size: 5048
2019-10-01T23:21:11 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Starting verification of write complete
2019-10-01T23:21:11 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Flash written and verified! jolly good!
➜ bin
提示下载成功。
下载完程序之后,板子自己就可以重启运行程序,有时候可能需要自己手工按下重启或者重新上电,然后就可以看到刚才编译的程序运行起来了。
是不是比使用IDE简单?!哈?!
虽然程序运行起来了但其实我到现在也还是不太明白,希望有清楚的朋友告知我:
hex bin elf 三种文件,为什么只有下载bin文件才有效?
hex文件也可以下载成功,但是上电之后没有任何反应,这让我觉得很奇怪。