Asagaoに水やり
私は少し古い版を使っている.最新版では改善されているものもあるかもしれない.
AT45DB161D対応
同じSPIフラッシュだし,軽くイケるだろーと思ったらドツボ.
このフラッシュ,DataFlashとかいうラインナップで,ページ長が512バイトと528バイトのどちらかを選べる.そのせいで,アドレッシングで混乱しやすい.マーフィーの法則によれば,そういうときに真っ先に混乱するのはデータシートの記述だそうだ.不幸なことに法則的中.
1ページ目は確実に書けるのに2ページ目からは確実に書けない,という解り易い症状だったので,アドレス指定に問題があるということは早期に解ったのだが,その先が長かった.
Asagaoが得意なM25Pシリーズとは命令セットが少なからず違う上に,書込みのシーケンス若干違うので,本家Asagaoにマージする前に,かなり手を入れないとダメかもしれない.
高速化
for ループでコピーしている部分を Array.Copy() に変えると,微妙に高速化可能.その他,Enumerate系が使えそうな箇所がいくつかある.
フラッシュの容量に比べて書込む量が少ない場合に,途中でループを抜けるという簡単なコードを入れてみた.結構効く感じ.