📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| 180行目: | 180行目: | ||
ENC28J60の電源は3.3[V]であり、MSP430F5529と同じ電圧で動作するため、レベル変換回路は不要である。<br> | ENC28J60の電源は3.3[V]であり、MSP430F5529と同じ電圧で動作するため、レベル変換回路は不要である。<br> | ||
ただし、電源の安定性を確保するため、各電源ピン近くに適切なデカップリングコンデンサを配置することが重要である。<br> | ただし、電源の安定性を確保するため、各電源ピン近くに適切なデカップリングコンデンサを配置することが重要である。<br> | ||
<br><br> | |||
== lwIPライブラリの構成 == | |||
lwIPライブラリは、以下に示すような階層構造を持っている。<br> | |||
<br> | |||
* アプリケーション層 | |||
*: ユーザアプリケーション (Webサーバ、HTTPクライアント等) | |||
* API層 | |||
*: Sequential API (netconn API) | |||
*: Raw API (コールバックベース、低レベルAPI) | |||
* lwIPコア層 | |||
*: TCP、UDP、IP、ICMP、ARPプロトコル実装 | |||
* ネットワークインターフェース層 | |||
*: イーサネットコントローラドライバ (ENC28J60) | |||
* メモリ管理層 | |||
*: メモリプール、バッファ管理 (pbuf) | |||
<br> | |||
lwIPの主要なソースファイルを以下に示す。<br> | |||
* lwip/src/core/ | |||
*: lwIPコア実装ファイル群 | |||
*: tcp.c、udp.c、ip.c、icmp.c、arp.c等 | |||
* lwip/src/api/ | |||
*: Sequential API実装 | |||
*: netconn.c、api_lib.c、api_msg.c等 | |||
* lwip/src/netif/ | |||
*: ネットワークインターフェース | |||
*: ethernet.c、etharp.c等 | |||
* lwip/src/include/lwip/ | |||
*: lwIPヘッダファイル群 | |||
* arch/ | |||
*: アーキテクチャ依存部分 (移植先マイコン依存) | |||
*: cc.h、perf.h、sys_arch.h等 | |||
* lwipopts.h | |||
*: lwIP設定ファイル (移植先マイコン依存) | |||
* enc28j60_lwip.c / enc28j60_lwip.h | |||
*: ENC28J60ドライバ (移植先マイコン依存) | |||
<br> | |||
この階層構造により、lwIPの中核部分とハードウェア依存部分が明確に分離されている。<br> | |||
MSP430F5529への移植では、主にアーキテクチャ依存部分 (arch/)、ネットワークインターフェース層 (enc28j60_lwip.c)、設定ファイル (lwipopts.h) を実装または修正する必要がある。<br> | |||
<br> | |||
lwIPは、通常はRaw APIを使用して実装する。Raw APIは、コールバック関数ベースの低レベルAPIで、メモリ使用量が少なく、MSP430F5529のような限られたリソースのマイコンに適している。<br> | |||
Sequential APIは、よりシンプルな記述が可能であるが、RTOSが必要となるため、MSP430F5529では通常使用しない。<br> | |||
<br> | |||
* lwIPの公式Webサイト | |||
*: https://savannah.nongnu.org/projects/lwip/ | |||
* lwIPのGithub | |||
*: https://github.com/lwip-tcpip/lwip | |||
<br><br> | <br><br> | ||