当前位置: 首页 > news >正文

LWIP从FreeRTOS到uC/OS-III的适配性改动

LWIP 适配 uC/OS-III 的改动主要集中在系统接口适配层配置文件中,具体涉及以下文件:

1. arch/sys_arch.c

这是改动最集中的文件,所有操作系统接口的实现都在这里:

  • 数据类型定义:重新定义sys_sem_tsys_mutex_t等与 uC/OS-III 句柄对应的类型。
  • 邮箱接口:实现sys_mbox_new()sys_mbox_post()等函数,内部调用 uC/OS-III 的OSQCreate()OSQPost()等消息队列 API。
  • 信号量接口:实现sys_sem_new()sys_arch_sem_wait()等函数,对应 uC/OS-III 的OSSemCreate()OSSemPend()等信号量 API。
  • 互斥锁接口:实现sys_mutex_new()sys_mutex_lock()等函数,对应 uC/OS-III 的OSMutexCreate()OSMutexPend()等互斥锁 API。
  • 线程接口:实现sys_thread_new(),内部调用 uC/OS-III 的OSTaskCreate()创建任务。
  • 临界区保护:实现sys_arch_protect()sys_arch_unprotect(),对应 uC/OS-III 的OS_CRITICAL_ENTER()/OS_CRITICAL_EXIT()
  • 系统时间:实现sys_now(),调用 uC/OS-III 的OSTimeGet()获取系统时间。

2. arch/sys_arch.h(接口声明文件)

需配合sys_arch.c修改接口类型声明,确保与 uC/OS-III 的类型匹配:

  • 重新声明sys_sem_tsys_mutex_tsys_mbox_t等类型,对应 uC/OS-III 的OS_SEMOS_MUTEXOS_MSG_Q
  • 调整与操作系统相关的宏定义(如临界区保护的返回值类型sys_prot_t)。

3. lwipopts.h(LWIP 配置文件)

需根据 uC/OS-III 的特性调整 LWIP 的核心配置:

  • 启用操作系统支持:设置NO_SYS = 0(表示使用操作系统)。
  • 线程优先级配置:根据 uC/OS-III 的优先级范围(如OS_CFG_PRIO_MAX)调整TCPIP_THREAD_PRIO等线程优先级参数。
  • 栈大小配置:根据 uC/OS-III 的栈管理方式(栈大小以CPU_STK为单位)调整TCPIP_THREAD_STACKSIZE等栈大小参数。
  • 超时配置:确保 LWIP 的超时参数(如DEFAULT_TCP_RECEIVE_WINDOW)与 uC/OS-III 的节拍频率(OS_CFG_TICK_RATE_HZ)兼容。

4. include/os.h(uC/OS-III 头文件,间接涉及)

无需修改,但需确保该文件被正确包含,以使用 uC/OS-III 的内核 API(如OSQCreate()OSTaskCreate()等)。

5. 应用层初始化文件(如tcpip_init.c,视项目而定)

若项目中有初始化 LWIP 的代码(如创建 TCP/IP 线程),需确保线程优先级、栈大小等参数符合 uC/OS-III 的要求:

http://www.lryc.cn/news/608824.html

相关文章:

  • 第六章第三节 TIM 输出比较
  • 关于Web前端安全防御之安全头配置
  • 位运算在权限授权中的应用及Vue3实践
  • 深入理解Java中String.intern()方法:从原理到并发控制实践
  • ElementUI常用的组件展示
  • 高质量数据集|大模型技术正从根本上改变传统数据工程的工作模式
  • Android 之 串口通信
  • zookeeper分布式锁 -- 读锁和写锁实现方式
  • 【Android】RecyclerView循环视图(2)——动态加载数据
  • 【C 学习】04-了解变量
  • 《volatile 与 synchronized 底层实现与性能比较》
  • 【OD机试题解法笔记】文件缓存系统
  • linux 扩展未分配的磁盘空间到home下
  • 【从零开始速通C语言1】 - 汇编语言1
  • RAG 知识库实战指南:基于 Spring AI 构建 AI 知识问答应用
  • 第N个泰波那契数
  • Coze 打通飞书多维表格,实现数据增删改查操作实战详解
  • 机器学习sklearn:支持向量机svm
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——9. 接入真实硬件:驱动USB摄像头
  • 李宏毅深度学习教程 第8-9章 生成模型+扩散模型
  • 【Unity3D实例-功能-镜头】俯视角
  • JVM-垃圾回收器与内存分配策略详解
  • [创业之路-530]:创业公司五维架构设计:借鉴国家治理智慧,打造敏捷型组织生态
  • 智变时代:AI 如何重构工作边界与行业生态?
  • 【MySQL安全】什么是SQL注入,怎么避免这种攻击:前端防护、后端orm框架、数据库白名单
  • 计算机网络:如何在实际网络中进行子网划分
  • 从零开始学Express,理解服务器,路由于中间件
  • C#模式匹配用法与总结
  • Supergateway教程
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现各类垃圾的分类检测识别(C#代码UI界面版)