ネットワーク経由で組み込みソフトのバグを修正する ――後からモジュールを追加できるITRON仕様OSの開発

原田雅章

tag: 組み込み

技術解説 2003年7月28日

2)フラッシュ・メモリ・ドライバ

 本開発では,対象機器のプログラムを記憶するメモリとして,プログラム自身で書き換え可能な不揮発性メモリを必要とします.ダウンロード機能の底辺には,この不揮発性メモリを書き換えるメモリ・ドライバが位置します.不揮発性メモリとしては,バッテリでバックアップされたSRAM,EEPROM,フラッシュ・メモリなどがあります.本開発では,現在多くの機器がROMデバイスとして使用しているフラッシュ・メモリを選択しました.

 この開発において,実際のシステムを止めることなくフラッシュ・メモリを書き換え,ソフトウェアをバージョンアップするには,この底辺のプログラム階層において以下のような泥臭いくふうが必要でした.

 フラッシュ・メモリ・デバイスは大別すると,NOR型(直接CPUのバスに接続し,RAMアクセス操作が可能),NAND型(専用コントローラを介してブロック転送しかできない)の2種類が存在します.通常,組み込み機器でプログラムを格納するROMとして使用可能なフラッシュ・メモリは前者になります.後者は主にオンチップ・ファイル用メモリとして使用することが想定されています.

 NOR型フラッシュ・メモリは,1バイト単位または1ワード単位でビット値を'1'から'0'へ書き換えることができるという特徴があります.一方,ビット値を'0'から'1'へ書き換える場合,いったんフラッシュ・メモリにセクタ単位で消去操作を行い,セクタ内の全ビットの値を'1'にする必要があります.この消去セクタのサイズはチップによって異なりますが,数Kバイトのサイズが一般的です(図11).初期のフラッシュ・メモリでは,書き込みや消去操作中にCPUから全チップの領域(バンク内のすべて)を読めなくなりました.このようなフラッシュ・メモリに対して消去・書き込みを行う場合,操作中はフラッシュ・メモリ・ドライバ・プログラムをいったんRAMにコピーして実行する必要があります.また,書き込み・消去の期間は割り込み禁止にする必要があります.しかし消去操作には1セクタ当たり1秒程度かかるため,システム動作をなるべく中断することなくダウンロードを実行したい場合には問題があります.

 これに対して,フラッシュ・メモリの操作に対する完了をポーリングし,クリティカルな割り込み要因が発生した場合はフラッシュ・メモリへの操作をいったん中断して優先処理を行う方法も考えられます.しかしダウンロード処理よりも何が優先するかはアプリケーション領域の問題です.多くの場合,ダウンロード処理を優先させることで解決するかもしれません.このように考えた結果,この方法を実装するかどうかは今後の検討課題としました.

 最近のフラッシュ・メモリではチップ内を複数のバンクに分割し,あるセクタに対して書き込みや消去操作を行っている期間でも,別バンクからデータを読み出せるチップが多くなってきています.本開発では,システム基幹機能(ベース・モジュール領域)とそれ以外の機能(ロード・モジュール領域)をフラッシュ・メモリの別バンクに配置するという方法で実装しました.この方法ならフラッシュ・メモリ・ドライバもフラッシュ・メモリ上で実行できます.

f11_01.gif
〔図11〕フラッシュ・メモリのレイアウト
NOR型フラッシュ・メモリの場合,ビット値を'0'から'1'に書き換えるには,消去セクタ内の全ビットに対していったんセクタ単位で消去操作を行う必要がある.なおバンクとは,同時操作が可能な単位を意味する.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日