TencentOS-Tiny之GCC

国庆节快乐!

本来都已躺在床上准备睡了,但是心情久久不能平静,于是在22:39又爬起来,把第二篇上手文章写一下。

前一篇文章写了如何在MacOS上使用STM32CubeIDE进行搭建开发环境以及代码编译。但是对于习惯于Linux上开发的我,还是不太习惯使用这种IDE集成环境。
今天我则 使用GCC进行编译与烧录

准备

  • 系统源码 可以使用git clone https://github.com/Tencent/TencentOS-tiny.git
  • GCC交叉编译链 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
  • stlink 我下载的版本是 stlink-1.3.0-macosx-amd64 百度云盘:链接: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下载程序的时候,其实已经有了提示信息了:
TencentOS-Tiny之GCC_第1张图片
所以,在这里我们获取到必要信息后,执行命令:

➜  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文件也可以下载成功,但是上电之后没有任何反应,这让我觉得很奇怪。

你可能感兴趣的:(TencentOS-tiny)