目錄

系統(tǒng)概述
RT-Thread使用情況
硬件框架
軟件架構(gòu)
軟件模塊詳解
功能展示
鏈接地址
1 系統(tǒng)概述
本系統(tǒng)是一個基于GD32F527I_EVAL和RT-Thread實時操作系統(tǒng)開發(fā)的工業(yè)級網(wǎng)絡-CAN總線透傳網(wǎng)關(guān)。該系統(tǒng)實現(xiàn)了TCP/UDP網(wǎng)絡協(xié)議與CAN總線之間的雙向透明數(shù)據(jù)傳輸,支持Web配置管理、固件在線升級(暫未驗證)、SD卡配置存儲等功能,適用于工業(yè)自動化、車聯(lián)網(wǎng)、智能設備等需要網(wǎng)絡與CAN總線互聯(lián)的應用場景。
1.1 核心功能特性
雙向透明傳輸: 網(wǎng)絡數(shù)據(jù)與CAN總線數(shù)據(jù)的無縫雙向轉(zhuǎn)發(fā)
多協(xié)議支持: TCP Server/Client、UDP通信模式
靈活CAN配置: 支持標準幀/擴展幀、可變波特率(5Kbps~1Mbps)
智能ID管理: 固定ID、自增ID、數(shù)據(jù)提取ID三種模式
Web配置界面: 現(xiàn)代化響應式Web UI,支持實時配置修改
配置持久化: 基于SD卡的配置文件存儲系統(tǒng)
固件OTA升級: 支持通過Web界面上傳固件并安全升級
系統(tǒng)監(jiān)控: 實時顯示網(wǎng)絡狀態(tài)、CAN狀態(tài)、傳輸統(tǒng)計
2 RT-Thread使用情況
2.1 操作系統(tǒng)版本與組件
系統(tǒng)基于RT-Thread master版本構(gòu)建,充分利用了其豐富的組件生態(tài):
已啟用的核心組件:
內(nèi)核: 多線程調(diào)度、信號量、互斥鎖、消息隊列
文件系統(tǒng): DFS + ELM-FAT,用于SD卡配置存儲
網(wǎng)絡協(xié)議棧: LwIP 2.03,支持TCP/UDP、DHCP、DNS。RT-Thread最新版可能會與LWIP2.03中cc.h文件的變量類型定義沖突,修cc.h文件的內(nèi)容。
設備驅(qū)動框架: CAN驅(qū)動、SDIO驅(qū)動、EMAC以太網(wǎng)驅(qū)動
Shell組件: MSH (Module Shell),用于命令行調(diào)試
FAL: Flash抽象層(可選),用于固件分區(qū)管理
2.2 線程資源使用
系統(tǒng)采用多線程并發(fā)架構(gòu),主要線程包括:

2.3 IPC應用
消息隊列: 用于網(wǎng)絡與CAN數(shù)據(jù)的異步傳遞(net_to_can_queue, can_to_net_queue)
信號量: 用于消息隊列的同步通知(net_to_can_sem, can_to_net_sem)
互斥鎖: 保護配置文件訪問(config_lock)、固件升級狀態(tài)(upgrade_mutex)
2.4 內(nèi)存管理
采用動態(tài)內(nèi)存分配策略:
消息緩沖區(qū): 動態(tài)分配最大2048字節(jié)數(shù)據(jù)緩沖
Web緩沖區(qū): 請求4KB,響應34KB(擴展緩沖區(qū))
網(wǎng)絡緩沖區(qū): 各服務獨立分配1KB緩沖
3 硬件框架
微控制器: GigaDevice GD32F527IST7
內(nèi)核: ARM Cortex-M33 @ 200MHz
Flash: 7680KB
SRAM: 512KB
外設: 本次使用CAN、10/100M以太網(wǎng)MAC、SDIO等



