引き続き調査していたのですが、NVMドライバにバグが有りました。

症状についておさらいです。ファイル書き込みを実行するとセクタ書き込みの関数が呼び出されてセクタ単位の読み込み、セクタを読み込んだバッファに対しての変更(ファイル書き込み時の値を書き込む)、セクタ消去とセクタ書き込みを実行します。その後処理が進むと1セクタ余分な消去が発生していました。では問題の箇所です。

drv_nvm.cの548行目

bufferObj->nbytes = bufferObj->nbytes;

とありますが、(恐らく)以下が正しいです。

bufferObj->nbytes = bufferObj->nbytes + DRV_NVM_PAGE_SIZE;

これで正しく動作するのが確認できました。この修正でほんとうに正しいのか設計者でないのでわからないですが、恐らくこれで良いはずです。drv_nvm.cをベースに変更したSPI Flashドライバも今まで起きていた症状が解決しました。