0
0
Fork 0

feat & ci: Update esp32c3 sdkconfig

This commit is contained in:
windowsair 2022-09-28 22:54:36 +08:00
parent f5b83e6e81
commit ab95979ad8
4 changed files with 252 additions and 98 deletions

View File

@ -14,7 +14,7 @@ on:
jobs:
build:
runs-on: ubuntu-18.04
continue-on-error: true
continue-on-error: false
strategy:
matrix:
target-hardware: [esp8266, esp32, esp32c3]
@ -66,18 +66,30 @@ jobs:
path: './'
- name: Merge bin files
id: merge
if: matrix.target-hardware != 'esp8266' || matrix.target-hardware == 'esp8266' && steps.script.outputs.status == 'success' && !cancelled()
- name: Merge bin files (esp8266)
if: matrix.target-hardware == 'esp8266'
run: |
git clone https://github.com/espressif/esptool.git
sudo python3 ./esptool/esptool.py --chip ${{ matrix.target-hardware }} merge_bin -o build/wireless_esp_dap_full.bin 0x0 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/wireless_esp_dap.bin
sudo mv build/wireless_esp_dap.bin build/wireless_esp_dap_app.bin
echo "::set-output name=status::success"
- name: Merge bin files (esp32)
if: matrix.target-hardware == 'esp32'
run: |
git clone https://github.com/espressif/esptool.git
sudo python3 ./esptool/esptool.py --chip ${{ matrix.target-hardware }} merge_bin -o build/wireless_esp_dap_full.bin 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/wireless_esp_dap.bin
sudo mv build/wireless_esp_dap.bin build/wireless_esp_dap_app.bin
- name: Merge bin files (esp32c3)
if: matrix.target-hardware == 'esp32c3'
run: |
git clone https://github.com/espressif/esptool.git
sudo python3 ./esptool/esptool.py --chip ${{ matrix.target-hardware }} merge_bin -o build/wireless_esp_dap_full.bin 0x0 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/wireless_esp_dap.bin
sudo mv build/wireless_esp_dap.bin build/wireless_esp_dap_app.bin
- name: Upload firmware
uses: actions/upload-artifact@v2
if: matrix.target-hardware != 'esp8266' || matrix.target-hardware == 'esp8266' && steps.merge.outputs.status == 'success' && !cancelled()
with:
name: firmware_${{ matrix.target-hardware }}.zip
path: |

View File

