2012/07/23

[os]なんとなく動く

TOPPERS/ASPというμITRON実装をInterface誌FM3基板で動かそうとしている。
いろいろ勘違いしているところがあり、直していくとなんとなく動くことが確認できた。
よかったよかった。


勘違い1:シリアル送受信APIの戻り値は、サイズ

正常に動いた場合、シリアル送受信APIは転送サイズを返すようになっている。
が、私はE_OKを返すんだろうと思ってラッパ関数を作っていたので、いつもエラーになっていたのだった。



勘違い2:シリアル送信は同期ではない

送受信サイズを返すのなら、転送完了まで確認する同期呼び出しなんだろうと思っていたが、そうじゃなかった。
送信バッファにためたら、戻る。
これはTOPPERS/ASPだからかFM3移植だからかは知らない。

ロジアナで波形を取っていたのだが、同じ処理を書いているのに送信が途中で止まることがあったので、どこだろうどこだろうと探し続けていたのだったが、単に送信割り込みで送っている途中でブレークさせたので波形が止まったというだけのことだった。

最初に調べろよなぁ、私。。。


そんなこんなあったが、RC-S620/Sが動いた。
まだポーリングしか動かしていないけど、基本部分はきっと動いてくれるだろう。

あとは・・・C++実装している箇所をC実装に変更する作業と、ライブラリ化が残っている。
もしかするとC++のままでもちゃんとやれば動いていたのかもしれないが、まあいいや。
やっぱりドライバはC実装の方が落ち着く気がする。

あ、残っているといえば、送受信を別タスクに割り振る作業があった。
今回はシリアル転送を同期で行うようにしているけど、消費電力を減らすのであれば避けられまい。
転送もDMAを使えばさらに減らせるんだろうけど、あんまりそういうのが得意ではないのよねぇ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。