フラッシュロムはバグの巣窟

2020年2月3日バグの巣

フラッシュロムはバグの巣窟

組み込み系のソフトウエアでは何等かの形でフラッシュロムへのアクセスが必要になる場合がよくあります。アプリケーション層のソフトウエアを開発している場合には、フラッシュロムという事を意識せずにアクセスしている場合もあるかも知れません。しかし、電源がオフになった後も値を記憶しているような領域(二次記憶と呼ぶ事もあります)を使っていてそれがハードディスク(HDD)でなければ、殆どはフラッシュロムへのアクセスと考えても問題無いでしょう。

そしてこのフラッシュロムには、実はいろいろな落とし穴というか使用する上での注意点があって、そのような箇所にはバグが寄ってきます。結果として、フラッシュロムに関わるバグは件数が多くなるので、フラッシュロムはバグの巣窟となってしまうのです。この記事ではフラッシュロムを扱う時に注意しておいたほうが良い事を紹介ましょう。

フラッシュロムって何でしょう

ところでフラッシュロムって何でしょう? フラッシュメモリと呼ばれる事もありますが、英語で書くと Flush ROM となりま。 ROM と名前が付いているので Read Only memory つまり読み出し専用のメモリで、書き換えが可能なROMの中の1つが Flush ROM です。書き換え可能で読み出し専用のメモリ、、、読み出し専用という事は書いてはダメ、でも書き換え可能だから書いても良い・・・はい、なんか日本語の意味が解らなくなってきましたね。

実は、フラッシュロムはこの名前に表されるように、実体としても結構意味の解らないような感じのする素子なので、ここにもバグが寄ってくる理由があります。電源を切っても情報を覚えているのがROMなのですが、フラッシュロムは日数が経つと情報が消えてしまいます。で、色々な悪い条件が重なると数日で情報が消えてしまう事も起こります。それ、ROMと呼んでいいのか? と思わず突っ込みたくなるような状態も起こり得ます。

ところでROMって何でしょうか? ROMというのは実はRAMという言葉と対になるメモリ素子の種類を表す単語です。 ROM が Read Only Memory読み出し専用メモリ、RAM が Random Access Memory読み書きできるメモリの事です。

この ROM と RAM という大きな括りの中に、色々な種類のメモリがあります、この辺りの状況については、別の記事で整理しようと思います。ここでは、フラッシュロムは読み出し専用だけど書き込みもできるちょっと変わったメモリ素子だという事だけ、頭の片隅に覚えておいてください。

ところで、フラッシュロムというのがメモリ素子の種類を表す名前です。そして、このフラッシュロムというメモリ素子を使った部品には、 SDカードとか最近のPCによく使われている SSD (Solid State Drive) 等もあります。つまり SDカードやSSDの中にはフラッシュロムが入っているという事ですね。ですので SDカードや SSD も広い意味ではフラッシュロムなのですが、SDカードやSSDは内蔵されているコントローラICを通してフラッシュロムにアクセスする事になるので今回は除外しておき、この記事ではフラッシュロム素子を直接アクセスする場合の注意点について紹介します。