@ -62,7 +62,9 @@ You can also specify your IP in the above file (We recommend using the static ad
![WIFI](https://user-images.githubusercontent.com/17078589/118365659-517e7880-b5d0-11eb-9a5b-afe43348c2ba.png)
There is built-in ipv4 only mDNS server. You can access the device using `dap.local` .
There is built-in ipv4 only mDNS server. You can access the device using `dap.local`.
> The mDNS in ESP8266 only supports ipv4.
![mDNS](https://user-images.githubusercontent.com/17078589/149659052-7b29533f-9660-4811-8125-f8f50490d762.png)
@ -127,8 +129,8 @@ There is built-in ipv4 only mDNS server. You can access the device using `dap.lo
|--------------------|---------|
| TCK | GPIO14 |
| TMS | GPIO13 |
| TDI | GPIO19 |
| TDO | GPIO18 |
| TDI | GPIO18 |
| TDO | GPIO19 |
| nTRST \(optional\) | GPIO25 |
| nRESET | GPIO26 |
| TVCC | 3V3 |
@ -225,7 +227,7 @@ See: [Build with Github Action](https://github.com/windowsair/wireless-esp8266-d
1. Get ESP8266 RTOS Software Development Kit
The SDK is already included in the project, please use it for subsequent operations.
The SDK is already included in the project. Please don't use other versions of the SDK.
2. Build & Flash
@ -270,7 +272,7 @@ idf.py -p /dev/ttyS5 flash
</details>
> We also provided sample firmware quick evaluation. See [Releases](https://github.com/windowsair/wireless-esp8266-dap/releases)
> We also provided sample firmware for quick evaluation. See [Releases](https://github.com/windowsair/wireless-esp8266-dap/releases)
## Usage

View File

@ -11,51 +11,75 @@
## 简介
只需要**一枚ESP8266**即可实现的无线调试器通过USBIP协议栈和CMSIS-DAP协议栈实现。
只需要**一枚ESP芯片**即可开始无线调试通过USBIP协议栈和CMSIS-DAP协议栈实现。
> 👉在5M速度范围下擦除并下载100kb大小的固件(Hex固件) 实测图
> 👉在5米范围内擦除并烧写100kb大小的固件(Hex固件)
<p align="center"><img src="https://user-images.githubusercontent.com/17078589/120925694-4bca0d80-c70c-11eb-91b7-ffa54770faea.gif"/></p>
----
对于Keil用户我们现在支持[elaphureLink](https://github.com/windowsair/elaphureLink)。无需usbip即可开始您的无线调试之旅
## 特性
1. 支持的调试协议模式和调试接口:
- [x] SWD(SW-DP)
- [x] JTAG(JTAG-DP)
- [x] SWJ-DP
2. 支持的USB通信协议
1. 支持的ESP芯片
- [x] ESP8266/8285
- [x] ESP32
- [x] ESP32C3
2. 支持的调试接口:
- [x] SWD
- [x] JTAG
3. 支持的USB通信协议
- [x] USB-HID
- [x] WCID & WinUSB (默认)
3. 支持的调试跟踪器:
- [ ] UART TCP桥
4. 其它
- [x] 通过SPI接口加速的SWD协议
4. 支持的调试跟踪器:
- [x] TCP转发的串口
5. 其它
- [x] 通过SPI接口加速的SWD协议最高可达40MHz
- [x] 支持[elaphureLink](https://github.com/windowsair/elaphureLink)无需驱动的快速Keil调试
- [x] ...
## 连接你的开发板
### WIFI连接
&nbsp;&nbsp;&nbsp;&nbsp;固件默认的WIFI SSID是`DAP`,密码是`12345678`。你可以在[wifi_configuration.h](main/wifi_configuration.h)文件中修改`WIFI_SSID`和` WIFI_PASS`字段来修改ESP8266连接的目标WIFI。你还可以在上面的配置文件中修改IP地址但是我们更推荐你通过在路由器上绑定静态IP地址
固件默认的WIFI SSID是`DAP`或者`OTA`,密码是`12345678`。
你可以在[wifi_configuration.h](main/wifi_configuration.h)文件中添加多个无线接入点。
你还可以在上面的配置文件中修改IP地址但是我们更推荐你通过在路由器上绑定静态IP地址
![WIFI](https://user-images.githubusercontent.com/17078589/118365659-517e7880-b5d0-11eb-9a5b-afe43348c2ba.png)
ESP8266具有一个内置的mDNS服务仅ipv4. 你可以通过 `dap.local` 操作设备。
固件中已经内置了一个mDNS服务。你可以通过`dap.local`的地址访问到设备。
> ESP8266的mDNS只支持ipv4。
![mDNS](https://user-images.githubusercontent.com/17078589/149659052-7b29533f-9660-4811-8125-f8f50490d762.png)
### 调试接口连接
| SWD接口 | ESP8266引脚 |
<details>
<summary>ESP8266</summary>
| SWD | |
|----------------|--------|
| SWCLK | GPIO14 |
| SWDIO | GPIO13 |
| TVCC | 3V3 |
| GND | GND |
--------------
| JTAG接口 | ESP8266引脚 |
| :----------------: | :---------: |
| JTAG | |
|--------------------|---------|
| TCK | GPIO14 |
| TMS | GPIO13 |
| TDI | GPIO4 |
@ -67,17 +91,104 @@ ESP8266具有一个内置的mDNS服务仅ipv4. 你可以通过 `dap.local`
--------------
| 其它 | ESP8266引脚 |
|:------------------:|:-------------:|
| Other | |
|--------------------|---------------|
| LED\_WIFI\_STATUS | GPIO15 |
| Tx | GPIO2 |
| Rx | GPIO3 (U0RXD) |
> Rx 和 Tx 被用于UART TCP桥默然不开启此功能。
> Rx和Tx用于TCP转发的串口默认不开启该功能。
</details>
<details>
<summary>ESP32</summary>
| SWD | |
|----------------|--------|
| SWCLK | GPIO14 |
| SWDIO | GPIO13 |
| TVCC | 3V3 |
| GND | GND |
--------------
| JTAG | |
|--------------------|---------|
| TCK | GPIO14 |
| TMS | GPIO13 |
| TDI | GPIO18 |
| TDO | GPIO19 |
| nTRST \(optional\) | GPIO25 |
| nRESET | GPIO26 |
| TVCC | 3V3 |
| GND | GND |
--------------
| Other | |
|--------------------|---------------|
| LED\_WIFI\_STATUS | GPIO27 |
| Tx | GPIO23 |
| Rx | GPIO22 |
> Rx和Tx用于TCP转发的串口默认不开启该功能。
</details>
<details>
<summary>ESP32C3</summary>
| SWD | |
|----------------|--------|
| SWCLK | GPIO6 |
| SWDIO | GPIO7 |
| TVCC | 3V3 |
| GND | GND |
--------------
| JTAG | |
|--------------------|---------|
| TCK | GPIO6 |
| TMS | GPIO7 |
| TDI | GPIO9 |
| TDO | GPIO8 |
| nTRST \(optional\) | GPIO4 |
| nRESET | GPIO5 |
| TVCC | 3V3 |
| GND | GND |
--------------
| Other | |
|--------------------|---------------|
| LED\_WIFI\_STATUS | GPIO10 |
| Tx | GPIO19 |
| Rx | GPIO18 |
> Rx和Tx用于TCP转发的串口默认不开启该功能。
</details>
----
## 硬件参考电路
目前这里仅有ESP8266的参考电路。
我们为你提供了一个简单的硬件电路例子作为参考:
![sch](https://user-images.githubusercontent.com/17078589/120953707-2a0a6e00-c780-11eb-9ad8-7221cf847974.png)
@ -98,30 +209,64 @@ ESP8266具有一个内置的mDNS服务仅ipv4. 你可以通过 `dap.local`
### 在本地构建并烧写
下面展示的是在Ubuntu20.04中使用终端安装依赖软件并编译烧录固件的操作流程。
1. 下载本仓库到本地:
```bash
$ sudo apt update && sudo apt install -y cmake git
$ git clone https://github.com/windowsair/wireless-esp8266-dap.git && cd wireless-esp8266-dap*
```
2. 获取ESP8266 RTOS软件开发套件
```bash
$ git submodule init && git submodule update && cd ESP8266_RTOS_SDK
```
3. 安装ESP8266 RTOS软件开发套件
```bash
$ sudo apt install -y python3 python3-pip
$ ./install.sh && . ./export.sh && cd ..
```
4. 编译并烧录固件:
```bash
# 编译固件
$ python3 ./idf.py build
# 烧录固件,“/dev/ttyS5”需要改成你对应的串口
$ python3 ./idf.py -p /dev/ttyS5 flash
```
> 我们也提供了已经编译好的固件用于快速评估。在[Releases](https://github.com/windowsair/wireless-esp8266-dap/releases)中查看详细信息。
<details>
<summary>ESP8266</summary>
1. 获取ESP8266 SDK
项目中已经随附了一个SDK。请不要使用其他版本的SDK。
2. 编译和烧写
使用ESP-IDF编译系统进行构建。
更多的信息,请见:[Build System](https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html "Build System")
下面例子展示了在Windows上完成这些任务的一种可行方法
```bash
# 编译
python ./idf.py build
# 烧写
python ./idf.py -p /dev/ttyS5 flash
```
</details>
<details>
<summary>ESP32/ESP32C3</summary>
1. 获取esp-idf
目前请考虑使用esp-idf v4.4.2 https://github.com/espressif/esp-idf/releases/tag/v4.4.2
2. 编译和烧写
使用ESP-IDF编译系统进行构建。
更多的信息,请见:[Build System](https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html "Build System")
下面例子展示了在Windows上完成这些任务的一种可行方法
```bash
# 编译
idf.py build
# 烧写
idf.py -p /dev/ttyS5 flash
```
> 位于项目根目录的`idf.py`脚本仅适用于较老的ESP8266设备请不要在ESP32设备上使用。
</details>
> 我们还提供了预编译固件用于快速评估。详见 [Releases](https://github.com/windowsair/wireless-esp8266-dap/releases)
## 使用
@ -152,9 +297,33 @@ ESP8266具有一个内置的mDNS服务仅ipv4. 你可以通过 `dap.local`
------
## 经常会问的问题
### Keil提示“RDDI-DAP ERROR”或“SWD/JTAG Communication Failure”
1. 检查线路连接。别忘了连接3V3引脚。
2. 检查网络连接是否稳定。
## DAP很慢或者不稳定
注意本项目受限于周围的网络环境。如果你在电脑上使用热点进行连接你可以尝试使用wireshark等工具对网络连接进行分析。当调试闲置时线路上应保持静默而正常工作时一般不会发生太多的丢包。
一些局域网广播数据包可能会造成严重影响,这些包可能由这些应用发出:
- DropBox LAN Sync
- Logitech Arx Control
- ...
对于ESP8266, 这无异于UDP洪水攻击...😰
周围的射频环境同样会造成影响,此外距离、网卡性能等也可能是需要考虑的。
## 文档
### 速度性能
### 速度策略
单独使用ESP8266通用IO时的最大翻转速率只有大概2MHz。当你选择最大时钟时我们需要采取以下操作
@ -215,13 +384,13 @@ CONFIG_ESPTOOLPY_FLASHSIZE="1MB"
CONFIG_ESP8266_BOOT_COPY_APP=y
```
可以用esptool.py工具检查你使用的ESP8266的闪存大小:
可以用esptool.py工具检查你使用的ESP设备闪存大小:
```bash
esptool.py -p (PORT) flash_id
```
### Uart TCP桥
### TCP转发的串口
该功能在TCP和Uart之间提供了一个桥梁
```
@ -232,7 +401,7 @@ esptool.py -p (PORT) flash_id
![uart_tcp_bridge](https://user-images.githubusercontent.com/17078589/150290065-05173965-8849-4452-ab7e-ec7649f46620.jpg)
当TCP连接建立后网桥将尝试解决首次发送的文本。当文本是一个有效的波特率时bridge 将切换到它。例如发送ASCII文本`115200`会将波特率切换为115200。
当TCP连接建立后ESP芯片将尝试解决首次发送的文本。当文本是一个有效的波特率时转发器就会切换到该波特率。例如发送ASCII文本`115200`会将波特率切换为115200。
由于性能原因,该功能默认不启用。你可以修改 [wifi_configuration.h](main/wifi_configuration.h) 来打开它。
----
@ -245,31 +414,6 @@ esptool.py -p (PORT) flash_id
- [新的Issues](https://github.com/windowsair/wireless-esp8266-dap/issues)
- [新的pull request](https://github.com/windowsair/wireless-esp8266-dap/pulls)
### 版本修订信息
2020.12.1
TCP传输速度需要进一步提高。
2020.11.11
现在可以使用Winusb了但它非常慢。
2020.2.4
由于USB-HID的限制不知道是USBIP的问题还是Windows的问题现在每个URB数据包只能达到255字节约1MBps带宽还没有达到ESP8266传输带宽的上限。
我现在有一个想法,在两者之间构建一个中间人来转发流量,从而增加每次传输的带宽。
2020.1.31
目前对WCID、WinUSB等的适配已经全部完成。然而当在端点上传输数据时我们收到了来自USBIP的错误信息。这很可能是USBIP项目本身的问题。
由于USBIP协议文件的完整性我们还没有理解它在批量传输过程中的作用这也可能导致后续过程中的错误。
我们将继续努力使其在USB HID上发挥作用。一旦USBIP的问题得到解决我们将立即将其转移到WinUSB上工作
------
# 致谢

View File

@ -380,7 +380,7 @@ CONFIG_ESP32C3_UNIVERSAL_MAC_ADDRESSES=4
# Sleep Config
#
CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y
CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y
# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set
# CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND is not set
# end of Sleep Config
@ -452,8 +452,7 @@ CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y
# Memory protection
#
CONFIG_ESP_SYSTEM_MEMPROT_DEPCHECK=y
CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=y
CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK=y
# CONFIG_ESP_SYSTEM_MEMPROT_FEATURE is not set
CONFIG_ESP_SYSTEM_MEMPROT_CPU_PREFETCH_PAD_SIZE=16
CONFIG_ESP_SYSTEM_MEMPROT_MEM_ALIGN_SIZE=512
# end of Memory protection
@ -497,17 +496,17 @@ CONFIG_ESP_TIMER_IMPL_SYSTIMER=y
# Wi-Fi
#
CONFIG_ESP32_WIFI_ENABLED=y
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=16
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=64
# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set
CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1
CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32
CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=64
# CONFIG_ESP32_WIFI_CSI_ENABLED is not set
CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
CONFIG_ESP32_WIFI_TX_BA_WIN=6
CONFIG_ESP32_WIFI_TX_BA_WIN=32
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
CONFIG_ESP32_WIFI_RX_BA_WIN=6
CONFIG_ESP32_WIFI_RX_BA_WIN=32
CONFIG_ESP32_WIFI_NVS_ENABLED=y
CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752
CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32
@ -633,8 +632,7 @@ CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0
CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set
CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y
# CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set
# CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT is not set
# end of FreeRTOS
#
@ -693,7 +691,7 @@ CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y
#
# LWIP
#
CONFIG_LWIP_LOCAL_HOSTNAME="espressif"
CONFIG_LWIP_LOCAL_HOSTNAME="esp32c3-dap"
# CONFIG_LWIP_NETIF_API is not set
# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set
CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y
@ -716,7 +714,7 @@ CONFIG_LWIP_IP6_FRAG=y
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
CONFIG_LWIP_GARP_TMR_INTERVAL=60
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=50
CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y
# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set
CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y
@ -737,8 +735,7 @@ CONFIG_LWIP_IPV6=y
CONFIG_LWIP_IPV6_NUM_ADDRESSES=3
# CONFIG_LWIP_IPV6_FORWARD is not set
# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set
CONFIG_LWIP_NETIF_LOOPBACK=y
CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8
# CONFIG_LWIP_NETIF_LOOPBACK is not set
#
# TCP
@ -981,9 +978,8 @@ CONFIG_MDNS_MULTIPLE_INSTANCE=y
#
# ESP-MQTT Configurations
#
CONFIG_MQTT_PROTOCOL_311=y
# CONFIG_MQTT_PROTOCOL_311 is not set
# CONFIG_MQTT_TRANSPORT_SSL is not set
# CONFIG_MQTT_TRANSPORT_WEBSOCKET is not set
# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set
# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set
# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set