2016年12月31日土曜日

2016年を振り返って

早いもので、2016年から2017年に突入しようとしている

いろいろなことがあった。

まずは「Amis!
これは、温湿度・デジタル入力変化をトリガーにメール通知(今はSlackに移行)するもの。
DD-Wrt化したBuffaloルーターに
・ARMクロスコンパイル環境の構築
・USB内臓PICの接続
・Node.jsを使ったメール通知
・iModelaにて基板切削
を行った。

次に「FON2405E拡張(シリアル通信)
まだ実験段階だけど。
・下準備のためにラズベリー・パイのカーネルコンパイルやGPIO操作、ドライバ作成
・RalinkSDKを使用して上記を移植
・OpenWrtのtftpboot
を行った。
OpenWrtを入れるためにSPIFlashの載せ替えをするところで、年末を迎えてしまっていた。

その他
・Electronを使う機会もあり、簡易的なGUI環境を作れるようになった。
 なんとなくJSを使う機会が増えたね。
・git(gogs)をいろいろ使い始めた
・親友が地元に戻り、実家を継いだ。 そして、結婚した。
・投資は目標クリア! 来年も頑張ろう
上半期は仕事が落ち着いていたので、安定的に時間をとれた気がする。
下半期は、忙しくて、なかなか時間が取れなかったかな。
でも、なんとか時間を確保して少しずつ前進できたと思う。

来年も引き続き家庭も仕事も充実するといいな。
ブログ的には
・目標探し
・楽しい教育
・投資を戦略的に行う
・「巨人の肩に乗る」
・「ググるよりもググられたい」
かな。

ちなみに年初の目標は
 ・Electon(NW.jsもか)を使った開発   → ×
 ・PICマイコンを使った開発をもっと行う → ○
・投資も頑張る             → ◎
といった感じ。

2016年12月25日日曜日

ラズベリー・パイでSST26VF032の読み書き

11月の末頃にFONのフラッシュ容量拡張のために
SST26VF032Bを入手した。 
microchipのオンラインストアから注文できるし、3日程度で到着した気がする。
しかし、そのまま交換してもフラッシュに書き込みができなかった。Orz

注意
 SST26VF032はSPIモードでの書き込みに対応していないので、「B」有りが必要。
http://www.microchip.co.jp/support/faq_sst-fm.html
このあたりをあまり気にせずに購入していた。危なかった。。。

基礎知識
をあまり持っていなかったので、他の型番の日本語のデータシートなどを読んで雰囲気を学習
http://www.onsemi.jp/pub_link/Collateral/ENA2097JP-D.PDF
http://japan.xilinx.com/xcell/xl55/jp55xcell_13.pdf


そしてSST26VF032Bについて
・データシート
http://ww1.microchip.com/downloads/jp/DeviceDoc/jp566514.pdf
 ・サンプルプログラム
http://www.microchip.com/wwwproducts/jp/SST26VF032B
 →末尾のソフトウェア

初期化
Quad I/Oとか特殊なものを使わないのであれば、初期化すべき項目は少ないと思う。
01H WRSRでIOCとWPENの設定くらい
JEDEC-IDを読んで対象のデバイスかどうかを確認しておく

読み込み方法
03H Readですんなりと読み出すことができる

書き込み方法
一番手こずった
PinのWriteProtectや06H WREN、そしてBlockProtectなんてものもあるOrz
最後のBlockProtectを失念していたために半月くらい悩んだ。
前述のサンプルプログラムを最初から見ておけばよかった。
こんな流れ
1.06H WREN WriteEnable
2.42H WBPR BlockProtection解除
3.02H PP PageProgram
4.05H RDSR BUSYチェック

こんな感じ。


2016年12月8日木曜日

FON2405E カスタムファーム用のドライバ開発

前回、準備としてなんちゃってドライバを作成して、insmodするところまでいけた。
次は自力シリアル通信ドライバを作成(ラズベリー・パイ用に作った奴の移植)をしてみる。



1.概要
ドライバ名はMy2nd(まだ名称が決まってないOrz)コードは末尾に記載。
Makefileは前回からドライバ名のみ変更した。


2.導入
nfsマウント
mount -o nolock 10.10.10.3:/var/lib/tftpboot /mnt
insmodしてみる

メッセージのメジャー番号が253 マイナー番号が0が重要で、コレがないと/dev/●●が作成できない。
カーネルのバージョンがアレなので、手動でスペシャルファイル?を作成する必要がある。
mknod /dev/My2nd0 c 253 0
とするとMy2nd0というデバイスファイルが作成できる。

3.テスト
 作成したMy2nd0に対してechoで文字列を送ってみる。
 echo -n HelloWorld!! > /dev/My2nd0

するとPIC側のコンソールに表示される。

やったーうまくいった!

4.コード
こんな感じ