1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LightWeightIP(LwIP)を紐解く(概要・構造)

Posted at

仕事や勉強用でLightWeightIPを使うことが多くなってきたので、振る舞いについて記事にまとめていこうと思っています。
本記事はLightWeightIPの概要と構造にフォーカスして説明します。

LightWeightIPとは

LightWeightIPは、オープンソースのTCPIPのプロトコルスタックです。省メモリを特徴としており、組み込み開発でよく使用されます。
FreeRTOSにも対応しており、AWSとの連携に使用されることもあります。
LightWeightIPのGithubリポジトリはこちらです。

LightWeightIPの特徴

LightWeightIPは、下記の図のようにアプリケーションからAPIを呼び出すことで動作します。ここは他のライブラリと変わりはないと思います。

LwIPブロック図.drawio.png

ただ、上記の図からもわかる通り、LightWeightIPにはEthernetやWLANのデバイスドライバは付属しておらず、自作するか、マイコンメーカが公開しているデバイスドライバを使用する必要があります。

LightWeightIPの構造

ここでLightWeightIPの構造を下記の図にに示します。

LwIPブロック詳細図.drawio.png

上記の通り、LightWeightIPにはアプリケーション層のAPI、つまりHTTPの通信やソケット通信を行うAPIが用意されています。上記の図で言うと「apps」と「api」がこれに当たります。
そして、「apps」と「api」はその下の「core」のモジュールを使ってTCP/IPの通信を行います。
「core」層は、「netif」層を介してデバイスドライバを使用し、Ethernet, WLANの通信を行います。「netif」層は、デバイスドライバをLightWeightIPにとって都合の良い形で呼び出すためのモジュールとなります。

LightWeightIPのフォルダ構成

LightWeightIPのGithubリポジトリのフォルダ構成からも見てもわかる通り、フォルダ構成は下記のようになっています。ここではソースコードが入っているフォルダ「src」以外の説明は割愛します。

LwIPフォルダ構成.drawio.png

上記のとおり、前章で記述した、モジュールがそのままフォルダでまとめられています。「apps」フォルダや「api」フォルダには、アプリケーション層の通信を行うためのAPIが定義されています。
「core」フォルダには、TCPIPの制御・通信用の関数が定義されています。
そして、「netif」フォルダには、デバイスドライバの制御を行うための関数が定義されています。

参考資料

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?