当前位置: 首页 > 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.dtcms.com/a/313393.html

相关文章:

  • linux 扩展未分配的磁盘空间到home下
  • SQL157 更新记录(一)
  • 代码随想录算法训练营第五十八天|动态规划part8
  • 成功解决ImportError: DLL load failed while importing _multiarray_umath: 找不到指定的模块。
  • 深度学习中的模型知识蒸馏
  • 深度学习中卷积与互相关
  • 记录使用ruoyi-flowable开发部署中出现的问题以及解决方法
  • FastAPI-Vue3-Admin 一款Python 全栈融合的高可用中后台快速开发平台方案
  • golang 函数选项模式
  • 数据结构(概念及链表)
  • 【数据结构】队列的顺序存储与链式存储(C语言版)
  • 基于深度学习的医学图像分析:使用变分自编码器(VAE)实现医学图像生成
  • (FD Conv)Frequency Dynamic Convolution for Dense Image Prediction论文精读(逐段解析)
  • 07.config 命令实现动态修改配置和慢查询
  • [硬件电路-138]:模拟电路 - 什么是正电源?什么是负电源?集成运放为什么有VCC+和VCC-
  • Unix 发展史概览
  • 探索 Zephyr 项目:高效、可扩展的实时操作系统
  • 源代码本地安装funasr
  • C语言数据结构(6)贪吃蛇项目1.贪吃蛇项目介绍
  • 有限元方法中的数值技术:三角矩阵求解
  • Vulnhub Corrosion2靶机复现
  • 机器人抓取流程介绍与实现——机器人抓取系统基础系列(七)
  • 腾讯云CentOS7镜像配置指南
  • Pytorch实现一个简单的贝叶斯卷积神经网络模型
  • Java 中也存在类似的“直接引用”“浅拷贝”和“深拷贝”
  • [创业之路-530]:创业公司五维架构设计:借鉴国家治理智慧,打造敏捷型组织生态
  • mysql8.0集群技术
  • 第13章 文件输入/输出
  • 知识蒸馏 - 基于KL散度的知识蒸馏 HelloWorld 示例 KL散度公式对应
  • 文件拷贝-代码