一、系统介绍
- UART、AXIDMA、NET的接收帧
- 接收帧的协议解帧处理
- 用户逻辑处理
- 路由分发到UART、AXIDMA、NET
- 通过网口的QSPI在线更新
- 软件定时器打印任务运行状况
二、基础配置
- PL侧构建AXI-DMA回环
- 构建Platform时选择对应FreeRTOS平台
- BSP配置中勾选lwip(基本网络协议栈)、xilffs(Fat文件系统)
- 修改配置:socket-api、generate_runtime_stats
三、基本系统
- UART中断系统,接收回调函数中拷贝数据到循环缓冲区,使用任务通知通知解帧任务
- AXIDMA中断系统,中断函数拷贝数据到循环缓冲区,使用任务通知通知解帧任务
- UART解帧子系统,阻塞等待消息通知,从循环缓冲区读出所有的数据,一字节一字节解帧,解完一帧之后发送数据到循环缓冲区,构建消息发送到用户处理任务
- AXIDMA解帧子系统和UART解帧子系统功能相同
- NET接收子系统,socket、bind、listen、accept,写循环缓冲区,并通知解帧任务
- NET解帧子系统,和其他解帧子系统功能相同
- 用户处理任务,读消息队列,从循环缓冲区拿到数据,处理,发送到另一个循环缓冲区,构建消息队列发送到路由任务
- 路由任务,读消息队列,从循环缓冲区拿数,组帧,发送到UART、AXIDMA、NET
- QSPI升级任务,socket、bind、listen、accept,读clear、文件大小、接收BOOT.BIN文件、(可增加校验)、读update进行QSPI操作
- 定时器回调函数,vTaskList和vTaskGetRunTimeStats,读出任务优先级、剩余栈、运行计数、使用栈
- 系统初始化任务,初始化UART、AXIDMA、并启动一次接收,对lwip初始化,创建NET接收子任务和QSPI升级任务,并删除自身
四、分模块配置
- UART接收打开接收完成中断和空闲中断
- 软件定时器基于硬件定时器,即TIM1,内核配置的时候使用中断控制器为xInterruptController,必须基于此对象配置UART、AXIDMA
- 考虑到不定长的数据帧,用循环缓冲区+消息队列实现数据传递
- lwip_init的调用采用官方例子sys_thread_new创建的子任务实现,并在初始化后在子任务创建NET相关任务,之后删除任务本身
- 解帧函数,构建parser对象、单字节解析,使用状态机
posted @
2025-07-31 09:30
gramming
阅读(
370)
评论()
收藏
举报