ETロボコン向け TOPPERS活用セミナー

NPO法人TOPPERS主催で開催されたETロボコン向けTOPPERS活用セミナーを受講させてもらいました。

いつものTwitterです。恥も外聞もなくセミナーに関係のない、いい加減なことをつぶやきに潜り込ませていますのでご容赦ください。


「ETロボコン RTOS活用セミナー (TOPPERS/JSP)」 開始 #etrobo

posted at 10:01:46

クロス開発環境の説明 #etrobo

posted at 10:09:03

アセンブリ言語。DSPなど特殊なプロセッサで使われる。でも最近のTexas InstrumentsのDSPなどC/C++が標準みたいですね。RTOS(もどき?)もTI社から標準で提供されますし。 #etrobo

posted at 10:12:50

cygwin上のクロス開発環境の解説なう。 #etrobo

posted at 10:14:41

Mindstorms NXTはシリアルインターフェースを備えていないため、残念ながらデバッガ(GDB/Gnu Debugger)は使えない。 #etrobo

posted at 10:18:25

C言語のツールチェーンの説明。プリプロセッサ、コンパイラ、アセンブラ、リンカー。最近は「リンカ」ではなく「リンカー」って末尾を伸ばす表記が推奨されるのでしたっけ? #etrobo

posted at 10:21:10

makeのバージョンに注意しましょう。NXTに移行してから私はToolchainのバージョンではまったことがありませんが、とりあえず最新版でそろえておけばOKかな? #etrobo

posted at 10:25:17

GNU ARMインストールの注意事項。 Little Endian, Thumb code(16bit実行形式)を必ず選択しましょう! #etrobo

posted at 10:27:20

GNU ARMのインストール場所は C:¥cygwin¥usr¥local (/usr/local) を推奨。私の環境は /cygdrive/c/program files (x86)/gnuarm/bin/arm-elf-gcc と随分チャレンジャブル ^_^; #etrobo

posted at 10:31:19

拡張NXTファームウェアのインストール作業解説なう。子供用なのに(子供用だからこそ?)すごい隠された場所にハードウェアリセットボタンがあるんですよね。 #etrobo

posted at 10:41:17

プラットホームの出来具合がいくら良くてもETロボコンの評価対象外。それを言っちゃあおしまいよ。^_^; #etrobo

posted at 10:45:36

プラットホームの中身まで知り尽くしていないと非機能要件まで満たすのは難しいですよ。チームに一人はプラットホームに詳しいメンバーを ^_^; #etrobo

posted at 10:47:09

プラットホームをすっとばしてハードウェアを直接叩いていたチームが実はあったようです。サブCPU(Atmel)のプログラムを書き換えていたチームはあったのかな? ^_^; #etrobo

posted at 10:49:29

TOPPERS/JSP for Mindstorms/NXT は nxtOSEK の API を 踏襲。著作権の問題があって、若干削られている機能があるそうです。 #etrobo

posted at 10:52:12

パソコンのOSとリアルタイムOSは異なります。リアルタイムOSにはソリティアはついていません。って実際の講師はまっとうにスケジューラーの説明とかをしていますよ。^_^; #etrobo

posted at 10:55:29

LejOS。 レジオス? レイオス? この類の用語は耳で聞くと難しいですね。 #etrobo

posted at 10:58:35

JISの長音表記のルールをMicrosoft社が上書きすると某メーカーはMS社に倣うので・・・ ^_^; http://bit.ly/k7F76 RT @monamour555 好みの部分もありますが,JISでは「リンカ」のはず. #etrobo

posted at 11:09:31

第一部終了。第二部はTOPPERSの高田広章先生登壇予定。 #etrobo

posted at 11:11:35

 

名古屋大学 高田広章先生よりITRONの基礎知識。有料セミナーだったら大変だ。お金の問題ではないんですけどね。^_^; #etrobo

posted at 11:17:46

