Integrated当ウェブサイトを利用することによりクッキーの使用に同意したことになります。このアプリケーションノートでは、内蔵のユーティリティROMを使用してMAXQ7665マイクロコントローラ(μC)のプログラムとデータフラッシュの消去/書込みを行う方法について説明します。この情報は、ページ消去可能な(PE)フラッシュを備えたMAXQ7665フラッシュベースのμCに適用されます。はじめにこのアプリケーションノートでは、ページ消去可能な(PE)フラッシュメモリを備えたMAXQ7665フラッシュベースのマイクロコントローラ(μC)における内部データとプログラムフラッシュの管理方法について説明します。この説明には、プログラムフラッシュのインアプリケーションプログラミング(IAP)を実行するための一般的な情報が含まれます。メモリマップこの項では、一般的なフラッシュの情報、およびMAXQ7665μCファミリのさまざまなメモリサイズについてのメモリ構成について詳しく説明します。MAX7665デバイスでは、3種類のフラッシュメモリが利用可能です。セクタ消去、単一ワード消去、および2ページ消去です。このアプリケーションノートでは、2ページ消去のデータフラッシュのPEフラッシュを備えたMAXQ7665デバイスのみを説明しています。この説明は、セクタ消去のみのデバイスや単一ワードの消去が可能なデータフラッシュを備えたデバイスには適用されません。MAXQ7665セクタ消去可能な(SE)デバイスの情報については、アプリケーションノート3575「MAXQ7665のセクタ消去可能なプログラム/データフラッシュのインアプリケーションプログラミング(IAP)」を参照してください。PEデバイスの情報については、アプリケーションノート3579「単一ワード消去のデータフラッシュを備えたMAXQ7665のページ消去可能な(PE)フラッシュのインアプリケーションプログラミング(IAP)」を参照してください。表1~表3は、プログラムフラッシュ、ユーティリティROM、およびデータSRAMからコードをそれぞれ実行するときの16KBデバイスのメモリマップを示します。図1と図2は、16KBと256Bのプログラムフラッシュのセクタとページの構造を図表にしたものです。これ以外のフラッシュオプションも利用可能です。全リストについては、MAXQ7665のデータシートを参照してください。256Bデータフラッシュのセクタ/ページ構造データフラッシュを使用してデータを保存フラッシュを使用すると、システムの動作中に一度だけ、または定期的にプログラムする必要のあるシステムデータを確実に保存することができます。EEPROMとは異なり、MAXQ7665のPEフラッシュはバイト/ワード消去することができません。一度に2ページを消去する必要があります。これには通常、10msかかりますが、ワーストケースの状態ではさらに長くかかることがあります。この間、ユーザコードは停止状態となるため、その他の処理を行うことはできません。データをフラッシュに保存するには複数の手法があり、アプリケーションに適切な方法を選択するときには、いくつかの要因を考慮する必要があります。その必要がある場合、新しいデータが書き込まれるときに現在のデータが失われないようにするため、何らかのバンクスイッチング手法が必要となります。消去/書込みのサイクル数がデータシートに規定された最大値を超える場合、制限キュー手法を使用し、データフラッシュの複数ページにわたってこれらのサイクルを分散させることによって、消去/書込みの総サイクル数を大幅に増大させることができます。定期的にデータの保存が必要なニーズでは、ほとんどの場合、バンクスイッチングや制限キューの手法によってシステムの信頼性要件と要求を満たすことができます。各手法の簡単な例を以下に示します。バンクスイッチングバンクスイッチングは、消去/書込みサイクルの間の、データの消失や破損を防止する効果的な方法です。この方法は、少なくとも1つのデータコピーを常に保持することによって有効に機能します。バンクスイッチングのマイナス点は、制限キュー手法に比べて2倍のデータフラッシュを必要とするという点です。バンクスイッチングは、実際にはキューサイズが2の制限キュー手法になります。したがって、詳細については、制限キューの実装方法に関する次項を参照してください。制限キューは、一定の項目数によって制限されたキューであり、通常、定期的にデータを処理するときに必ず使用されます。制限キューは、所望のデータブロックサイズに等しい、「エントリ」の固定長キューを作成することによって構成されます。エントリサイズはアプリケーションに固有な値です。近いページ消去の境界に切り上げる必要があります。注:消去することのできる最小サイズは2ページ/ワードです。データフラッシュは、アプリケーションの要件に応じて、さまざまな方法で分割することが可能ですが、データフラッシュには2ページ消去の制限があるため、エントリは2ページの倍数に限定されます。16のデータフラッシュは16ワードの32エントリに分けることが可能であり、結果として、表4のようなメモリマップになります。初期化後、起動ルーチンでキューエントリをスキャンすることで、次に利用可能なキュー内のエントリを知ることができます。キューがいっぱいになると、先頭に戻ることが可能です。データフラッシュのエントリの消去が完了すれば、新しいエントリを書き込むことができます。図3は、制限キュー内のエントリのフローを示しています。簡単なCのソースコード例については、付録Aを参照してください。(読取り専用メモリ)内にオンチップフラッシュのサポートルーチンが用意されています。これらのルーチンにアクセスするには、2つの方法があります。直接アクセスとルックアップテーブルによる間接アクセスです。最速の方法は直接アクセスであり、ルーチンをじかに呼び出します。これを実行するには、以下に示す行にヘッダファイルを設けます。dataFlashEraseAll(void);次に、リンカ定義を追加して、各ルーチンに適切なアドレスを割り当てますIARリンカのファイルの場合、追加された行は、次のようになります。-DflashEraseSector=0x8XXX-DflashErasePage=0x8XXX-DflashEraseAll=0x8XXXルーチンごとに0x8XXXを適切なメモリアドレスに置き換えます。他のコンパイラは、これらのリファレンスを追加するのに別の手法を使用する場合があります。flashWrite()ユーティリティルーチンは、引数の引渡しがC言語に適していないため、Cからじかに呼び出すことはできません。以下に示すような小さなアセンブリルーチンを記述する必要があります。注:直接アクセス手法では、今後のROMバージョンとの上位互換性は確保されません。第2の方法は、テーブル参照を用いた間接アクセスです。この手法は、今後のROMバージョンとの互換性に優れていますが、実行時間が長くなります。以下に示す各ルーチンの後、アセンブリルーチンは、テーブル参照方法を使用して、ROMユーティリティルーチンのアドレスを取得します。表5は、ユーティリティROMが供給するフラッシュルーチンを示します。ユーティリティのROMルーチンの全体リストについては、MAXQ7665のユーザガイドを参照してください。プログラムフラッシュメモリの単一ページ(32ワード)をプログラムします。キャリー:エラー時にセットされ、成功時にクリアされます。セットされた場合、A[0]には、以下のエラーコードの1つが含まれます。サポートされていないコマンドSW_FERR—エラー時にセットされ、成功時にクリアされます。ウォッチドッグを有効にしないでください。ウォッチドッグのタイムアウトを十分に長く設定することによって、リセットが起動されることなくこのルーチンが完了するようにしてください。以下のアセンブリコードの例では、間接アドレス指定の手法(ルックアップテーブル)を使用してflashWrite()ユーティリティルーチンを呼び出しています。このルーチンはCコードで呼び出されます。プログラムフラッシュメモリの2ページブロックを消去します。A[0]—消去する2ページブロック(すなわちページ0とページ1)に位置付けられたアドレス。A[0]には、0x0000~0x001Fの任意のアドレスを記入することができます。キャリー:エラー時にセットされ、成功時にクリアされます。セットされた場合、A[0]には、以下のエラーコードの1つが含まれます。サポートされていないコマンドSW_FERR—エラー時にセットされ、成功時にクリアされます。ウォッチドッグを有効にしないでください。ウォッチドッグのタイムアウトを十分に長く設定することによって、リセットが起動されることなくこのルーチンが完了するようにしてください。プログラムとデータのフラッシュメモリ全体を消去します。このルーチンはRAMからのみ呼び出すことができます。キャリー:エラー時にセットされ、成功時にクリアされます。SW_FERR—エラー時にセットされ、成功時にクリアされます。ウォッチドッグを有効にしないでください。ウォッチドッグのタイムアウトを十分に長く設定することによって、リセットが起動されることなくこのルーチンが完了するようにしてください。フラッシュメモリの単一ワードを読み出します。DP[0]—フラッシュメモリ内のソースアドレス。GRは、指定したアドレスにデータが含まれます。この関数は、引数と戻りのレジスタがCの呼出し仕様に適合していないため、Cからじかに呼び出すことはできません。以下のアセンブリコードの例では、moveDP0をCで呼出し可能なルーチンに変換しています。アプリケーションで速度が必須となる場合は、特定のタスクに合わせて、カスタムのアセンブリ言語ルーチンを記述する必要があります。このようなユーティリティROMルーチンがいくつかあり、フラッシュからの効率的なデータ転送を記述する場合に役立ちます。プログラムフラッシュメモリの単一セクタを消去します。キャリー:エラー時にセットされ、成功時にクリアされます。セットされた場合、A[0]には、以下のエラーコードの1つが含まれます。サポートされていないコマンドSW_FERR—エラー時にセットされ、成功時にクリアされます。ウォッチドッグを有効にしないでください。ウォッチドッグのタイムアウトを十分に長く設定することによって、リセットが起動されることなくこのルーチンが完了するようにしてください。データフラッシュメモリの単一ワードをプログラムします。キャリー:エラー時にセットされ、成功時にクリアされます。セットされた場合、A[0]には、以下のエラーコードの1つが含まれます。サポートされていないコマンドSW_FERR—エラー時にセットされ、成功時にクリアされます。ウォッチドッグを有効にしないでください。ウォッチドッグのタイムアウトを十分に長く設定することによって、リセットが起動されることなくこのルーチンが完了するようにしてください。以下のアセンブリコードの例では、間接アドレス指定の手法(ルックアップテーブル)を使用してdataFlashWrite()ユーティリティルーチンを呼び出しています。このルーチンはCコードで呼び出されます。データフラッシュメモリの2ページを消去します。A[0]—消去する2ページブロック(すなわちページ0とページ1)に位置付けられたアドレス。A[0]には、0x4000あるいは0x4001のアドレスを記入することができます。キャリー:エラー時にセットされ、成功時にクリアされます。セットされた場合、A[0]には、以下のエラーコードの1つが含まれます。サポートされていないコマンドSW_FERR—エラー時にセットされ、成功時にクリアされます。ウォッチドッグを有効にしないでください。ウォッチドッグのタイムアウトを十分に長く設定することによって、リセットが起動されることなくこのルーチンが完了するようにしてください。データフラッシュメモリの単一セクタを消去します。キャリー:エラー時にセットされ、成功時にクリアされます。セットされた場合、A[0]には、以下のエラーコードの1つが含まれます。サポートされていないコマンドSW_FERR—エラー時にセットされ、成功時にクリアされます。ウォッチドッグを有効にしないでください。ウォッチドッグのタイムアウトを十分に長く設定することによって、リセットが起動されることなくこのルーチンが完了するようにしてください。データフラッシュメモリ全体を消去します。キャリー:エラー時にセットされ、成功時にクリアされます。SW_FERR—エラー時にセットされ、成功時にクリアされます。ウォッチドッグを有効にしないでください。ウォッチドッグのタイムアウトを十分に長く設定することによって、リセットが起動されることなくこのルーチンが完了するようにしてください。retインアプリケーションプログラミング(IAP)フラッシュを用いたほとんどのシステムで重要となる要件は、システムが最終製品にインストールされている間にファームウェアをアップデートする機能です。このプロセスは、インアプリケーションプログラミング(IAP)と呼ばれます。この項では、IAPアプリケーションを作成するための一般的なガイドラインの概要を説明します。上述のユーティリティROMフラッシュのルーチンがフラッシュROMの消去と書込みに必要なすべての動作を実行します。これによって、エンドユーザのアプリケーションがフラッシュメモリに対する操作を行えるようになります。他のサブルーチンの呼出しと同様、ルーチンが完了すると制御はエンドユーザのコードに戻ります。信頼性の高いIAPを実現するには、ブートローダアプリケーションをメインのアプリケーションから分離する必要があります。することで、再プログラミングシーケンスが完了しなかった場合に再プログラミング手順を確実に再試行することが可能になります。ブートローダROMは初期化後、アドレス0x0000にジャンプします。したがって、ブートローダアプリケーションのエントリポイントは0x0000に配置する必要があります。ブートローダアプリケーションは、フラッシュのセクタ/ページを必要な数にまで拡張することが可能ですが、使用済みのいずれのページも、ユーザのアプリケーションコードで利用することはできません。フラッシュの消去と書込みを行うときに満たさなければならない特定の要件を表6に示します。フラッシュユーティリティROMのルーチンを呼び出す場合の要件コードを実行しているフラッシュページと同じフラッシュページから消去またはプログラムすることはできません。これは通常、問題にはなりません。フラッシュのブートローダアプリケーションはIAPの間に決して消去してはならないからです。ウォッチドッグを有効にしないでください。ウォッチドッグのタイムアウトを十分に長く設定することによって、flashEraseSector()またはflashErasePage()のルーチンを呼び出す前に、リセットが起動されることなくこのルーチンが完了するようにしてください。消去が完了する前にウォッチドッグのタイムアウトが発生すると、製品がリセットされます。ユーティリティROMにアクセスするためには、システム制御レジスタビットSC.UPAを0に設定する必要があるため、0x8000あるいはこれよりも上位のプログラムメモリからじかにユーティリティROMルーチンを呼び出すことはできません。0x8000)に置かれたルーチンを通してROMルーチンを間接的に呼び出す必要があります。16)に制限されます。図4のフローチャートは、リセット状態から抜け出したときのMAXQ7665の動作を示しています。ROMそのものを診断し、フラッシュの準備が完了していることを確認した後、ROM初期化コードは、直ちにアドレス0x0000にジャンプします。簡易ROM初期化のフローチャート図5のフローチャートは、簡易ブートローダアプリケーションの機能を示しています。簡易アプリケーションのヘッダは、次のようになります。APPLICATION_HEADER;このヘッダの情報を使用することによって、ブートローダは、要求がある場合に、メインアプリケーションプログラムの妥当性を検査し、バージョンの識別番号を報告することができます。簡易フラッシュブートローダのフローチャートプログラミングのシーケンスそのものは非常に簡単です。flashEraseSector()やflashErasePage()の呼出しを通じてメインアプリケーションコードを含む各セクタ/ページを消去します。次に、プログラムする必要のある32ワードごとにflashWrite()を呼び出すことによって、一度に1ページを書き込みます。CRC照合の誤る可能性を最小限にするため、アプリケーションヘッダを格納するページを最初に消去し、CRCデータを最後にプログラムするようにしてください。シリアルポートを経由してデータを取得するマイクロコントローラをリフラッシュするための極めて簡易なルーチンは、次のようになります。EE-Mail配信の登録申し込みをして、興味のある分野の最新ドキュメントに関する自動通知を受け取る。Inc.このウェブサイトのコンテンツは米国および各国の著作権法によって保護されています。お問い合わせください。totalPrice.value}}保存して後で見る​削除{{else}}購入カートには何も入っていません。無料サンプル​削除{{else}}サンプルカートには何も入っていません。{{else}}購入カートには何も入っていません。注文履歴を見るサンプルカートには何も入っていません。注文履歴を見る{{/each}}×ブックマークブックマークを利用するにはログインが必要です。MAXIMお知らせツールをクリックおよびドラッグしてダッシュボードをカスタマイズすることができます。>ご質問/ご意見をお寄せください。見積もり請求をご検討くださいx注意お客様のアカウントに制限がかけられているためご注文をお受けすることができません。カスタマーサポートまでご連絡ください。申し訳ありませんが、このサイトではビジネス/教育と関係のないEメールアドレスからのサンプル請求は受け付けておりません。マキシムの代理店マキシムにご興味をお持ちいただきどうもありがとうございます。x注意マキシム・インテグレーテッドにご興味をお持ちいただきどうもありがとうございます。マキシムの無料サンプルプログラムは、暦年につきお客様に提供できる数量を限らせていただいております。誤ってこのメッセージをお受け取りになった場合はsamples-admin@maximintegrated.comまでご連絡ください。distributorData.coreStaff.stockValue}}{{distributorData.coreStaff.stockValue}}{{/if}}価格は代理店のサイトにあります。製品IDを選択して、はじめてください。閉じるお客様の見積もり請求にお応えするためには以下情報が必要です。できるだけ詳しくお答えください。見積もり請求を送信キャンセルお客様の見積もり請求が送信されました。価格と入手性について24時間以内にお答えします。全カテゴリ最近行った。