- 公開日:2025年09月17日
- | 更新日:2025年10月03日
RH850ファミリ DataFlash活用のヒント 〜安全・確実な書き込み・消去運用のために〜
- ライター:粒良 真司
- マイコン
RH850ファミリ DataFlash活用のヒント 〜安全・確実な書き込み・消去運用のために〜
はじめに
近年、車載や産業機器向けマイコンにおいて、データ保持の信頼性や書き込み・消去の安定性がますます重要視されています。ルネサスエレクトロニクスのRH850ファミリに搭載されるDataFlashは、高い書き換え耐性と長期データ保持を両立するため、独自の工夫が施されています。本記事では、書き込み・消去の際に注意すべきポイントとDataFlashの安全な運用方法について解説します。
1. DataFlash書き込み・消去の基本的な考え方
DataFlashは、書き込みや消去の途中で電源断やリセットが発生すると、データの一貫性が損なわれる可能性があります。特に「部分的に書き込み/消去されたセル」への再書き込みは、データ保持の信頼性を低下させるため、必ず「完全に消去された状態」を確認してから書き込みを行う必要があります。
書き込み前の消去状態の確認 「ブランクチェック」の注意事項
書き込み対象となるワード(セル)が完全に消去されていることを、ユーザーアプリケーション側で管理することが推奨されています。ハードウェアの機能としてブランクチェック(blank check)がありますが、ハードウェアマニュアルにブランクチェックだけで完全消去であるかどうかを判断できない、という記述があります。この記述の背景は、ブランクチェックは対象セルの電圧がブランク判定電圧(詳細は非開示)以上か以下かを判断する機能だからです。
例えば、書き込み中に電源遮断等が発生した場合、「ブランクチェックの判定電圧以下であるが、途中まで書き込みされている」という状態が発生します。この状態のブランクチェックはpassを返しますが、このセルに再度書き込みを行った場合、データ保持の信頼性が損なわれます。
そのため、完全な書き込み/消去状態の管理はソフトウェアで行う必要があります。
2. 書き込みフローの設計例
書き込みフローの一例を紹介します。書き込み開始・完了を示すパターンデータを用いて、書き込みの途中で電源遮断等の意図しない中断の発生を判定し、データの信頼性を担保する方法です。
RH850ファミリのData Flashブロックサイズは64バイトです。この例では、48バイトのデータセットを書き込む場合の手法となります。
パターンライト方式の流れ
書き込み後のデータイメージは以下とします。
このデータイメージを書き込むための手順は以下の通りです。
- 書き込み開始時に「パターン1」(例:0xAAAAAAAA)を書き込む =このブロックを使用開始サイン
- 実データ(データ 1〜12)を書き込む
- 書き込み完了時に「パターン2」(例:0xAAAAAAAA)を書き込む =書き込み完了サイン
3. 読み出し時のデータ信頼性判定
前述で書き込んだデータの確からしさを判別する方法についてご紹介します。
データ1~12読み出し前に、パターン1、パターン2のブランクチェックを行い、書き込みフローが正常に完了しているかを確認します。
- パターン1のブランクチェック判定
「Fail」の場合 : パターン1はブランクではない=書き込み開始済みと判断し、パターン2のチェックへ進む
「pass」の場合 : パターン1はブランク、もしくはパターン1が初期段階で中断された可能性あり=データ1-12は消去状態(未書込み)と判断できるため、データ1-12のブロックは再消去することなく書き込み可能です。
- パターン2のブランクチェック判定
「Fail」の場合 : 書き込み完了済み。データ1~12は信頼性の高いデータとして読み出し可能を示しています。
「pass」の場合 : パターン1とパターン2の書き込み間に中断が発生したことを示しています。この場合、データ1~12は信頼できず、消去が必要です。
この判定により、読み出したデータが信頼性の高いデータであるか判断できます。
なお、パターン2が確実に書き込まれたことを判断する必要がある場合、Reserved領域にパターン3を書き込むことで実現可能です。
4. 消去フローの設計例
前述の通り、ブランク状態はクランクチェックからは判断できない為、当該ブロックの消去状況はブロック外部で維持する必要があります。書き込みフローで紹介したフローと同様に、開始・完了を示すパターンデータを用いて、ブランク状態を管理する方法をご紹介します。
ブランク管理方法
ブロック0を消去し、ブロック1でブロック0のブランク状態を管理する場合、消去後のデータイメージは以下となります。
- ブロック0消去開始前、ブロック1に「消去パターン1」(例:0xAAAAAAAA)を書き込む=ブロック0消去開始のサイン
- ブロック0を消去
- ブロック0消去後、ブロック1に「消去パターン2」(例:0xAAAAAAAA)を書き込む=ブロック0消去完了のサイン
これにより、消去操作が途中で中断された場合でも、次回起動時にパターンデータを参照して消去の成否を判定できます。
消去パターン1のみ存在し、消去パターン2がない場合、ブロック0消去は未完了を示しています。この場合は、再度この消去フローを実行する必要があります。
なお、消去パターン2の書き込み完了を確認するために「消去パターン3」を追加することで、データ保持性をさらに高めることができます。パターン3が存在すれば、パターン2の完全な書き込みが確認でき、ひいてはブロック0が完全に消去されたことが確認できます。
5.おわりに
RH850ファミリのData Flashを最大限に活用するためには、書き込みおよび消去状態を管理することが不可欠です。これらのデータ管理を厳密に行うことによって、より安全で信頼性の高いデータ保持を可能にします。本記事の情報が、皆様のシステム設計に役立ち、RH850ファミリをより有効に活用するための助けになると幸いです。