ITRONというOSがあるように誤解している人もいますが、ITRONは仕様の名前です。 #etrobo

posted at 11:18:28

ITRONの version 4は11年前に策定したものですが古くなっているわけではないです。 #etrobo

posted at 11:20:19

WindowsではAPI、ITRONではサービスコール。 #etrobo

posted at 11:23:16

ITRON4ではフルセットで166個のサービスコールを定義しているが全てのサービスコールを全てのユーザー(開発者)が必要としているわけではない。 #etrobo

posted at 11:24:38

最近のサービルコールの名前の付け方はフルスペルで名付けるのが流行りですが、ITRONでは3文字で省略しています。日本人には覚えやすいかも ^_^; #etrobo

posted at 11:25:55

Linuxでは、過去のAPIと最近のAPIで命名ルールが異なっていたりする。でもITRONは一貫した命名ルールで統一されている。 #etrobo

posted at 11:27:32

WindowsやLinuxではOSとアプリケーションが別々にリンクされている。一方で今回の環境はワンリンクモデル(OSもドライバもアプリケーションも一つにリンク) #etrobo

posted at 11:29:59

RTOSのコンフィギュレーションの説明なう。 #etrobo

posted at 11:31:12

(たいていの)組込みシステムではブート時にコンフィギュレーション情報を静的に決定することができる。なぜなら、あらかじめ何を実行するのか決まっているから。すると起動が速くなるしメモリも小さくなる。 #etrobo

posted at 11:34:09

静的API CRE_TSK() の詳細説明なう。さすがにこの短時間では何人の受講者が理解できるでしょうか。 ^_^; #etrobo

posted at 11:39:37

マルチタスク機能の説明に進みます。超特急セミナー。はやぶさの大気圏突入速度よりも速いかも。。。^_^; #etrobo

posted at 11:42:13

時間がかかる処理(たとえば走行経路を計算する処理)をしながら、並行してモーターを制御する処理などを行いたいとき、などのときにマルチタスクが力を発揮する。 #etrobo

posted at 11:43:55

プリエンプティブ(先取りあり)。たとえ話 「仕事中に電話が鳴った!いまやっている仕事を中断して電話に出る」 #etrobo

posted at 11:45:15

同一優先度ではFCFS(First Come First Serve)。 #etrobo

posted at 11:46:19

パソコンのOSは(基本は)ラウンドロビンスケジューリング。 #etrobo

posted at 11:46:46

ITRONは数字が小さいほうが優先度が高い。OSEKは数字が大きいほうが優先度が高い。 configurationファイルなんて年に一度も書き変えないので、いつも私は仕様書を読みなおします。^_^; #etrobo

posted at 11:49:11

タスクの状態遷移図を説明。3つくらい状態を覚えておけばOKですよ。と高田先生に言って貰えると安心できます。二重待ち状態なんて面倒なものを私も使ったことないもん。 #etrobo

posted at 11:50:47

ディスパッチきたー! 映画「ハッピーフライト」に登場したディスパッチャーの女性が私が好きです。って毎回こればっかり。^_^; #etrobo

posted at 11:51:57

「待ち状態」と「休止状態」は紙一重。似ているよね。違いは「休止状態」は(関数の)先頭から実行される。「待ち状態」は待ちに入ったサービスコールの続きから実行される。 #etrobo

posted at 11:57:13

tslp_tsk() timeout機能付きsleepサービスコール。組込みでは例外処理が大切。何かを待ったきり、いつまで経っても戻ってこないと困るときがある。 #etrobo

posted at 12:01:49

時間管理機能の説明なう。タイムイベントハンドラー。講義スピードに燃え尽きてしまった受講生がちらほら。。。^_^; #etrobo

posted at 12:06:15

OSのタイムハンドラー。ハードウェア(マイコン)の限られた数(1つとか2つ)しかないタイマーを、あたかも、いっぱいあるように見せかける(仮想化する)機能。 #etrobo

posted at 12:08:40

