LWIP轻量级TCPIP协议栈的移植

本文介绍了在ST的OS20平台上移植LWIP轻量级TCP/IP协议栈的步骤,涉及操作系统接口如线程、信号量的实现,以及硬件驱动的移植,包括初始化、数据收发功能。通过完成sys_arch.c文件和ethernetif.c文件,实现LWIP与操作系统的适配和硬件层面的交互。
摘要由CSDN通过智能技术生成

好久没有做过技术工作了,前几天因为一些需要,要在ST的OS20平台上进行了LWIP的移植,有一些心得,写出来供大家参考。


LWIP的背景我就不介绍了,相信能看到这篇文章的人都对其背景有过了解了。

LWIP的模块化还是很强的,所以移植起来没有想象的那么多困难,一个协议栈在某个平台上移植,其实主要来说包括两个大的部分接口,注意一下,我使用的是最新的LWIP1.4.0

1.与系统相关的接口,比如多线程,信号量,互斥锁,系统时间等,当然,LWIP还有一种无操作系统模式,那这些接口就不用实现了。

2.与硬件相关的接口,实际上就是网卡驱动啦,当然,如果你的物理层不是网卡而是别的什么,那就需要的是另外那个硬件设备的驱动啦,比如Docsis设备之类的。


好了,开始移植吧。

首先是操作系统部分:

1.opt.h

首先看这个文件,这个文件里面包含了LWIP的模块选项,可以在这里选择哪些模块需要编译,那些模块不编译,分成几个部分,mem,arp,icmp,igmp,ppp,dhcp等,这里可以根据自己的需要修改编译选项,如果是带操作系统的,还要修改栈空间,优先级之类的选项。

2.cc.h

这个文件是没有的,你需要建立一个目录arch,然后在下面添加cc.h,这里里面主要是一些定义,包括数据类型,大小头端之类的,我的cc.h比较简单

/*数据类型宏定义*/

typedef unsigned char u8_t;

typedef unsigned short u16_t;

typedef unsigned int u32_t;

typedef  char s8_t;

typedef  short s16_t;

typedef  int s32_t;

typedef int mem_ptr_t;

typedef semaphore_t sys_sem_t;

typedef mutex_t sys_mutex_t;

typedef message_queue_t sys_mbox_t;

typedef u8_t sys_thread_t;

#define BYTE_ORDER LITTLE_ENDIAN   //大小头端选择

/*调试信息宏定义*/

</

  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值