TCP/IPプロトコル・スタックの省メモリ開発事例(後編) ――ROM 8Kバイト,RAM 0.5KバイトにTCP/IPプロトコル・スタックを収める

浅井 敬,佐藤 剛,坂本直史

tag: 組み込み

技術解説 2004年12月28日

● 移植性の考慮

 今回のTCP/IPプロトコル・スタックの開発にあたっては,当初からほかのマイコンへの移植を考えていました(コラム「H8/Tinyへの移植」を参照).そのため,以下のような点に留意して開発しました.

1) エンディアンを切り替え可能に

 TCPやIPのヘッダに含まれる16ビット長,32ビット長の情報はビッグ・エンディアン形式で格納されています.これらのデータの読み書きには関数を用いて,マイコンのアーキテクチャに応じてリトル・エンディアン形式にも切り替えられるように実装しました.

2) ポインタ長に柔軟に対応する

 効率良くアクセスできるポインタ長は,マイコンのアーキテクチャによって16ビット長のものと32ビット長のものがあります.そのため,ポインタ長を明示的に指定する必要のある箇所にはnear/farなどの修飾子を用いました.

3) アライメントがとれるように配置アドレスを調整

 16ビット長や32ビット長のデータに対するアクセスは,それぞれ2バイト,4バイトのアライメントがとれていると効率良くアクセスすることができます.マイコンのアーキテクチャによっては,アライメントがとれていないと正常にアクセスできないものがあります.そのため,例えば受信パケットを格納するバッファは,ヘッダ情報に含まれる16ビット長または32ビット長のデータのアライメントがとれるように,配置アドレスを調整しました.具体的には,対象となる変数とshort型やlong型の変数をunionで宣言して対処しました.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日