3 Commits

7 changed files with 49 additions and 18 deletions
+16 -7
View File
@@ -19,6 +19,13 @@
- 配置口:`USART1` - 配置口:`USART1`
- 数据口:`USART2``USART3` - 数据口:`USART2``USART3`
### 2.1 固件版本线
- FreeRTOS + lwIP 版本线从 `V2.0.0` 开始。
- 裸机版本线从 `V1.0.0` 开始。
- 当前 FreeRTOS 固件基线 release`TCP2UART RTOS V2.0.0`
- 固件下载:`https://git.furtherverse.com/gaoro-xiao/TCP2UART/releases/tag/V2.0.0`
职责划分: 职责划分:
- `USART1`AT 配置口 - `USART1`AT 配置口
@@ -92,7 +99,7 @@ SYNC | LEN_H | LEN_L | SRCID | DSTMASK | PAYLOAD | TAIL
```text ```text
AT\r\n AT\r\n
AT+MUX?\r\n AT+MUX?\r\n
AT+NET=192.168.1.100,255.255.255.0,192.168.1.1,02:00:00:00:00:01\r\n AT+NET=192.168.31.100,255.255.255.0,192.168.31.1,00:00:00:00:00:00\r\n
``` ```
### 6.2 持久化规则 ### 6.2 持久化规则
@@ -121,9 +128,11 @@ MUX = 0
### 7.2 NET 默认值 ### 7.2 NET 默认值
```text ```text
NET = 192.168.1.100,255.255.255.0,192.168.1.1,02:00:00:00:00:01 NET = 192.168.31.100,255.255.255.0,192.168.31.1,00:00:00:00:00:00
``` ```
默认 MAC 为全 0,表示 Flash 中不固化板卡 MAC;运行时使用 `CH390D` 内部 MAC。`AT+?``AT+NET?` 回显的是当前生效 MAC。
### 7.3 LINK 默认值 ### 7.3 LINK 默认值
```text ```text
@@ -171,7 +180,7 @@ AT+QUERY\r\n
推荐返回格式: 推荐返回格式:
```text ```text
+NET:IP=192.168.1.100,MASK=255.255.255.0,GW=192.168.1.1,MAC=02:00:00:00:00:01 +NET:IP=192.168.31.100,MASK=255.255.255.0,GW=192.168.31.1,MAC=<当前生效MAC>
+LINK:S1,EN=1,LPORT=8080,RIP=0.0.0.0,RPORT=0,UART=U0 +LINK:S1,EN=1,LPORT=8080,RIP=0.0.0.0,RPORT=0,UART=U0
+LINK:S2,EN=0,LPORT=8081,RIP=0.0.0.0,RPORT=0,UART=U1 +LINK:S2,EN=0,LPORT=8081,RIP=0.0.0.0,RPORT=0,UART=U1
+LINK:C1,EN=1,LPORT=9001,RIP=192.168.1.200,RPORT=9000,UART=U1 +LINK:C1,EN=1,LPORT=9001,RIP=192.168.1.200,RPORT=9000,UART=U1
@@ -213,7 +222,7 @@ OK
#### 设置 NET #### 设置 NET
```text ```text
AT+NET=192.168.1.100,255.255.255.0,192.168.1.1,02:00:00:00:00:01\r\n AT+NET=192.168.31.100,255.255.255.0,192.168.31.1,00:00:00:00:00:00\r\n
``` ```
字段顺序: 字段顺序:
@@ -231,13 +240,13 @@ AT+NET?\r\n
返回示例: 返回示例:
```text ```text
+NET:IP=192.168.1.100,MASK=255.255.255.0,GW=192.168.1.1,MAC=02:00:00:00:00:01 +NET:IP=192.168.31.100,MASK=255.255.255.0,GW=192.168.31.1,MAC=<当前生效MAC>
OK OK
``` ```
**MAC 设置说明:** **MAC 设置说明:**
当MAC设置为全0时,固件将使用硬件MAC地址此时通过AT+?查询到的MAC地址为当前生效的硬件MAC地址。 MAC 设置为全 0 时,固件将使用 `CH390D` 内部 MAC 地址此时 Flash 内仍保存全 0,不会把内部 MAC 写回 Flash;`AT+?``AT+NET?` 查询到的 MAC 地址为当前运行时生效的硬件 MAC 地址。
### 8.5 LINK 类命令 ### 8.5 LINK 类命令
@@ -357,7 +366,7 @@ OK: Defaults restored
## 11. 推荐配置流程 ## 11. 推荐配置流程
```text ```text
AT+NET=192.168.1.123,255.255.255.0,192.168.1.1,02:00:00:00:00:01\r\n AT+NET=192.168.31.123,255.255.255.0,192.168.31.1,00:00:00:00:00:00\r\n
AT+LINK=S1,1,10001,0.0.0.0,0,U1\r\n AT+LINK=S1,1,10001,0.0.0.0,0,U1\r\n
AT+LINK=S2,1,10003,0.0.0.0,0,U1\r\n AT+LINK=S2,1,10003,0.0.0.0,0,U1\r\n
AT+LINK=C1,1,20001,192.168.1.201,10002,U0\r\n AT+LINK=C1,1,20001,192.168.1.201,10002,U0\r\n
+2 -1
View File
@@ -15,6 +15,7 @@
#include "route_msg.h" #include "route_msg.h"
#define TCP_CLIENT_CONNECT_TIMEOUT_MS 500 #define TCP_CLIENT_CONNECT_TIMEOUT_MS 500
#define TCP_CLIENT_RECONNECT_INTERVAL_MS 3000u
#define TCP_CLIENT_STOP_POLL_MS 50u #define TCP_CLIENT_STOP_POLL_MS 50u
static BaseType_t tcp_client_stop_requested(void) static BaseType_t tcp_client_stop_requested(void)
@@ -162,7 +163,7 @@ static void tcp_client_task(uint8_t link_index)
continue; continue;
} }
delay_ms = (cfg->reconnect_interval_ms == 0u) ? 3000u : cfg->reconnect_interval_ms; delay_ms = TCP_CLIENT_RECONNECT_INTERVAL_MS;
if (first_connect_deferred != 0u) { if (first_connect_deferred != 0u) {
first_connect_deferred = 0u; first_connect_deferred = 0u;
+8 -2
View File
@@ -76,9 +76,15 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* EXTI interrupt init*/ /* EXTI interrupt init
* Keep CH390 INT masked during early boot. PB0 may already be asserted at
* power-on, while the FreeRTOS semaphore is not created until
* MX_FREERTOS_Init(). The network driver enables EXTI0 after CH390 and the
* RTOS objects are ready.
*/
HAL_NVIC_DisableIRQ(EXTI0_IRQn);
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);
HAL_NVIC_SetPriority(EXTI0_IRQn, 6, 0); HAL_NVIC_SetPriority(EXTI0_IRQn, 6, 0);
HAL_NVIC_EnableIRQ(EXTI0_IRQn);
} }
+6 -2
View File
@@ -2,6 +2,7 @@
#include "stm32f1xx_it.h" #include "stm32f1xx_it.h"
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "semphr.h"
#include "task.h" #include "task.h"
#include "app_runtime.h" #include "app_runtime.h"
@@ -101,8 +102,11 @@ void EXTI0_IRQHandler(void)
if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_0) != RESET) { if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_0) != RESET) {
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0); __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);
xSemaphoreGiveFromISR(xNetSemaphore, &xHigherPriorityTaskWoken); if ((xNetSemaphore != NULL) &&
portYIELD_FROM_ISR(xHigherPriorityTaskWoken); (xTaskGetSchedulerState() == taskSCHEDULER_RUNNING)) {
xSemaphoreGiveFromISR(xNetSemaphore, &xHigherPriorityTaskWoken);
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}
} }
} }
+2
View File
@@ -188,6 +188,8 @@ void ch390_interrupt_init(void)
/* EXTI0 is configured in CubeMX for PB0 */ /* EXTI0 is configured in CubeMX for PB0 */
/* NVIC priority should be >= configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY */ /* NVIC priority should be >= configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY */
/* for FreeRTOS compatibility */ /* for FreeRTOS compatibility */
HAL_NVIC_DisableIRQ(EXTI0_IRQn);
__HAL_GPIO_EXTI_CLEAR_IT(CH390_INT_PIN);
HAL_NVIC_SetPriority(EXTI0_IRQn, 6, 0); HAL_NVIC_SetPriority(EXTI0_IRQn, 6, 0);
HAL_NVIC_EnableIRQ(EXTI0_IRQn); HAL_NVIC_EnableIRQ(EXTI0_IRQn);
} }
+10 -6
View File
@@ -26,15 +26,19 @@
1. 当前 Keil 工程目标仍是 `STM32F103RC` 1. 当前 Keil 工程目标仍是 `STM32F103RC`
2. 当前代码可以真实构建通过 2. 当前代码可以真实构建通过
3. 当前构建真值应查看: 3. 当前 FreeRTOS + lwIP 固件版本线从 `V2.0.0` 开始,裸机固件版本线从 `V1.0.0` 开始
4. 当前 RTOS 基线 release`https://git.furtherverse.com/gaoro-xiao/TCP2UART/releases/tag/V2.0.0`
5. Release 附件:
- `TCP2UART-RTOS-V2.0.0.hex`
- `TCP2UART-RTOS-V2.0.0.elf`
6. 当前构建真值应查看:
- `MDK-ARM/build_capture.txt` - `MDK-ARM/build_capture.txt`
- `MDK-ARM/TCP2UART/TCP2UART.build_log.htm` - `MDK-ARM/TCP2UART/TCP2UART.build_log.htm`
- `MDK-ARM/TCP2UART/TCP2UART.map` - `MDK-ARM/TCP2UART/TCP2UART.map`
4. 最近一次 Keil 构建示例 7. `V2.0.0` release 构建验证
- `Code=84560` - `"TCP2UART\TCP2UART.axf" - 0 Error(s), 0 Warning(s).`
- `RW-data=432` - `TCP2UART-RTOS-V2.0.0.hex` 用于烧录
- `ZI-data=47056` - `TCP2UART-RTOS-V2.0.0.elf` 用于符号/调试
- `0 Error(s), 0 Warning(s)`
### 3.2 当前调试结论摘要 ### 3.2 当前调试结论摘要
+5
View File
@@ -94,6 +94,11 @@
2. 启动文件:`startup_stm32f103xe.s` 2. 启动文件:`startup_stm32f103xe.s`
3. 目标器件:`STM32F103RC` 3. 目标器件:`STM32F103RC`
4. 预处理器宏:`USE_HAL_DRIVER, STM32F103xE` 4. 预处理器宏:`USE_HAL_DRIVER, STM32F103xE`
5. FreeRTOS + lwIP 固件版本线从 `V2.0.0` 开始;裸机固件版本线从 `V1.0.0` 开始。
6. 当前 RTOS release`https://git.furtherverse.com/gaoro-xiao/TCP2UART/releases/tag/V2.0.0`
7. Release 附件命名:
- `TCP2UART-RTOS-V2.0.0.hex`
- `TCP2UART-RTOS-V2.0.0.elf`
### 4.3 常用调试工具 ### 4.3 常用调试工具