Asagaoに水やり

私は少し古い版を使っている.最新版では改善されているものもあるかもしれない.

AT45DB161D対応

同じSPIフラッシュだし,軽くイケるだろーと思ったらドツボ.

このフラッシュ,DataFlashとかいうラインナップで,ページ長が512バイトと528バイトのどちらかを選べる.そのせいで,アドレッシングで混乱しやすい.マーフィーの法則によれば,そういうときに真っ先に混乱するのはデータシートの記述だそうだ.不幸なことに法則的中.

1ページ目は確実に書けるのに2ページ目からは確実に書けない,という解り易い症状だったので,アドレス指定に問題があるということは早期に解ったのだが,その先が長かった.


Asagaoが得意なM25Pシリーズとは命令セットが少なからず違う上に,書込みのシーケンス若干違うので,本家Asagaoにマージする前に,かなり手を入れないとダメかもしれない.

高速化

for ループでコピーしている部分を Array.Copy() に変えると,微妙に高速化可能.その他,Enumerate系が使えそうな箇所がいくつかある.
フラッシュの容量に比べて書込む量が少ない場合に,途中でループを抜けるという簡単なコードを入れてみた.結構効く感じ.