lwip移植freertos_LwIP应用开发笔记之十:LwIP带操作系统基本移植

本文介绍了在STM32F407平台上,如何将LwIP TCP/IP协议栈移植到FreeRTOS操作系统。首先,从官方获取LwIP和FreeRTOS源码,然后在无操作系统移植基础上,主要工作是编写操作系统模拟层,包括信号量、互斥量和邮箱的实现。通过移植,实现了LwIP在FreeRTOS中的运行,并通过ipconfig和ping命令验证了网络连接的正常性。
摘要由CSDN通过智能技术生成

1e645a1dc3e8a1ae0751cc2716d5a6cb.png

现在,TCP/IP协议的应用无处不在。随着物联网的火爆,嵌入式领域使用TCP/IP协议进行通讯也越来越广泛。在我们的相关产品中,也都有应用,所以我们结合应用实际对相关应用作相应的总结。

1、技术准备

我们采用的开发平台是STM32F407和LwIP协议栈。在开始之前,我们需要做必要的准备工作。

首先要获得LwIP的源码,在网上有很多,不同版本及不同平台的都有,不过我们还是建议直接从官方网站获得。其官方网站如下:

http://savannah.nongnu.org/projects/lwip/

其次,需要硬件平台,我们采用了STM32F407ZG+DM9161的网络接口方式,这并不是必须的,其他硬件平台也是一样的。

最后,因为我们后面要在操作系统下移植,采用的操作系统是FreeRTOS,所以还需下载FreeRTOS的源码。同样建议从官网下载:

https://www.freertos.org/index.html

2LwIP简要说明

LwIP是一款免费的TCP/IP协议栈,但它的功能趋势十分完备。LwIP 具有三种应用编程接口(API):

Ø  Raw API:为原始的 LwIP API。它通过事件回调机制进行应用开发。该 API 提供了最好的性能和优化的代码长度,但增加了应用开发的复杂性。

Ø  Netconn API:为高层有序 API,需要实时操作系统(RTOS)的支持(提供进程间通讯的方法)。 Netconn API 支持多线程工作。

Ø  BSD Socket API:类似 Berkeley 的套接字 API (开发于 Netconn API 之上)。

     对于以上三种接口,前一种只需要裸机即可调用,后两种需要操作系统才能调用。所以据此LwIP存在两种移植方式:一是,只移植内核,此时应用程序的编写只能基于RAW/Callback API进行。二是,移植内核和上层API,此时应用程序编写可以使用3种API,即:RAW/Callback API、Sequential API和Socket API。

3LwIP的带操作系统基本移植

带操作系统的移植首先是建立在无操作系统移植基础之上的。在无操作系统移植时,定义的数据类型和宏都是有效的,只需要对lwipopts.h配置文件做简单修改,并根据sys_arch.txt移植说明文件编写sys_arch.c和sys_arch.h两个文件以实现操作系统模拟层就可以了。

操作系统模拟层的功能再以为协议栈提供邮箱、信号量、互斥量等机制,用以保证内核与上层API的通讯。这些操作系统模拟层函数均在sys.h中已经声明,我们一般在sys_arch.c文件中完成其定义。所以,我们很清楚,带操作系统的移植就是在无操作系统的基础上添加操作系统模拟层。在接下来我们就看看操作系统模拟层的编写。

在操作系统已经正确移植的基础上,我们根据sys_arch.txt移植说明文件的描述,还需要移植的宏定义及函数等如下:

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值