# 项目介绍
(一)本项目是基于全志T113-S3制作的无线串口调试器,上位机由Qt制作的串口助手客户端、下位机数据采集转发装置组成,可以对下位机采集到的数据显示以及对于数据绘制波形。
(二)网络部分由下位机ESP8266提供,通过UDP转发。
(三)数据采集部分由STM32完成串口数据采集,完成采集后,根据使能情况,将进行组包转发。
不足:界面未进行美化。
# 上位机
![P40404-195727.jpg](//image.lceda.cn/pullimage/I8s5GHF4eFp0mhCZS9NY6K9RcLKr7iQyIQhBntJe.jpeg)
## 电源部分
对PMIC不熟悉,所以上位机使用IP5306进行锂电池充放电管理,由单节4.2V锂电池进行供电。
## 串口输出
使用CH343P对串口3输出TTL信号的调试信息转换成USB差分信号。也可以不焊CH343P,用TTL转USB工具直接于电脑连接。
## 屏幕
屏幕使用十寸RGB565,同样支持RGB666,触摸IC使用GT911。
## WIFI模组
WIFI模组用的是RTL8723DS,这是一款支持WiFi蓝牙双模的芯片,可以后续为上位机提供蓝牙接收能力。
# 下位机
![P20240409-211615.jpg](//image.lceda.cn/pullimage/xgDpW7SWEjDYe5sal2Js2W5EzyaPuugaMTnMkOeB.jpeg)
## MCU
下位机则是STM32+ESP8266的组合,STM32F103RET6拥有5个串口,串口1-4 对外接收串口数据,串口5则于ESP8266做转发数据交互。
## 屏幕
使用一款ST7735 的1.8寸(128*160)SPI屏幕。
# 源码
上位机由Awboot+Linux+Buildroot组成。
[交叉编译器下载地址](https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz)
[Awboot源码地址](https://gitee.com/huerli/awboot.git)
[Kernel源码地址](https://gitee.com/huerli/linux-kernel-t113.git)
[Buildroot源码地址](https://gitee.com/huerli/t113-buildroot.git)
[stm32源码地址](https://gitee.com/huerli/harvester.git)
[ESP8266源码地址](https://gitee.com/huerli/esp-harvester.git)
[串口助手源码地址](https://gitee.com/huerli/serial-udp-com.git)
# 开发环境搭建
上位机源码目录结构
```
|———>arm-none-linux-gnueabihf #交叉编译器
|———>awboot #boot
|———>linux_kernel_t113 #内核
|———>buildroot #根文件系统
|———>drivers #网上下载的驱动源码存放位置
```
## 安装交叉编译器
```
- wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz
- tar -xf arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz
改个名字
- mv arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-linux-gnueabihf arm-none-linux-gnueabihf
- cd arm-none-linux-gnueabihf/bin
- pwd
复制输出的内容
- vim ~/.bashrc
在最后添加
- export PATH=$PATH:/home/huerli/t113/arm-none-linux-gnueabihf/bin
按下键盘左上角【esc】 按住shift+ : 输入wq 退出vim编辑器
- source ~/.bashrc
- arm-none-linux-gnueabihf-gcc -v
```
输出内容如下所示
![image.png](//image.lceda.cn/pullimage/SyFxSBvBRc69ftTnaL4ZmGwuHjfZdhiz9KLbNK4g.png)
## 安装编译AWboot
下拉awboot
```
git clone https://gitee.com/huerli/awboot.git
```
编译工具
```
- cd awboot/tools
- gcc mksunxi.c -o mksunxi
- cd ..
```
修改 Makefile
```
CROSS_COMPILE?= arm-none-linux-gnueabihf
```
编译
```
make -j4
```
编译完成后出现awboot-boot.bin就说明编译成功了。
![image.png](//image.lceda.cn/pullimage/0oROIc43bBzRnZHzg1JdvARtR7KnjiFilbpoGMLP.png)
### 烧录awboot
在插入ubuntu时,会挂载在/dev/下,可以通过ls命令查看插入前后的sd文件差异来哪个时插入的sd卡。
![image.png](//image.lceda.cn/pullimage/cd1GEqsGe5ckRZeFyebLkqsZKWPtJ448XSb6fSoo.png)
如果是在windows下进行格式化的sd卡,会有多个文件挂载在/dev/下,通过fdisk命令进行删除分区。
![image.png](//image.lceda.cn/pullimage/DAjLVaJKjyce837Ptvuww5nNS97NSSyQO9fmjWoS.png)
例如我这里是sdc 和sdc1
d是删除分区
w是保存并退出
```
sudo fdisk /dev/sdc
d
d
d
w
```
使用dd命令烧录
```
huerli@huerli:~/t113/awboot$ sudo dd if=awboot-boot-sd.bin of=/dev/sdc bs=1024 seek=8
记录了34+0 的读入
记录了34+0 的写出
34816字节(35 kB,34 KiB)已复制,0.0151855 s,2.3 MB/s
```
使用命令查看是否结束sd卡使用
```
sync
```
没有任何输出即可拔出,插入开发板。
### 上电
默认使用串口3
```
[I] AWBoot r6166 starting...
[I] SMHC: sdhci0 controller v50310 initialized
[I] SHMC: SD card detected
[E] FATFS: mount error: 13
[W] SMHC: loading failed, trying SPI
```
因为没有kernel和dtb文件,就只能进行到这里。
ps:如果没有对应的输出
1、检查TTL-USB是否完好
2、检查杜邦线
3、检查io是否插对
4、重启电脑,重新烧录
### 可选项修改输出串口
修改board.h中的 USRAT_DBG 宏
![image.png](//image.lceda.cn/pullimage/NRMngLeYptymuzYUxXyFTOwSqsCBJ7CnLrIhFJIk.png)
相对应的需要有串口声明。
![image.png](//image.lceda.cn/pullimage/nMRIssnukqjqNZvAcmkdH2NTCvlMYBC5Em53l8LQ.png)
## 编译烧录kernel
下拉我已修改的源码配置。这是6.1.7的内核版本,与其他的略有出入。
```
git clone https://gitee.com/huerli/linux-kernel-t113.git
```
在Makefile中已经添加了默认的编译器,需要自行修改为自己的交叉编译器。
```
ARCH =arm
CORSS_COMPILE = arm-none-linux-gnueabihf-
```
在使用前请先清除编译
```shell
make clean
```
配置
```shell
make allwinner_t113_defconfig
```
移植了`RTL8723DS`、`RGB565LCD`、`goodix触摸`
编译完成后 会在arch/arm/boot/下生成zImage 和arch/arm/boot/dts/ 生成sun8i-t113-mangopi-mq-dual.dtb
### 烧录
接下来需要对sd卡进行分区,新建的分区1用于存放镜像文件和设备树文件,剩余的大小用于存放rootfs
制作分区1
```
fdisk /dev/sdc
d
d
n
p
选分区时默认回车
第一个扇区:65536
Last sector, +/-sectors or +/-size{K,M,G,T,P} (65536-30916607, 默认 30916607): +51200 增加25M空间
w
```
格式化
```
sudo mkfs.fat /dev/sdc1
```
挂载
```
sudo mount /dev/sdc1 /mnt/boot/
```
复制
```
sudo cp sun8i-t113-mangopi-mq-dual.dtb zImage /mnt/boot/
```
卸载
```
sudo umount /mnt/boot
```
![image.png](//image.lceda.cn/pullimage/a6IwASMBgn5FeMi5Nfii8rYn0IXZCNqFkRbkBdpK.png)
## 编译烧录buildroot
下拉buildroot
```
git clone https://gitee.com/huerli/t113-buildroot.git
```
编译,由于会下载很多包,所以进度会缓慢。网络问题导致下载失败,可以多次重试。
```
make clean && make allwinner_t113_defconfig && make -j8
```
这里默认你已经会分区了,这里就不演示了。直接格式化
```
sudo mkfs.ext4 /dev/sdc2
```
![image.png](//image.lceda.cn/pullimage/CwDyMnh3CpCCyizt87n13cqWmhjfZf5GHgrlsG0e.png)
编译完成后解压到SD卡上。把 board/allwinner/rootfs/etc/wpa_supplicant.conf 中添加自己的WIFI
```
sudo mount /dev/sdc2 /mnt/rootfs && sudo tar -xf output/images/rootfs.tar -C /mnt/rootfs/ cp ./board/allwinner/rootfs/etc/init.d/S45wifi /mnt/rootfs/etc/init.d/ && sudo cp ./board/allwinner/rootfs/etc/profile.d/PS1.sh /mnt/rootfs/etc/profile.d && sudo cp ./board/allwinner/rootfs/etc/wpa_supplicant.conf /mnt/rootfs/etc &&cd ../linux-kernel-t113 && sudo make INSTALL_MOD_PATH=/mnt/rootfs modules_install && sync && sudo umount /mnt/rootfs
```
上电之后会自动连接wifi
![image.png](//image.lceda.cn/pullimage/1Efk2Y9eQ9uuO3PspSdA9YYDjvfMEblTyclV5T2j.png)
## 配置Qt交叉环境
使用Buildroot编译Qt源码想要在QtCreater中使用,就需要添加qmake、gcc、g++到工具中。
![image.png](//image.lceda.cn/pullimage/uxJyKtoBYsbxpFZI64H3H6B9XWMY5gZj8lZRtTJ9.png)
![image.png](//image.lceda.cn/pullimage/31GPZs62le7u4wsOB0whEJeasrUpapyXOZTb1izR.png)
![image.png](//image.lceda.cn/pullimage/hrX4FdAurYWyOVKDS0Mk94FehisVXZRoXXaEJ6ix.png)
![image.png](//image.lceda.cn/pullimage/xsQUcK0DNkHUmgXSEcMXmMuVEhZOusmM8k4zgrZP.png)
# 使用
完成上电后,可以通过终端手动敲命令让串口工具启动,也可以通过开机脚本来执行自启动。
5
10
收藏到专辑