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

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.xdnf.cn/news/16881.html

相关文章:

  • 多向量检索:lanchain,dashvector,milvus,vestorsearch,MUVERA
  • 嵌入式 C 语言入门:多文件编程实践笔记 —— 从文件创建到调用
  • visual studio code 怎样将主题修改成亮色,并且配置中文界面
  • 基于transformer的目标检测——匈牙利匹配算法
  • 仓库管理系统-14-前端之侧边栏区域Aside的集中式状态管理菜单和动态路由
  • 死锁深度解析:原理、检测与解决之道
  • Spring Boot 整合 Minio 实现高效文件存储解决方案(本地和线上)
  • 【十九、Javaweb-day19-Linux概述】
  • Pytorch 报错-probability tensor contains either ‘inf‘, ‘nan‘ or element < 0 解决方案
  • Odoo OWL前端框架全面学习指南 (后端开发者视角)
  • 机器学习——决策树
  • K8S部署ELK(四):部署logstash
  • JDBC核心技术与预编译SQL实战
  • 2、RabbitMQ的5种模式基本使用(Maven项目)
  • 算法竞赛阶段二-数据结构(39)数据结构栈模拟实现
  • npm ERR! code CERT_HAS_EXPIRED:解决证书过期问题
  • PHP入门及数据类型
  • Noob靶机攻略
  • AI + 云原生:正在引爆下一代应用的技术革命
  • malloc、calloc、realloc
  • deep research|从搜索引擎到搜索助手的实践(一)
  • 西门子PLC基础指令4:输出指令、立即输出指令
  • 【Bluetooth】【基础篇】第二章 关于蓝牙协议栈架构与其硬件方案架构大致概述
  • 12.Redis 主从复制
  • innoDB的buffer pool
  • 2025熵密杯 -- 初始谜题 -- Reproducibility
  • sqli-labs:Less-19关卡详细解析
  • 交互 Codeforces Round 1040 Interactive RBS
  • 网易云音乐硬刚腾讯系!起诉SM娱乐滥用市场支配地位
  • 联合索引全解析:一棵树,撑起查询的半边天