sns_loc() CPUロック状態か否か調べるコール。通常は必要ない(設計時に判明する)はずですが、デバイスドライバーなどを作る時は有用です。 #etrobo

posted at 12:11:33

ITRONの同期・通信機能の講義に進みます。 #etrobo

posted at 12:13:21

複数のタスクでメモリを共有しているときはクリティカルセクションを設定したほうが良い場合が多いです。 #etrobo

posted at 12:17:24

セマフォ(腕木式信号機)とタブレットの説明中。続きは私のブログの写真で。。。^_^; http://www.chihayafuru.jp/tdiary/?date=20070502 #etrobo

posted at 12:20:39

データーキューをOSが提供する意義。リングバッファが一杯のときにsendしようと試みたときは待ち状態に入る。リングバッファが空のときにreceiveしようと試みたときも待ち状態に入る。ここがOSで提供する利点。 #etrobo

posted at 12:26:12

どのような同期機能、通信機能を使う(選択する)のかはOSを使う人(開発者)に任されている。 #etrobo

posted at 12:27:59

メールボックスをお勧めしない理由は? 使い方の注意が必要だから。データキューでもメールボックスと同じような使い方ができるのでリスクを犯してメールボックスをつかうことはお勧めしない。 #etrobo

posted at 12:33:33

 

午後のセミナー再開。 #etrobo

posted at 13:36:43

今年の暮れにTOPPERS/JSP 1.4.4が登場すろときには、TOPPERS/JSPのなかにMindstorms NXTの開発環境も含まれているはずです。 #etrobo

posted at 13:45:00

JSPのソースコードの文字コードの注意説明。漢字コードと改行コードの違いに気をつけましょう。適切なエディタを使えば問題と感じないはず。 #etrobo

posted at 13:46:41

TOPPERS/JSPのディレクトリ構成の説明。こうして眺めてみるとディレクトリがずらっと並んで大変そうに見えますね。私も関係しそうなところ以外、開いてみたことはないのですが・・・ ^_^; #etrobo

posted at 13:48:53

ディレクトリ nxt の下にMindstorms NXT関連のライブラリなどが入っています。 #etrobo

posted at 13:49:57

Linux上でTOPPERS/JSPの環境構築はできますか? => ほとんど問題なくできると思います。高田先生はMacOSでやっているらしい。^_^ #etrobo

posted at 13:58:16

講師のデモを真似しながら、TOPPERS/JSPのビルドを試しているので、ちょっと無口に・・・ #etrobo

posted at 14:15:41

タスクの優先度切り替えの様子をターミナル(TeraTerm)で観察しています。NXTは寝たっきりなのでRTOSを知らない人はさっぱり何が起こっているか???だとは思いますが・・・^_^; #etrobo

posted at 14:46:32

H8マイコンボードがなくても、Mindstorms NXTがあればRTOSのタスク遷移の実習ができるのはすごいかも。ただH8マイコンボードよりもNXTのほうが随分とお高いですが・・・^_^; #etrobo

posted at 14:52:24

最終セッション NXT走行体サンプルコード OBJ/MINDSTORMS/SAMPLE の解説 #etrobo

posted at 15:01:47

show_splash_screen() を外してしまえばメモリを大幅に節約できます。TOPPERS/JSPではバナー表示はOSの外部に追い出した!^_^; #etrobo

posted at 15:06:19

nxtOSEKと ecrobot_interface.h でインターフェースは共通になっているがAPIの中身は書き直しています。 #etrobo

posted at 15:41:06

TOPPERS/JSP for Mindstorms NXT では著作権の関係で一部の機能をnxtOSEKから落としています。ただしサウンド関係などETロボコン競技と直接関係ないので要望がなければnxtOSEKに準拠した形の再拡張の予定はありません。 #etrobo

posted at 15:51:49

ETロボコン向けRTOS活用セミナー終了です。みなさん、お疲れ様でした。 #etrobo

posted at 16:47:04

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください