SSCI mbed LPC824のSPI(とりあえず)使えた

 スイッチマトリックス(SWM)をいじるとSPIが使えないというかハングする件。そもそもデフォルトはどういう設定なのかを探ってみた。

 mbedの開発系のサイトのソースを見る。このあたりHALのコード。PeripheralNames.hに

// SPI: MOSI, MISO, CLK, SEL
#define MBED_SPI0 P0_26, P0_25, P0_24, P0_15

という記述があって、その通りにSPIを接続したらSPI動作しました。
SPIが使えることはわかったのだけども、その後にWIZnetのライブラリがW5200指定するとコンパイルできない状態で先に進まない。

LPC824を使ってる人が少ないのでいろいろ解決してないのだろうと思う。王道の初代mbedのLPC1768の4台目を手に入れたので、一旦そっちで開発します。
こいつはこいつでブレッドボードにはデカくてプロトタイピングしにくいし下手するとraspberry Piと値段は変わらないのだけども、PiはOS込みで使いにくい部分と使いやすい部分がある。


GMAILをSMTPリレー先にしたpostfixの設定

 自宅cloudstackの管理サーバとホストマシンのOS的な状況監視をしようと思ってlogwatchを導入。
 
 メールはgmailで受けたいのでpostfixにリレーの設定してみたが届かない。
 どうやら、自分は二段階認証を使ってるから。Googleアカウントからアプリパスワードを発行してそれを登録したら無事にメールが届いた。

 これで何か起きてるのに気づかない事はなくなる。


秋月の雷センサーその後

昨晩というか今朝早朝というかゴロゴロバリバリの雷があったのだけど・・・。自分も音で目がさめるくらい。
でも、センサーではなにも感知しなかったようで。
センサーが悪いのかプログラム的に無理があるのかわからないので、ネットへの接続はやめてひたすらログを取るタイプに書き換えようと思う。


自宅cloudstackのメンテ

LPC824のスイッチマトリックスをmbed環境でどう設定するかがきまらないので寄り道。

cloudstackの環境メンテ
・管理サーバのDBをDUMPしてNASに毎日保存する設定。
・cloudmonkeyでいじれるようにする。
・KVMハイパーバイザをguest.cpu.mode=host-passthroughに。どうせホスト1台だし。

いやぁ簡単に完了した。
メールをGmailにリレーしようとしたのだけど、これはもう少し様子見。
mbed LPC824のスイッチマトリックスはまだうまく行かん。

土日はvagrant,chef,ansibleを自宅クラウドで試したい。今後の生活に関わると思われるので。Windowサーバが厄介者だ。


ハマる

 ssci mbed LPC824でSPIを使おうとしている。
 使いたいのはwiznetのハードウェアネットワークチップ。

 手持ちのSPIデバイスで一番簡単なのはSPI SRAM 23K256。LPCXpresso824MAXで試したがダメ。なんか書き込んだ文字列が化けてる。LPC1768ではどうかと試したが同じ。これは23K256が壊れてるっぽい。同じような23LC512が手持ち在庫にあったので、こっちで試したらOK。LPCXpresso824MAXもOK。

 ではssci mbed LPC824ではどうよ。・・・ダメだ。しかもUSBでマウント元のUbuntu側も固まってしまって困る。

 一旦復旧作業。イカ醤油ポッポ焼きを再構築。
20150520_01

 これでさらに実験がやりやすくなった。

 多分SwitchMatrix_Init()の書き方が違うのだとは思う。

 Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_SWM);は使えないから
 どこかで見かけた LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7); にしてるのだけども824だとダメかな。


SwitchScienceのmbed LPC824復活

 先週SwitchMatrixの設定を替えてから動かなくなった上に、UbuntuからFirmwareの書き換えを試したら更に状況が悪くなったSwitchScience mbed LPC824。
動くソフトをISPで書き込めば戻るんじゃないかという思いで試してみた。

 確実に動くmbed_blinkyをISPで直接LPC824に焼くべくイカ醤油ポッポ焼きを使用。
LPC1768側のp28をSSCI mbed LPC824のP0_0(DIP的に16ピン)、p27をP0_4(DIP的に2ピン)に接続。mbed LPC824のP0_12(DIP的に25ピン)はGND。
この状態で双方のUSBコネクタをONにしてイカ醤油ポッポ焼き側にbinファイル書き込み。これでISP書き込みOK。リセット後にLPC824のLED1につないだLEDが点滅。

 あとはSSCI mbed LPC824をmbedたらしめているLPC11U35の復旧。最初にLPC824側がおかしくなった時には、LPC11U35のドライブにはFAIL.txt(ファイル名失念)みたいなファイルができてた。なにかおかしいのだろうとFirmwareをUbuntuから入れ替えたらその後はドライブが見えなくなった。でも、SSCI LPC824裏のショートするPADをショートして電源入れればCRP DISABLEDのドライブは見える。Ubuntude
そこのfirmware.binを削除してファームを保存して、CRP DISABLEDをumountして、SSCI LPC824をUSBから外して、5秒以上待ってUSB接続しても何も起こらない。
 試しにWindowsで同じファーム書き込みをしてみた。VirtualBOXのWindows8.1にて。・・・・なんだよ無事にmbedドライブがつながりましたよ。UbuntuとWindowsで何が違うのだろう?

 そもそもSwitchMatrixが原因で壊れたのかはわからないのだけども、ISPで直接プログラムを書き込んでしまえば治せる事がわかったので安心していじれるようになった。その際にLPC11U35側を疑っていじるのはやめておいたほうが良さそう。