バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカード、FatFsとやってきたシリーズの振り返りとまとめ。
とりあえず最終回。
NAND-FlashRom、SDカード(SPIモード、SDモード)、FAT FileSysteのシミュレーションなどをやってきた。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
振り返り
というわけで、やりたいことはあらかたやり切ったってところだ。
うーん、今回含めて133回かー。
長かったなー。
このシリーズでやったことは大体以下だったね。
- 不揮発性メモリ
- SD初期化(SPIモード)
- SD初期化(SDモード)
- SD読み書き(SPIモード)
- SD読み書き(SDモード)
- SD応答向上仕様
- FatFs メモリ上シミュレーション
- FatFs ファイル上シミュレーション
- SDカードディスクイメージ
- SDカード直接制御
不揮発性メモリに始まり、
SDカード関連の物理層の話や大量のコマンドの話。
さらに性能を最大限に引き出すための手法。
それが終わったかと思ったら、まだ全然目的に到達してないくて、
FatFsのシミュレーション。
シミュレーションもメモリ上だけでなくファイル上でやって、
そのファイルをバイナリエディタで直接参照してFAT32仕様を追っかけて・・・。
最後はSDカードを直接読み書きしたり、パーティションきっちゃったり。
SDカードとFileSystemでシリーズを分けた方が良かったかもねー。
それぞれが結構なボリュームあったし。
感想とか
感想としてはどう?
まぁいままでも何回か言ってたことだけど、
当たり前のことの裏側には結構大変な仕組みがあるんだなーって思ったねー。
あと、SDカード仕様自体はNAND-FlashRomを抽象化してくれるんだけど、
性能を最大限に引き出そうと思うとやっぱりNAND-FlashRomの性質を考慮しないといけないってもの意外だったな。
まぁNAND-FlashRomへのアクセス速度と汎用性はトレードオフなところあるからねー。
FatFsのシミュレーションは新鮮だったかな。
ファイル操作とかはよくやるけど、FileSystemを意識してのファイル操作なんて考えたこともなかったから、
これこそ裏方の凄さってを感じた。
FileSystemは「利用者から如何に見えないように動作するか」がポイントだから
普通は意識しないだろう。
今回は、それを意識しないと動作しないんで意識せざるを得ない状況になったってところだね。
最後にやったFatFsでSDカード直接制御。
あんまり意味ないってことだったけど、
WindowsからFATでフォーマットする際に自由に選べなったじゃん?
実際はFAT12/16/32とexFATがあって、
あと、それぞれAllocation Unitとかもあるけど、そこらへんが選べないんだよね。
FatFsだと自由に選べるから、Windowsに頼らないフォーマットをしたいってことであればかなり有効なのかなって思った。
なるほど!
言われてみるとそうだね。
WindowsではなくLinuxからフォーマットって手もあるけど、
Windowsから簡単に目的のフォーマットをする場合などは今回の手法がかなり使えるかもしれないね。
元々はプロトタイプECUで大容量の記憶デバイスが必要ってことで始まったけど、
なんとかなりそうな気はしてきたよー。
まぁ応答性とかはトレードオフなところはあるから、適時調整は入りそうだけど。
記憶デバイスのWindowsとの相互運用性を考えるとFAT仕様は便利だからねー。
安定的に動作し始めたらデバッグ用途にも使えると思うよー。
確かに!
よし!
いろいろ試してみるよー。
頑張れー。
まとめ
まとめだよ。
- 今回が本シリーズの最終回。
- SDカード、FileSystemのそれぞれだけでも結構なボリュームだった。
- SDカード直接制御のフォーマットはWindows上からのフォーマットの自由さを得るのに有効な場合がある。
- FileSystemはWindows等の他のシステムとの相互運用性確保に便利。
バックナンバーはこちら。
コメント