2016年4月27日水曜日

RaspberryPi 3 Model B

RaspberryPi 3 Model Bをようやく入手しました。
これまでRaspberryPi 2 Model Bを使用していたうちのシステムに入れ替えたところ早速トラブりました。
まず、XBee制御に使用していた/dev/ttyAMA0はWiFi/BT用に使用されるとのことで、40pinのコネクタに出ているUARTは/dev/ttyS0に変更されています。
BCM2835の仕様書とGPIOのPinMuxの設定値を調べてみると、なかなか微妙な仕様になっていました。

RaspberryPi 2の場合
40pinコネクタの8,910,11,36はTXD0,RXD0,RTS0,CTS0で/dev/ttyAMA0にアサインされていて、UARTのIPはARM PrimeCell PL011です。
RaspberryPi 3の場合
40pinコネクタはTXD1,RXD1,RTS1,CTS1で/dev/ttyS0にアサインされてIPは16550 UART下位互換のMiniUARTになっています。
これは対応ボーレートが476bps~31.25Mbpsになっていますが、一般的な115200とかのボーレートの場合誤差がそれなりにありそうです。(ちゃんと計算してませんが)

それでもまぁ大丈夫だろうと取り敢えず試してみようと繋いでみましたが、最初動作しているのに暫くすると動かなくなる現象が発生しました。
通信路を見ていると途中から周波数が変化している現象が発生しています。
ネットで色々調べてみると、CPUのcore clockがIPのCLKになっているようで、現状のraspbianではCPU周波数が変動するとMiniUARTのクロックも一緒に変動してしまうようで使い物になりません。
これは対策として/boot/config.txtにcore_freq=250を追加することで対応できるようです。
そのうちクロックソースを固定のものから供給する設定になる気がしますがいまのところこの対策しかないようです。

もう1つRaspberryPi3で発生した問題が、PWR-LEDの問題です。
/sys/class/leds/led1が消えていたのでPWR LEDが消せなくなってしまいました。
どうもPWR-LEDの制御がメインCPUのGPIOから他の所のGPIOに移動したようで、直接制御できなくなってしまったようです。
そのうち、対応策が出てくることを期待して取り敢えず置いておきます。

0 件のコメント:

コメントを投稿