TOPPERS『TOPPERS基礎3実装セミナー』に参加してきた (2日目)

TOPPERS基礎3実装セミナーの2日目に参加してきました。

  • 日時
    • 12月8日(土) 10:00-17:00
  • 2日目のプログラム
    • 10:00〜11:00 ITRON-TCP/IP仕様
    • 11:00〜11:30 TINETデバイスドライバの設計
    • 11:30〜14:00 DHCP+ECHOサーバの実装確認
    • (12:00〜13:00 昼食)
    • 14:00〜14:30 プラットフォーム作成
    • 14:30〜15:00 仮想端末アプリの構築
    • 15:00〜16:30 仮想端末アプリの拡張
    • 16:30〜17:00 まとめ

他は 1日目を参照。

  • セミナー受講中のメモ

セミナー受講中にとったメモを記載します。

ドライバの設計指針やテクニック
TOPPERSのドライバは,デバイスドライバ設計ガイドラインのDICアーキテクチャに沿って設計されることが多い。
URL
OSからドライバを操作する時は、サービスコール、反対にドライバからの応答はコールバックで応答する。コールバックされてない時は、リンクが切れるだけ。
こうする事でアプリ側には特定の関数を必要としない。OSを変えた時も
ドライバとのやりとりを変えずともよくなる。

TOPPERS系ITRON仕様OSでは、デバイスドライバガイドラインで提案されている、SIL(System Interface Layer)によるデバイスアクセスが推奨されている。実際には、デバイスのアドレスを指定してアクセスする部分が関数化されている。アクセス方法を関数化する事で、設計検証時にWindows上でシミュレートしやすくしている。

ARM系は、CMSIS(Cortex Microcontroller software interface standartd)という決まりで設計されている。

ドライバのリネームテクニックはよく使う。ターゲットボードが変わっても、アプリ側の呼び出し関数名を変更しなくて済む。セミナーの題材では #define によるネーム置き換えマクロ。
カーネル内は、_kernel

TOPPERS用TCP/IPネットワークスタック『TINET』
苫小牧高専のxxx氏設計
TINETは呼び出せるドライバが一種類。
そのかわり、ターゲットボードのりソースが少ない。

USBは中位階層あたりまでハードウェア依存。

高級なドライバは、データリンク層/物理層で、パケットフィルタリングをしてくれるの性能が出しやすい。TINETの場合は、受け付けたパケット全てを、上位層へ渡している。

オクテット=バイト数と同意。
CPUによってビット数はわからないので、オクテット表記。

輻輳(ふくそう)制御

TINETは、複数セッションを可能とするマルチタスクサーバーにも一応対応できる。

UNIXのソケットの場合は、2分くらいソケット切断に時間がかかる。(RFC要求)
ソケットインターフェイスは、1Mbyteから4Mbyteくらいリソースが必要。
最近のMCUには、イーサーネット用のディスクリプタが実装されているので、ディスクリプタ制御を知ってないとドライバ書けない。
最近のMCUのEMACディスクリプタには16KByteくらいのRAMを持っているので、必要にメモリ制約を設ける必要がない。

page96 シンボルファイルでは"実装各"の欄の名前でビルドされている。

mon>log mode 1 6

tinetを使う時は、
tinet/cfg で makeを実行し tinet_cfg.exeを生成する事。

プラットフォームのAPI設計は非常に重要。
アプリ開発に9人、プラットフォームに1人というような開発体制であっても、プラットフォームのAPI設計がしっかりしていれば、Linux上で検証しターゲットボードへの移行、標準API(POSIXやソケット)で設計する事でアプリ開発者は特別な知識がなく設計ができるので、開発効率が良くなる。


お昼と要望


愛知開催
PCレンタル無料化
ARMのcortex化