更新说明

This commit is contained in:
zqm
2026-04-01 09:22:50 +08:00
parent 6c143a1386
commit e4dd0cc8b7

View File

@@ -1,26 +1,84 @@
# USB 虚拟键鼠项目说明
## 项目概述
ESP32-S3 USB 复合设备项目,采用 C + Rust 混合编程:
- **USB 部分**C + TinyUSB稳定可靠
- **应用逻辑**Rust通过 FFI 与 C 交互)
## 编译成功
项目已成功编译,生成的文件位于:
- `build/my_usb_project.bin`
- `build/bootloader/bootloader.bin`
- `build/partition_table/partition-table.bin`
- `build/my_usb_project.bin` - 主程序固件
- `build/bootloader/bootloader.bin` - 引导程序
- `build/partition_table/partition-table.bin` - 分区表
### 编译步骤
1. 编译 Rust 库:
```batch
build_rust.bat
```
2. 编译 ESP-IDF 项目:
```batch
idf.cmd build
```
## 烧录到 ESP32-S3
使用以下命令烧录:
```bash
idf.py flash
```batch
idf.cmd flash
```
或者指定端口:
```bash
idf.py -p COM3 flash
```batch
idf.cmd -p COM3 flash
```
## 调试与日志
### 串口监视器
烧录后启动串口监视器查看日志:
```batch
idf.cmd monitor
```
或者指定端口:
```batch
idf.cmd -p COM3 monitor
```
### 烧录并监视
一步完成烧录和监视:
```batch
idf.cmd flash monitor
```
### 退出监视器
`Ctrl+]` 退出串口监视器。
### 日志级别
在代码中使用 ESP_LOG 系列函数输出日志:
```c
ESP_LOGI(TAG, "This is an info message");
ESP_LOGW(TAG, "This is a warning");
ESP_LOGE(TAG, "This is an error");
```
默认日志级别可在 `sdkconfig` 中配置:`CONFIG_LOG_DEFAULT_LEVEL`
## 功能说明
当前实现的 USB 复合设备包含:
@@ -28,6 +86,24 @@ idf.py -p COM3 flash
- ✅ USB 鼠标 (HID)
- ✅ USB 虚拟 U盘 (MSC)
## 技术细节
### 链接器脚本修复
由于 Rust 库包含的 rodata 数据与 ESP-IDF 的 app desc 段冲突,需要修改链接器脚本 `build/esp-idf/esp_system/ld/sections.ld`,在 `.flash.appdesc` 段末尾添加 64KB 对齐:
```ld
.flash.appdesc : ALIGN(0x10)
{
_rodata_reserved_start = ABSOLUTE(.);
_rodata_start = ABSOLUTE(.);
*(.rodata_desc .rodata_desc.*)
*(.rodata_custom_desc .rodata_custom_desc.*)
/* Force to next 64KB boundary */
. = ALIGN(0x10000);
} >default_rodata_seg
```
## 下一步开发
要实现具体的键盘/鼠标功能,需要:
@@ -41,4 +117,4 @@ idf.py -p COM3 flash
- 确保 ESP32-S3 开发板支持 USB OTG
- 连接 USB 线到 ESP32-S3 的 USB 微口
- 某些开发板可能需要配置 USB D+ 上拉电阻
- 某些开发板可能需要配置 USB D+ 上拉电阻