TOPPERS/ASPというμITRON実装をInterface誌FM3基板で動かそうとしている。
いろいろ勘違いしているところがあり、直していくとなんとなく動くことが確認できた。
よかったよかった。
勘違い1:シリアル送受信APIの戻り値は、サイズ
正常に動いた場合、シリアル送受信APIは転送サイズを返すようになっている。
が、私はE_OKを返すんだろうと思ってラッパ関数を作っていたので、いつもエラーになっていたのだった。
勘違い2:シリアル送信は同期ではない
送受信サイズを返すのなら、転送完了まで確認する同期呼び出しなんだろうと思っていたが、そうじゃなかった。
送信バッファにためたら、戻る。
これはTOPPERS/ASPだからかFM3移植だからかは知らない。
ロジアナで波形を取っていたのだが、同じ処理を書いているのに送信が途中で止まることがあったので、どこだろうどこだろうと探し続けていたのだったが、単に送信割り込みで送っている途中でブレークさせたので波形が止まったというだけのことだった。
最初に調べろよなぁ、私。。。
そんなこんなあったが、RC-S620/Sが動いた。
まだポーリングしか動かしていないけど、基本部分はきっと動いてくれるだろう。
あとは・・・C++実装している箇所をC実装に変更する作業と、ライブラリ化が残っている。
もしかするとC++のままでもちゃんとやれば動いていたのかもしれないが、まあいいや。
やっぱりドライバはC実装の方が落ち着く気がする。
あ、残っているといえば、送受信を別タスクに割り振る作業があった。
今回はシリアル転送を同期で行うようにしているけど、消費電力を減らすのであれば避けられまい。
転送もDMAを使えばさらに減らせるんだろうけど、あんまりそういうのが得意ではないのよねぇ。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。