tic-hirano
2014年6月27日 15時29分
お世話になっております,平野と申します.
Armadillo-460のCSPI3をArmadillo実践開発ガイド(http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-3_ja-2…)を参考に利用しています.
8ビット転送では問題無く動作できているのですが16ビット転送では下記の問題が発生しました.
・データをuint16_t*とし2ワード転送をすると2ワード目が指定した値になっていない(0x0000になっていた)
・4ワード転送すると2ワード目は指定した値になる
上記の問題はwrite関数でもioctl関数でも同じ結果でした.
16ビット転送ができるとバイトオーダー変更が必要なくなるので利用したいのですが上記問題を回避する方法はありますか?
利用機器:Armadillo-460
開発環境:ATDE3
Linuxカーネル:v2.6.26-at19
ユーザランド:v20140415
以上,よろしくお願いします.
コメント
tic-hirano
at_makoto.harada
2014年6月27日 19時24分
原田です。
以前、8bit転送だと問題ないが、16bit, 32bit だと正常に転送できないという問題に遭遇したことがあります。
調査した結果、SPIドライバの問題による制限でした。
添付のパッチで解決しましたので、是非試してみてください。