4 軟件架構(gòu)
4.1 系統(tǒng)分層架構(gòu)
Application Layer(應用層)┌─────────┐ ┌─────────┐ ┌─────────┐
│Web Server│ │ Bridge │ │ Network │
│ 管理 │ │ 透傳 │ │ 服務 │
└─────────┘ └─────────┘ └─────────┘
Service Layer(服務層) ┌──────────┐ ┌──────────┐ ┌──────────┐
│Config Save│ │ Firmware │ │ System │
│ 配置管理 │ │ 固件升級 │ │ 系統(tǒng)管理 │
└──────────┘ └──────────┘ └──────────┘
RT-Thread Components(組件層) ┌────┐ ┌─────┐ ┌─────┐ ┌────┐ ┌────┐
│LwIP│ │ DFS │ │ MSH │ │CAN │ │SDIO│
└────┘ └─────┘ └─────┘ └────┘ └────┘
RT-Thread Kernel(內(nèi)核層)線程調(diào)度 | IPC通信 | 內(nèi)存管理 | 定時器Hardware Drivers(驅(qū)動層)EMAC | CAN | SDIO | USART | GPIO | SPI
關(guān)鍵設計點:
異步解耦: 接收線程與轉(zhuǎn)發(fā)線程通過消息隊列解耦
雙向流控: 使用信號量控制隊列消費速率
動態(tài)內(nèi)存: 消息體動態(tài)分配,避免大棧空間占用
CAN重組: CAN幀自動重組為完整網(wǎng)絡數(shù)據(jù)包
5 軟件模塊詳解
5.1 Bridge透傳引擎 (user_bridge.c/h)
核心功能:
網(wǎng)絡與CAN雙向數(shù)據(jù)轉(zhuǎn)發(fā),支持網(wǎng)絡協(xié)議自定義。
CAN幀分段/重組(8字節(jié)限制)
CAN ID智能管理(固定/自增/提取)
統(tǒng)計信息:
網(wǎng)絡→CAN: 數(shù)據(jù)包數(shù)、字節(jié)數(shù)
CAN→網(wǎng)絡: 數(shù)據(jù)包數(shù)、字節(jié)數(shù)
錯誤計數(shù)、丟包計數(shù)、內(nèi)存分配失敗計數(shù)
5.2 Web配置服務器 (user_web_*.c/h)
架構(gòu)特點:
單線程服務器: 串行處理請求(簡化設計)
頁面生成: 服務器端動態(tài)生成完整HTML
響應式設計: 現(xiàn)代化CSS,支持桌面/移動端
頁面模塊:
user_web_network.c: 網(wǎng)絡IP配置(DHCP/靜態(tài)IP)
user_web_can.c: CAN總線參數(shù)配置
user_web_bridge.c: 透傳橋接配置
user_web_server.c: 主服務器 + 系統(tǒng)頁面 + 固件頁面
擴展響應緩沖區(qū)以容納完整的多頁面HTML(~34KB)。
UI設計亮點:
漸變色側(cè)邊欄導航
卡片式內(nèi)容布局
開關(guān)按鈕、進度條、徽章等現(xiàn)代組件
懸停動畫、狀態(tài)指示點
表單驗證與提示信息
5.3 配置管理
存儲方案:
介質(zhì): MicroSD卡,16GB,由于外部擴展FLash的SPI與網(wǎng)絡接口沖突,所以使用SDIO存儲配置,后續(xù)可擴展存儲數(shù)據(jù)日志和操作日志,方便進一步分析
路徑: /gd32_net.cfg (使用虛擬文件系統(tǒng)掛載)
格式: 二進制結(jié)構(gòu)體 + CRC32校驗
健壯性措施:
寫入臨時文件→重命名→刪除舊備份
讀取失敗自動創(chuàng)建默認配置
CRC32完整性校驗
設備健康檢查(幾何信息、扇區(qū)讀取測試)
5.4 固件升級 (user_firmware.c/h)待驗證
5.5 網(wǎng)絡應用服務 (user_net_app.c)
可單獨測試四種網(wǎng)絡模式:

控制命令:
tcp_server start/stop
udp_server start/stop
tcp_client start/stop
udp_client start/stop
net_status: 查看所有服務狀態(tài)
5.6 系統(tǒng)管理 (user_system.c/h)
提供功能:
系統(tǒng)信息查詢(內(nèi)存、運行時間、版本)
設備重啟(reboot [delay])
恢復出廠設置(factory_reset)
配置導出為JSON格式
6 功能展示
1.1 實現(xiàn)功能
1.設備網(wǎng)絡配置界面

2.CAN配置界面

注意:透傳需要啟動CAN(當前參數(shù)默認啟動)
3.透傳橋接界面

4.設備信息界面

可以查看當前固件版本,并在配置后利用按鈕進行軟件重啟設備,以實現(xiàn)配置生效。
5.固件升級

固件升級界面暫未驗證,可進一步拓展。
6.2 數(shù)據(jù)傳輸功能展示
1.設備內(nèi)部默認為TCP_server,當前IP地址為192.168.1.50,CAN一側(cè)波特率設置為1Mbps,標準幀。

實現(xiàn)了雙向數(shù)據(jù)發(fā)送。
6.3 接口連接
連接了網(wǎng)口和CAN口,SD卡也插入接口中。

7 鏈接地址
代碼地址:https://gitee.com/wujunc/gd32-f527_rtthread




想要在RT-Thread平臺或社區(qū)投放內(nèi)容?
或想?yún)⑴c相關(guān)直播活動及賽事?
RT-Thread已開放對接窗口,
請通過郵件與我們?nèi)〉寐?lián)系,期待合作!
合作郵箱: tongfangyi@rt-thread.com
