feat: add rust demo
This commit is contained in:
490
examples/tos_meets_rust/docs/setup.linux.ubuntu.md
Normal file
490
examples/tos_meets_rust/docs/setup.linux.ubuntu.md
Normal file
@@ -0,0 +1,490 @@
|
||||
# STM32 甲醛检测器安装教程
|
||||
|
||||
本文所用系统为 Ubuntu 20.04.1, 以下教程所用到的系统固件源码以本仓库 template 中的模板代码为准,
|
||||
有任何疑问欢迎提 issues.
|
||||
|
||||
## 教程
|
||||
|
||||
- 连接 ST-LINK (STv2) 和开发板
|
||||
|
||||
STv2 上有一个示意图标有各个 Pin 的含义, Pin 周围有一个缺口,
|
||||
缺口对应的一排 Pin 对应与示意图外侧的一列, STv2 和开发板接口连接对应关系如下表所示.
|
||||
|
||||
|STv2 接口 |开发板接口 |
|
||||
| ------------- |-------------|
|
||||
| 3.3v | 3v3 |
|
||||
| SWDIO | DIO |
|
||||
| SWCLK | CLK |
|
||||
| GND | GND |
|
||||
|
||||
- 安装 STv2 驱动
|
||||
|
||||
ST-LINK 的驱动源码地址为 https://github.com/stlink-org/stlink.
|
||||
|
||||
安装编译依赖
|
||||
|
||||
sudo apt install clang build-essential cmake libusb-1.0-0 libusb-1.0-0-dev
|
||||
|
||||
下载源码并编译
|
||||
|
||||
git clone https://github.com/stlink-org/stlink
|
||||
cd stlink
|
||||
make release
|
||||
|
||||
安装到 $HOME/.usr/stlink 目录中
|
||||
|
||||
cd build/Release && make install DESTDIR=$HOME/.usr/stlink
|
||||
|
||||
安装后 $HOME/.usr/stlink 结构如下
|
||||
|
||||
➜ Release git:(develop) tree ~/.usr/stlink/
|
||||
/home/m9/.usr/stlink/
|
||||
├── etc
|
||||
│ └── modprobe.d
|
||||
│ └── stlink_v1.conf
|
||||
├── lib
|
||||
│ └── udev
|
||||
│ └── rules.d
|
||||
│ ├── 49-stlinkv1.rules
|
||||
│ ├── 49-stlinkv2-1.rules
|
||||
│ ├── 49-stlinkv2.rules
|
||||
│ └── 49-stlinkv3.rules
|
||||
└── usr
|
||||
└── local
|
||||
├── bin
|
||||
│ ├── st-flash
|
||||
│ ├── st-info
|
||||
│ └── st-util
|
||||
├── include
|
||||
│ └── stlink
|
||||
│ ├── backend.h
|
||||
│ ├── chipid.h
|
||||
│ ├── commands.h
|
||||
│ ├── flash_loader.h
|
||||
│ ├── libusb_settings.h
|
||||
│ ├── logging.h
|
||||
│ ├── md5.h
|
||||
│ ├── reg.h
|
||||
│ ├── sg.h
|
||||
│ ├── stlink.h
|
||||
│ ├── stm32.h
|
||||
│ ├── usb.h
|
||||
│ └── version.h
|
||||
├── lib
|
||||
│ ├── libstlink.a
|
||||
│ ├── libstlink.so -> libstlink.so.1
|
||||
│ ├── libstlink.so.1 -> libstlink.so.1.6.1
|
||||
│ └── libstlink.so.1.6.1
|
||||
└── share
|
||||
└── man
|
||||
└── man1
|
||||
├── st-flash.1
|
||||
├── st-info.1
|
||||
└── st-util.1
|
||||
|
||||
现在需要通过 udev 设置 USB 访问权限, 进入到 stlink 源码根目录执行如下操作
|
||||
|
||||
sudo cp -a config/udev/rules.d/* /etc/udev/rules.d/
|
||||
sudo udevadm control --reload-rules
|
||||
sudo udevadm trigger
|
||||
|
||||
现在给电脑插上电路板, 使用 lsusb 查看 USB 设备, 能看到如下输出说明安装成功
|
||||
|
||||
|
||||
➜ stlink git:(develop) lsusb
|
||||
...
|
||||
Bus 002 Device 013: ID 0483:3748 STMicroelectronics ST-LINK/V2
|
||||
...
|
||||
|
||||
|
||||
在 shell 配置文件如 $HOME/.zshrc 中添加如下环境变量
|
||||
|
||||
STLINK=$HOME/.usr/stlink
|
||||
export PATH=${STLINK}/usr/local/bin:${PATH}
|
||||
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${STLINK}/usr/local/lib
|
||||
|
||||
更新库缓存
|
||||
|
||||
sudo ldconfig
|
||||
|
||||
刷新环境变量
|
||||
|
||||
exec $SHELL
|
||||
|
||||
然后查看板子信息
|
||||
|
||||
➜ ~ st-info --probe
|
||||
Found 1 stlink programmers
|
||||
serial: 2c5a15000b14324d434d4e00
|
||||
hla-serial: "\x2c\x5a\x15\x00\x0b\x14\x32\x4d\x43\x4d\x4e\x00"
|
||||
flash: 131072 (pagesize: 2048)
|
||||
sram: 36864
|
||||
chipid: 0x0460
|
||||
descr: G070/G071/G081
|
||||
|
||||
|
||||
测试文件读取
|
||||
|
||||
➜ ~ st-flash --debug read dummy.file 0 256
|
||||
st-flash 1.6.1-96-gbf41f14
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** looking up stlink version
|
||||
2020-09-22T23:56:45 DEBUG common.c: st vid = 0x0483 (expect 0x0483)
|
||||
2020-09-22T23:56:45 DEBUG common.c: stlink pid = 0x3748
|
||||
2020-09-22T23:56:45 DEBUG common.c: stlink version = 0x2
|
||||
2020-09-22T23:56:45 DEBUG common.c: jtag version = 0x23
|
||||
2020-09-22T23:56:45 DEBUG common.c: swim version = 0x7
|
||||
2020-09-22T23:56:45 DEBUG common.c: stlink current mode: debug (jtag or swd)
|
||||
2020-09-22T23:56:45 DEBUG usb.c: JTAG/SWD freq set to 0
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** set_swdclk ***
|
||||
2020-09-22T23:56:45 DEBUG common.c: stlink current mode: debug (jtag or swd)
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** stlink_jtag_reset ***
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** stlink_reset ***
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** stlink_write_debug32 0x05fa0004 to 0xe000ed0c
|
||||
2020-09-22T23:56:45 DEBUG common.c: Loading device parameters....
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** stlink_core_id ***
|
||||
2020-09-22T23:56:45 DEBUG common.c: core_id = 0x0bc11477
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** stlink_read_debug32 0000000000 at 0xe0042000
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** stlink_read_debug32 0x20006460 at 0x40015800
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** stlink_read_debug32 0xffff0080 at 0x1fff75e0
|
||||
2020-09-22T23:56:45 INFO common.c: G070/G071/G081: 36 KiB SRAM, 128 KiB flash in at least 2 KiB pages.
|
||||
2020-09-22T23:56:45 DEBUG common.c: stlink current mode: debug (jtag or swd)
|
||||
2020-09-22T23:56:45 DEBUG common.c: stlink current mode: debug (jtag or swd)
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** stlink_force_debug_mode ***
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** stlink_status ***
|
||||
2020-09-22T23:56:45 DEBUG usb.c: core status: 00030003
|
||||
2020-09-22T23:56:45 DEBUG common.c: core status: halted
|
||||
2020-09-22T23:56:45 INFO common.c: read from address 0000000000 size 256
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** stlink_read_mem32 ***
|
||||
2020-09-22T23:56:45 DEBUG common.c: data_len = 256 0x100
|
||||
68 5c 00 20 cd 00 00 08 c1 2d 00 08 c7 29 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b7 2f 00 08 00 00 00 00 00 00 00 00 25 01 00 08 b9 2f 00 08 df 00 00 08 00 00 00 00 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 00 00 00 00 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 00 00 00 00 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 9d 37 00 08 ad 37 00 08 bd 37 00 08 03 48 85 46 00 f0 56 fd 00 48 00 47 39 58 00 08 68 5c 00 20 04 48 80 47 04 48 00 47 fe e7 fe e7 fe e7 fe e7 fe e7 fe e7 4d 30 00 08 b9 00 00 08 72 b6 70 47 62 b6 70 47 ef f3 10 80 72 b6 70 47 80 f3 10 88 70 47 1b 48
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** stlink_exit_debug_mode ***
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** stlink_write_debug32 0xa05f0000 to 0xe000edf0
|
||||
2020-09-22T23:56:45 DEBUG common.c: *** stlink_close ***
|
||||
|
||||
- CH340 串口驱动
|
||||
|
||||
在板子上有一个写有 CH340C 的电子元件, 这个就是电子元件的作用就是将 USB 协议转换为串口协议,
|
||||
要让这个这个电子元件正常工作, 需要安装 CH340 驱动.
|
||||
|
||||
Ubuntu 20.04 系统的 Linux 内核已经自带了这个驱动, 可以使用如下命令查看
|
||||
|
||||
➜ lsmod | grep ch34
|
||||
ch341 20480 0
|
||||
usbserial 53248 1 ch341
|
||||
|
||||
如果不成功, 对驱动打补丁参考如下链接:
|
||||
|
||||
https://learn.sparkfun.com/tutorials/how-to-install-ch340-drivers/all#linux
|
||||
|
||||
当串口驱动成功安装后, 数据是如何从电脑传输到板子上呢?
|
||||
|
||||
在 USB 接口里有 4 根线, 外侧的两根长金手指负责供电, 即电源线, 内侧的两根金手指比较短,
|
||||
用于数据传输, 即数据线.
|
||||
|
||||
当我们再电脑上通过串口向板子传输数据时, 电脑端采用 USB 数据传输协议通过数据线传到板子上,
|
||||
然后 CH340 驱动解析 USB 数据将其转换为串口数据传输给板子上的其他元器件.
|
||||
|
||||
串口除了传输数据的功能之外, 还有调试功能, 板子上程序的输出一般都是被重定向到串口中,
|
||||
然后打印出数据供调试用.
|
||||
|
||||
- 串口工具
|
||||
|
||||
通过串口工具, 我们可以观察到窗口上传输的数据, 这里使用的串口工具是 kermit,
|
||||
其首页为 http://www.kermitproject.org/ck90.html
|
||||
|
||||
编译安装 c-kermit 的命令如下
|
||||
|
||||
wget http://www.kermitproject.org/ftp/kermit/test/tar/x.zip
|
||||
unzip x.zip -d c-kermit && cd c-kermit
|
||||
make linux
|
||||
|
||||
会生成一个 wermit 二进制文件, 将其保存到某个路径比如 $HOME/.usr/bin,
|
||||
建议将其重命名为 kermit, 然后将该路径加入环境变量, 然后运行即可.
|
||||
|
||||
- 连接串口设备
|
||||
|
||||
首先查看串口设备, Linux 中使用 ttyS<x> 来表示串口设备名, 其中 <x> 是可变的,
|
||||
比如 ttyS0, ttyS1, 对应到 Windows 中就分别表示 COM1, COM2. 特别地,
|
||||
基于 USB 的串口设备名称一般类似于 ttyUSB0, ttyUSB1 等, 这些设备对应的文件路径位于 /dev 下面,
|
||||
比如 ttyUSB0 的位置就是 /dev/ttyUSB0.
|
||||
|
||||
使用如下命令查看连接的串口设备
|
||||
|
||||
➜ dmesg | grep tty
|
||||
[ 0.352821] printk: console [tty0] enabled
|
||||
[ 1.179333] tty tty50: hash matches
|
||||
[193518.041877] usb 3-2: ch341-uart converter now attached to ttyUSB0
|
||||
|
||||
查看串口参数
|
||||
|
||||
sudo stty -F /dev/ttyUSB0 -a
|
||||
|
||||
设置串口参数(波特率设置为 115200, 8 位数据模式, 其实这步是不必要的, 可以值接在 kermit 中设置)
|
||||
|
||||
sudo stty -F /dev/ttyUSB0 ispeed 115200 ospeed 115200 cs8
|
||||
|
||||
查看设置后的串口属性信息
|
||||
|
||||
➜ sudo stty -F /dev/ttyUSB0 -a
|
||||
speed 115200 baud; rows 0; columns 0; line = 0;
|
||||
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>;
|
||||
start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
|
||||
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
|
||||
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel
|
||||
-iutf8
|
||||
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
|
||||
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho
|
||||
-extproc
|
||||
|
||||
现在执行 wermit 进入串口工具, 然后执行如下命令
|
||||
|
||||
set line /dev/ttyUSB0
|
||||
set carrier-watch off
|
||||
connect
|
||||
|
||||
出现如下输出表示连接成功
|
||||
|
||||
Connecting to /dev/ttyUSB0, speed 115200
|
||||
Escape character: Ctrl-\ (ASCII 28, FS): enabled
|
||||
Type the escape character followed by C to get back,
|
||||
or followed by ? to see other options.
|
||||
----------------------------------------------------
|
||||
|
||||
如果想回到 kermit, 按下 Ctrl-\, 再按下 C 即可, 如果想再连接到串口, 输入 c 即可.
|
||||
|
||||
- 刷入 WiFi 固件
|
||||
|
||||
由于是通过串口刷 WiFi 固件, 因此需要断开其他的串口连接.
|
||||
|
||||
- 让串口链路连接到 WiFi 电子元件上, 其具体做法为
|
||||
|
||||
1. 定位到 `串口切换`
|
||||
|
||||
串口切换一共两排, 每排四个 Pin, 示意图如下
|
||||
|
||||
* * * *
|
||||
* * * *
|
||||
|
||||
将短路帽(黄色塑料套)按如下连接
|
||||
|
||||
* + + *
|
||||
* - - *
|
||||
|
||||
加号的连接到一起, 减号的连接到一起.
|
||||
|
||||
|
||||
2. 定位到 `ESP 固件下载配置`
|
||||
|
||||
这个配置一共有 3 个, 依次如下
|
||||
|
||||
3v3 IO0 GND
|
||||
|
||||
用短路帽把 IO0 和 GND 连接.
|
||||
|
||||
3. 定位到 `BOOT 配置`
|
||||
|
||||
这个配置一共有 3 个, 依次如下
|
||||
|
||||
0 BOOT 1
|
||||
|
||||
将短路帽把 0 和 BOOT 连接.
|
||||
|
||||
- 安装 esptool 工具
|
||||
|
||||
需要用到工具 esptool, 地址为 https://github.com/espressif/esptool, 安装命令如下
|
||||
|
||||
pip3 install esptool
|
||||
|
||||
安装完成后刷新系统环境变量, 会得到一个命令 esptool.py, 我们就是通过这个命令将 WiFi 固件刷入到板子中.
|
||||
以上准备完成后, 测试一下 esp 是否正常工作, 命令如下
|
||||
|
||||
sudo -E env "PATH=$PATH" esptool.py --port /dev/ttyUSB0 read_mac
|
||||
|
||||
输出类似如下
|
||||
|
||||
esptool.py v2.8
|
||||
Serial port /dev/ttyUSB0
|
||||
Connecting....
|
||||
Detecting chip type... ESP8266
|
||||
Chip is ESP8266EX
|
||||
Features: WiFi
|
||||
Crystal is 26MHz
|
||||
MAC: 40:f5:20:08:6f:b1
|
||||
Uploading stub...
|
||||
Running stub...
|
||||
Stub running...
|
||||
MAC: 40:f5:20:08:6f:b1
|
||||
Hard resetting via RTS pin...
|
||||
|
||||
|
||||
如果连接不上, 考虑如下几种情形
|
||||
|
||||
1. reset 板子
|
||||
|
||||
如果之前你执行过 esptool.py, 你必须手动按一下板子上的 reset 按键,
|
||||
如果你不按 reset 继续执行 esptool.py 命令, 那么这个命令会一直挂起, 输出类似于下面这种
|
||||
|
||||
esptool.py v2.8
|
||||
Serial port /dev/ttyUSB0
|
||||
Connecting........_____....
|
||||
|
||||
2. 串口被占用
|
||||
|
||||
如果提示下面的错误表示你的串口被占用了, 看看你的串口工具是不是连上了.
|
||||
|
||||
serial.serialutil.SerialException: read failed: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
|
||||
|
||||
3. STLINK 和串口同时连上了
|
||||
|
||||
把 STLINK 和串口线都拔下来, 只插串口线.
|
||||
|
||||
- 刷入固件
|
||||
|
||||
确定 esp 正常工作后, 下载固件
|
||||
|
||||
git clone https://github.com/tencentyun/qcloud-iot-esp-wifi.git
|
||||
|
||||
然后解压固件
|
||||
|
||||
cd qcloud-iot-esp-wifi
|
||||
unzip qcloud-iot-at-esp8266/QCloud_IoT_AT_ESP8266_FW/QCloud_IoT_AT_ESP8266_v2.1.1_20200903.zip
|
||||
|
||||
腾讯云 IoT 定制 AT 串口使用 UART0, Tx 为 GPIO1, Rx 为 GPIO3, UART_1_3 的固件
|
||||
采用的 Tx 和 Rx 和 AT 的一致, 因此我们使用 UART_1_3 固件, 其路径为
|
||||
|
||||
QCloud_IoT_AT_ESP8266_v2.1.1_20200903/QCloud_IoT_AT_ESP8266_v2.1.1_20200903_UART_1_3.bin
|
||||
|
||||
执行如下命令刷入固件
|
||||
|
||||
sudo -E env "PATH=$PATH" esptool.py --port /dev/ttyUSB0 --chip esp8266 --baud 1500000 --after hard_reset write_flash 0x0 QCloud_IoT_AT_ESP8266_v2.1.1_20200903/QCloud_IoT_AT_ESP8266_v2.1.1_20200903_UART_1_3.bin
|
||||
|
||||
成功执行后的输出示例如下
|
||||
|
||||
esptool.py v2.8
|
||||
Serial port /dev/ttyUSB0
|
||||
Connecting...
|
||||
Chip is ESP8266EX
|
||||
Features: WiFi
|
||||
Crystal is 26MHz
|
||||
MAC: 40:f5:20:08:6f:b1
|
||||
Uploading stub...
|
||||
Running stub...
|
||||
Stub running...
|
||||
Changing baud rate to 1500000
|
||||
Changed.
|
||||
Configuring flash size...
|
||||
Auto-detected Flash size: 4MB
|
||||
Flash params set to 0x0040
|
||||
Compressed 2039808 bytes to 485108...
|
||||
Wrote 2039808 bytes (485108 compressed) at 0x00000000 in 7.0 seconds (effective 2326.6 kbit/s)...
|
||||
Hash of data verified.
|
||||
|
||||
Leaving...
|
||||
Hard resetting via RTS pin...
|
||||
|
||||
- 恢复串口连接
|
||||
|
||||
1. `串口切换`
|
||||
|
||||
连接示意图
|
||||
|
||||
1 1 2 2
|
||||
3 3 4 4
|
||||
|
||||
数值相同的连接到一起
|
||||
|
||||
2. `ESP 固件下载配置`
|
||||
|
||||
连接 3v3 和 IO0
|
||||
|
||||
3. `BOOT 配置`
|
||||
|
||||
保持不变
|
||||
|
||||
- 腾讯云
|
||||
|
||||
到腾讯云物联网开发平台 https://cloud.tencent.com/product/iotexplorer 注册一个新产品.
|
||||
|
||||
新建产品后导入模板数据如下
|
||||
|
||||
{
|
||||
"version": "1.0",
|
||||
"profile": {
|
||||
"ProductId": "BDDSF87WEA",
|
||||
"CategoryId": "1"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "ch20_ppm_value",
|
||||
"name": "甲醛浓度值",
|
||||
"desc": "",
|
||||
"mode": "r",
|
||||
"define": {
|
||||
"type": "float",
|
||||
"min": "0",
|
||||
"max": "2",
|
||||
"start": "0",
|
||||
"step": "0.001",
|
||||
"unit": "ppm(mg/m3)"
|
||||
},
|
||||
"required": false
|
||||
}
|
||||
],
|
||||
"events": [],
|
||||
"actions": []
|
||||
}
|
||||
|
||||
然后新建设备, 新建之后能够得到三个信息: 设备名称, 设备密钥, 产品 ID,
|
||||
这三个信息需要写入到 TencentOS 固件中.
|
||||
|
||||
- 甲醛传感器底板连接
|
||||
|
||||
根据板子和底板的 5v 和 GND 接口对应关系, 将底板连接到板子上,
|
||||
然后根据传感器的 Rx 和 Tx 口将传感器和板子底板连接起来.
|
||||
|
||||
- 刷入 TencentOS 系统
|
||||
|
||||
|
||||
- 下载源码
|
||||
|
||||
下载 TencentOS 源码, 这里假定保存路径为 `<path/to/tos>`.
|
||||
|
||||
git clone https://github.com/Tencent/TencentOS-tiny.git <path/to/tos>
|
||||
|
||||
切出 tos_evb_g0 分支源码并保存到 `<path/to/tos_evb_g0>`.
|
||||
|
||||
git clone -b tos_evb_g0 <path/to/tos> <path/to/tos_evb_g0>
|
||||
|
||||
进入 `<path/to/tos_evb_g0>` 目录, 将 TOS_CONFIG/_user_config.h 复制一份保存为 TOS_CONFIG/user_config.h,
|
||||
然后修改 user_config.h 中的宏定义.
|
||||
|
||||
- 编译
|
||||
|
||||
使用如下命令安装工具链
|
||||
|
||||
sudo apt-get install -y gcc-arm-none-eabi
|
||||
|
||||
进入 tos_evb 目录下执行如下命令编译固件
|
||||
|
||||
export TOS_SRC_ROOT=<path/to/tos>
|
||||
mkdir build && cmake .. && make
|
||||
|
||||
执行成功后会生成文件 mqtt_iot_explorer_tc_ch20_oled.bin
|
||||
|
||||
- 连接 STLINK 并刷入固件
|
||||
|
||||
将 STLINK 连接到板子上, 然后执行如下命令刷入
|
||||
|
||||
make flash
|
||||
|
||||
- 测试
|
||||
|
||||
串口工具连接板子
|
||||
|
||||
set line /dev/ttyUSB0
|
||||
set speed 115200
|
||||
set carrier-watch off
|
||||
connect
|
||||
|
||||
按下板子上的 reset 按键, 程序就运行了, 串口会输出 WIFI CONNECTED 之类的,
|
||||
腾讯云上显示设备上线.
|
103
examples/tos_meets_rust/docs/setup.mac.md
Normal file
103
examples/tos_meets_rust/docs/setup.mac.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# 甲醛检测仪 - mac 环境下搭建
|
||||
|
||||
由于之前在 Linux 上对环境进行了配置, 板子基本上已经初始化好了,
|
||||
目前在 mac 上配置需要做的工作不是太多, 下面有些步骤可能不太详细,
|
||||
可以参考 [Linux](./setup.linux.ubuntu.md).
|
||||
|
||||
## 工具准备
|
||||
|
||||
- stlink 安装
|
||||
|
||||
- 依赖项
|
||||
|
||||
- [cmake](https://cmake.org/download/): 下载 tar.gz 的压缩包自行安装并添加到环境变量中
|
||||
- [llvm](https://releases.llvm.org/download.html): 参考 cmake 处理
|
||||
- libusb: brew install libusb
|
||||
|
||||
- 安装
|
||||
|
||||
git clone https://github.com/stlink-org/stlink
|
||||
cd stlink
|
||||
make release
|
||||
|
||||
安装到 $HOME/.usr/stlink 目录中
|
||||
|
||||
cd build/Release && make install DESTDIR=$HOME/.usr/stlink
|
||||
|
||||
使用 ioreg 查看 USB 设备:
|
||||
|
||||
➜ ioreg -p IOUSB
|
||||
+-o Root <class IORegistryEntry, id 0x100000100, retain 23>
|
||||
+-o ...
|
||||
| +-o USB2.1 Hub@14100000 <class AppleUSBDevice, id 0x100145cd9, registered, matched, active, busy 0 (0 ms), retain 15>
|
||||
| +-o ...
|
||||
| +-o STM32 STLink@14110000 <class AppleUSBDevice, id 0x100145d1a, registered, matched, active, busy 0 (1 ms), retain 12>
|
||||
| +-o ...
|
||||
+-o ...
|
||||
|
||||
可以看到我们的 STM32 设备已经连接上了, 然后使用 st-info --probe 看看是否能检测到
|
||||
stlink 编程器, 如果找到则有类似下面的输出
|
||||
|
||||
Found 1 stlink programmers
|
||||
...
|
||||
|
||||
- CH340 驱动
|
||||
|
||||
- macOS Mojava 10.4 或者之后的版本: 无需安装
|
||||
- macOS Mojava 10.4 之后的版本: 到[这里](https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver)下载安装
|
||||
|
||||
安装完成后通过 `ls -1 /dev/cu*` 能够看到一个 `/dev/cu.wchusbserial****` 之类的设备.
|
||||
|
||||
- 串口工具
|
||||
|
||||
wget http://www.kermitproject.org/ftp/kermit/test/tar/x.zip
|
||||
unzip x.zip -d c-kermit && cd c-kermit
|
||||
make KFLAGS='-Wno-error=implicit-function-declaration' macosx
|
||||
make DESTDIR=$HOME/.usr/kermit BINDIR=$DESTDIR MANDIR=$DESTDIR install
|
||||
|
||||
会安装到 $HOME/.usr/kermit 目录, 将该目录添加到环境变量 PATH 中.
|
||||
|
||||
- 连接串口设备
|
||||
|
||||
显示可用的串口
|
||||
|
||||
ls -1 /dev/tty.* /dev/cu.*
|
||||
|
||||
输出样例
|
||||
|
||||
/dev/cu.Bluetooth-Incoming-Port
|
||||
/dev/cu.usbserial-14120
|
||||
/dev/tty.Bluetooth-Incoming-Port
|
||||
/dev/tty.usbserial-14120
|
||||
|
||||
根据 https://pbxbook.com/other/mac-tty.html, 我们知道我们应该选择 cu 开头的设备,
|
||||
因此这里我们使用 /dev/cu.usbserial-14120.
|
||||
|
||||
打开 ~/.kermrc, 输入如下命令
|
||||
|
||||
set line /dev/cu.usbserial-14120
|
||||
set speed 115200
|
||||
set carrier-watch off
|
||||
connect
|
||||
|
||||
然后每次执行 kermit 命令就会自动连上串口, 能够看到调试信息输出, 要退出的话按下 Ctrl-\ 然后按下 C 即可.
|
||||
|
||||
## WiFi 固件安装
|
||||
|
||||
参考 [Linux](./setup.linux.ubuntu.md).
|
||||
|
||||
## 腾讯云帐号
|
||||
|
||||
参考 [Linux](./setup.linux.ubuntu.md).
|
||||
|
||||
## TencentOS 固件安装
|
||||
|
||||
编译所需要的工具链安装方法如下
|
||||
|
||||
brew install armmbed/formulae/arm-none-eabi-gcc
|
||||
|
||||
安装后的路径为
|
||||
|
||||
/usr/local/bin/arm-none-eabi-*
|
||||
|
||||
其他参考 [Linux](./setup.linux.ubuntu.md).
|
Reference in New Issue
Block a user