(57)【特許請求の範囲】
【請求項１】
エンディアンの切り替えが可能なプロセッサと、
エンディアン情報が格納される不揮発メモリと、
プロセッサリセットがアサートされているときに前記不揮発メモリに格納されたエンディアン情報を読み出すデータ転送回路と
を含み、
前記データ転送回路はそのエンディアン情報を前記プロセッサに供給し、
前記プロセッサは、前記プロセッサリセットのアサートが解除された後に、前記データ転送回路から出力されたエンディアン情報により特定されるエンディアンで動作を開始し、
前記プロセッサリセットとともに内部リセットがアサートされているとき、前記プロセッサのリセットが行われ、前記内部リセットのアサートが解除されると前記データ転送回路は前記エンディアン情報を読み出す、マイクロコンピュータ。
【請求項２】
前記不揮発メモリは、第１の動作モードで実行されるプログラムおよび第１のエンディアン情報が格納される第１のマットと、第２の動作モードで実行されるプログラムおよび第２のエンディアン情報が格納される第２のマットとを含み、
前記データ転送回路は、前記プロセッサのリセット解除前に、動作モードに応じて前記第１のマットまたは前記第２のマットに格納されるエンディアン情報を読み出して前記プロセッサに設定する、請求項１記載のマイクロコンピュータ。
【請求項３】
前記データ転送回路は、前記動作モードに応じて、前記第１のエンディアン情報が格納されるアドレスと前記第２のエンディアン情報が格納されるアドレスとのいずれかを選択的に出力する選択手段と、
前記選択手段によって選択されたアドレスから読み出されたエンディアン情報を保持し、前記プロセッサに出力する保持手段とを含む、請求項２記載のマイクロコンピュータ。
【請求項４】
前記不揮発メモリは、第１の動作モードで実行されるプログラムおよび第１のエンディアン情報が格納される第１のマットと、第２の動作モードで実行されるプログラムおよび第２のエンディアン情報が格納される第２のマットとを含み、
前記データ転送回路は、前記プロセッサによるアクセスが、前記第１のマットから前記第２のマットに切り替わるか、前記第２のマットから前記第１のマットに切り替わるのを検出して、前記第１のマットまたは前記第２のマットに格納されるエンディアン情報を読み出して前記プロセッサに設定する、請求項１記載のマイクロコンピュータ。
【請求項５】
前記データ転送回路は、前記プロセッサによるアクセスが、前記第１のマットから前記第２のマットに切り替わったとき、または前記第２のマットから前記第１のマットに切り替わったときに、前記第１のエンディアン情報が格納されるアドレスと前記第２のエンディアン情報が格納されるアドレスとのいずれかを選択的に出力する選択手段と、
前記選択手段によって選択されたアドレスから読み出されたエンディアン情報を保持し、前記プロセッサに出力する保持手段とを含む、請求項４記載のマイクロコンピュータ。
【請求項６】
前記データ転送回路がそのエンディアン情報を前記プロセッサに供給した後に、前記プロセッサリセットのアサートが解除される、請求項１記載のマイクロコンピュータ。
【請求項７】
プロセッサリセットがアサートされているときに前記データ転送回路は前記エンディアン情報の格納場所を特定するアドレスを出力して前記エンディアン情報を読み出す、請求項１記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Central Processing Unit）とその周辺回路とを含んだマイクロコンピュータに関し、特に、エンディアン（ビッグエンディアン、リトルエンディアン）の選択機能を有するマイクロコンピュータに関する。
【背景技術】
【０００２】
近年、マイクロコンピュータは多種多様な用途に使用されるようになってきており、その機能も多様化してきている。そのようなマイクロコンピュータの機能と１つとして、ＣＰＵの動作モードであるバイトデータの配置、いわゆるエンディアンの選択機能を挙げることができる。
【０００３】
従来、マイクロコンピュータでのデータ等のエンディアンはリトルエンディアンまたはビッグエンディアンのどちらかに固定されており、両エンディアンどちらでも動作可能なマイクロコンピュータでのエンディアンの選択は外部端子によって行なわれ、ユーザが予め外部端子をいずれかに設定しておくものがあった。また、ＣＰＵが動作中にエンディアンモードを変更するものもあった。これに関連する技術として、下記の特許文献１〜３に開示された発明がある。
【０００４】
特許文献１は、１つのコンピュータシステムで異なる情報形式を有するタスクをサポートする、混合エンディアンコンピュータシステムの提供を目的とする。従来の２エンディアンコンピュータシステムの機能を高め、コンピュータシステムにそのエンディアンモードを動的に変更することを可能にする混合エンディアン回路を備えるようにする。混合エンディアンコンピュータシステムは、必要なら、タスク毎にエンディアンモードを変更できる。混合エンディアン回路は、タスクが大エンディアンフォーマットまたは小エンディアンフォーマットのデータを期待するかどうかに関係なく、実行中のタスクが期待する形式で自動的にデータをフォーマット化する。混合エンディアン回路はまた大エンディアン命令または小エンディアン命令が同じコンピュータシステムで実行できるようにそれらをフォーマット化する。
【０００５】
特許文献２は、エンディアンの異なる複数のオペレーティングシステムを同一計算機上で並行して実行することを目的とする。リトルエンディアンのオペレーティングシステム実行中にビッグエンディアンが処理すべき割り込みが入るとハードウェア依存部がビッグエンディアン宛であることを判別し、ＣＰＵのエンディアンを切り替えた後、ビッグエンディアンの割り込みハンドラにジャンプする。
【０００６】
特許文献３は、本来リトルエンディアンデータしか処理できないマイコンで、応用によりビッグエンディアンデータの処理が必要であり、しかもビッグエンディアンの処理性能を、リトルエンディアンのそれと比べ劣化させたくないといったことを目的とする。エンディアンを識別するためのアドレス空間判定器と、その判定の結果に従いデータのエンディアンを切り替えるバイトアライナーを含む構成をなす。第１に、システムにおいて二つのエンディアンのデータおよび装置を両立する。第２に、データ長にかかわらず、いずれのエンディアンのデータでも同じ速度で高速に転送できる。第３に、エンディアン判定が容易である。アドレス空間毎にエンディアンを固定して割り当てているため、アドレス情報のみからエンディアンを高速に識別できる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０８−２７８９１８号公報
【特許文献２】特開２０００−２３５５０３号公報
【特許文献３】特開平０９−０９７２１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
マイクロコンピュータは、同一のＬＳＩ（Large Scale Integrated circuit）であっても、多ピンパッケージから少ピンパッケージまで幅広く製品が展開されている。特に、少ピンパッケージにおいては、ユーザからできる限り多くの使用可能なピンを残したいといった要望がある。したがって、エンディアンを選択する外部端子を削除して、ユーザが使用可能なピン数を増やす方が望ましい。
【０００９】
また、マイクロコンピュータ内部でエンディアンを固定している場合には、たとえ両方のエンディアンをサポートしていたとしても、ユーザが変更することができない。
【００１０】
本発明は、上記問題点を解決するためになされたものであり、その目的は、エンディアンを選択するための外部端子を削減することが可能なマイクロコンピュータを提供することである。
【課題を解決するための手段】
【００１１】
本発明の一実施例によれば、エンディアンの切り替えが可能なプロセッサを含んだマイクロコンピュータが提供される。フラッシュメモリは、ユーザブートモードで実行されるプログラムおよびそのエンディアン情報が格納されるユーザブート領域と、ユーザモードで実行されるプログラムおよびそのエンディアン情報が格納されるユーザ領域とを含む。データ転送回路は、ＣＰＵのリセット解除前に、動作モードに応じてユーザブート領域またはユーザ領域に格納されるエンディアン情報を読み出してＣＰＵに設定する。
【発明の効果】
【００１２】
この実施例によれば、データ転送回路が、ＣＰＵのリセット解除前に、動作モードに応じてユーザブート領域またはユーザ領域に格納されるエンディアン情報を読み出してＣＰＵに設定するので、エンディアンを選択するための外部端子を削減することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施の形態におけるマイクロコンピュータの構成例を示すブロック図である。
【図２】本発明の第１の実施の形態におけるＣＰＵ１１のレジスタのデータ配置およびメモリ上のデータ配置を説明するための図である。
【図３】本発明の第１の実施の形態におけるＣＰＵ１１の動作モードの遷移を説明するための図である。
【図４】本発明の第１の実施の形態におけるマイクロコンピュータ１のエンディアン選択を説明するための図である。
【図５】データ転送回路２２の動作を説明するためのタイミングチャートおよびデータ転送回路２２の内部構成を示す図である。
【図６】本発明の第２の実施の形態におけるマイクロコンピュータ１の構成例を示すブロック図である。
【図７】本発明の第２の実施の形態におけるマイクロコンピュータ１の動作の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１４】
（第１の実施の形態）
図１は、本発明の第１の実施の形態におけるマイクロコンピュータの構成例を示すブロック図である。このマイクロコンピュータ（以下、マイコンとも呼ぶ。）１は、ＣＰＵ１１と、ＣＩＦ（CPU Interface）１２と、バスアービタ（Arbiter）１３と、ＤＭＡＣ（Direct Memory Access Controller）１４と、フラッシュメモリ（Flash）１５と、フラッシュＩＦ（Flash Interface）１６と、ＳＲＡＭ（Static Random Access Memory）１７と、ＳＲＡＭ  ＩＦ１８と、ＥＢＩＵ（External Bus Interface Unit）１９と、ＰＢＩＵ（Peripheral Bus Interface Unit）２０と、周辺ＩＰ（Intellectual Property）２１と、データ転送回路２２とを含む。
【００１５】
ＣＰＵ１１は、ＣＩＦ１２を介して内部バス２３に接続されており、ＣＩＦ１２を介してフラッシュメモリ１５、ＳＲＡＭ１７、周辺ＩＰ２１、外部バスに接続される外部デバイスなどにアクセスすることができる。また、ＣＰＵ１１は、ビッグエンディアンおよびリトルエンディアンの両方のエンディアンを備えており、データ転送回路２２から出力されるエンディアン信号によってエンディアンモードを変更する。
【００１６】
バスアービタ１３は、ＣＰＵ１１、ＤＭＡＣ１４などのアクセスを監視しており、アクセスの調停を行なう。
【００１７】
ＤＭＡＣ１４は、内部のレジスタに書き込まれた転送元アドレス、転送先アドレス、データ転送数などの情報に基づいて、メモリ−メモリ間のＤＭＡ転送や、メモリ−ＩＯ（Input/Output）間のＤＭＡ転送を制御する。
【００１８】
フラッシュメモリ１５は、フラッシュＩＦ１６を介して内部バス２３に接続されており、ＣＰＵ１１、ＤＭＡＣ１４、データ転送回路２２などからのアクセスに応じてデータの入出力を行なう。
【００１９】
ＳＲＡＭ１７は、ＳＲＡＭ  ＩＦ１８を介して内部バス２３に接続されており、ＣＰＵ１１、ＤＭＡＣ１４などからのアクセスに応じてデータの入出力を行なう。
【００２０】
ＥＢＩＵ１９は、内部バス２３と外部バスとの間に接続されており、ＣＰＵ１１などからのアクセスに応じて、マイコン１の外部に接続される外部デバイスに対するアクセスを行なう。
【００２１】
周辺ＩＰ２１は、ＳＩＯ（Serial Input/Output）、タイマ、センサなどの周辺回路によって構成され、ＰＢＩＵ２０を介して内部バス２３に接続されており、ＣＰＵ１１などからのアクセスに応じてデータを入出力する。
【００２２】
なお、データ転送回路２２の内部構成および動作の詳細については後述する。
図２は、本発明の第１の実施の形態におけるＣＰＵ１１のレジスタのデータ配置およびメモリ上のデータ配置を説明するための図である。図２（ａ）は、レジスタのデータ配置を示しており、たとえば、ロングワード（３２ビット）のレジスタの場合には、ビット０（ｂ０）がＬＳＢ（Least Significant Bit）となり、ビット３１（ｂ３１）がＭＳＢ（Most Significant Bit）となっている。
【００２３】
図２（ｂ）は、メモリ上のデータ配置を示している。リトルエンディアンの場合、たとえば、ロングワードデータであれば、Ｎ番地のビット０（ｂ０）がＬＳＢとなり、Ｎ＋３番地のビット７（ｂ７）がＭＳＢとなっている。また、ビッグエンディアンの場合、たとえば、ロングワードデータであれば、Ｎ＋３番地のビット０（ｂ０）がＬＳＢとなり、Ｎ番地のビット７（ｂ７）がＭＳＢとなっている。
【００２４】
図３は、本発明の第１の実施の形態におけるＣＰＵ１１の動作モードの遷移を説明するための図である。動作モードは、図１に示すようにマイコン１の外部端子（ＭＤ端子）によって設定可能であり、ブートモード、ユーザブートモード、シングルチップモードに分けられる。
【００２５】
外部端子によってブートモードが設定されている場合、リセット解除後にブートモードに遷移する。ブートモードにおいては、フラッシュメモリのブート領域と呼ばれる領域に置かれているプログラムが実行される。ユーザは、ブート領域に置かれているプログラムの消去や書き換えを行なうことはできない。
【００２６】
外部端子によってユーザブートモードが設定されている場合、リセット解除後にユーザブートモードに移行する。ユーザブートモードにおいては、ユーザプログラムを後から書き換え可能とするために、フラッシュメモリのユーザブート領域と呼ばれる領域に置かれている小規模なブートプログラムが実行される。
【００２７】
ユーザブートモードにおけるブートプログラムは、パーソナルコンピュータ（ＰＣ）のＢＩＯＳ（Basic Input Output System）のような機能を有する比較的小規模なプログラムであり、ＣＰＵ１１からプログラム消去を行なえず、専用の書き込み装置または書き込みプログラムによってのみ消去や書き込みが行なえる。このモードにおいては、たとえばデジタル家電などでファームウェアのアップデートを行なう場合に、消去されないシステムの根幹となるプログラムがユーザブート領域に配置されるといった用途で使用される。このモードにおいては、ＣＰＵ１１からユーザ領域側に置かれたプログラムの消去や書き込みを行なうことができる。
【００２８】
外部端子によってシングルチップモードが設定されている場合、リセット解除後にシングルチップモードに移行する。シングルチップモードにおいては、フラッシュメモリのユーザ領域と呼ばれる領域に置かれているユーザプログラムのみが実行される。図３においては、シングルチップモードに遷移すると、まずユーザモードとなり、ユーザ領域に置かれているユーザプログラムが実行される。ＣＰＵ１１の内部信号であるＦＬＷＥに“１”が設定されるとユーザプログラムモードに遷移して、フラッシュメモリのユーザ領域のプログラム消去や書き込みが可能となる。このモードにおいては、ユーザブート領域に対するアクセスを禁止して、安全性を高めている。
【００２９】
なお、ＣＰＵ１１が分岐命令を実行することによって、ブートモードからユーザモードまたはユーザプログラムモードに遷移することが可能であり、また、ユーザブートモードからユーザモードまたはユーザプログラムモードに遷移することも可能である。
【００３０】
図４は、本発明の第１の実施の形態におけるマイコン１のエンディアン選択を説明するための図である。図４（ａ）は、ＣＰＵ１１のメモリマップの一例を示しており、ブート領域、ユーザブート領域、ユーザ領域がそれぞれ配置されている。
【００３１】
ユーザブート領域が配置される領域のＦＦ７Ｆ＿ＦＦＦ８番地にはＯＦＳ（オプション機能選択）レジスタが設けられており、このＯＦＳ内にユーザブートモードにおけるエンディアン情報が格納されている。このＯＦＳはフラッシュメモリ中の領域であるため、マイコン１の電源が遮断され、またはリセットされても保持される。ＣＰＵ１１がリセット解除されてユーザブートモードに遷移する前に、データ転送回路２２によってＯＦＳ内のエンディアン情報が読み出され、ＣＰＵ１１にエンディアン情報が設定される。
【００３２】
また、ユーザ領域が配置される領域のＦＦＦＦ＿ＦＦ９０番地にもＯＦＳレジスタが設けられており、このＯＦＳ内にユーザモードにおけるエンディアン情報が格納されている。ＣＰＵ１１がリセット解除されてユーザモードに遷移する前に、データ転送回路２２によってＯＦＳ内のエンディアン情報が読み出され、ＣＰＵ１１にエンディアン情報が設定される。
【００３３】
また、ブート領域が配置される領域のＦＦ７Ｆ＿ＦＦＦ８番地にもＯＦＳレジスタが設けられており、このＯＦＳ内にブートモードにおけるエンディアン情報が格納されている。ＣＰＵ１１がリセット解除されてブートモードに遷移する前に、データ転送回路２２によってＯＦＳ内のエンディアン情報が読み出され、ＣＰＵ１１にエンディアン情報が設定される。
【００３４】
図４（ｂ）は、ユーザブートモードにおけるエンディアン情報の設定を説明するための図である。内部システムリセットが解除されると、データ転送回路によるＯＦＳ転送が行なわれる。このとき、データ転送回路２２は、ＦＦ７Ｆ＿ＦＦＦ８番地からＯＦＳ内のエンディアン情報を読み出し、ＣＰＵ１１に出力する。そして、ＣＰＵ１１のエンディアンが確定した後に、ＣＰＵ１１のリセットが解除されてブートプログラムが実行され、さらにユーザブートプログラムが実行される。
【００３５】
図４（ｃ）は、シングルチップモードにおけるエンディアン情報の設定を説明するための図である。内部システムリセットが解除されると、データ転送回路によるＯＦＳ転送が行なわれる。このとき、データ転送回路２２は、ＦＦＦＦ＿ＦＦ９０番地からＯＦＳ内のエンディアン情報を読み出し、ＣＰＵ１１に出力する。そして、ＣＰＵ１１のエンディアンが確定した後に、ＣＰＵ１１のリセットが解除されてユーザプログラムが実行される。
【００３６】
図５は、データ転送回路２２の動作を説明するためのタイミングチャートおよびデータ転送回路２２の内部構成を示す図である。図５（ａ）のＴ１において、システムリセット（ＲＥＳ＃）が入力されると、内部リセットおよびＣＰＵリセットがアサートされ、ＣＰＵ１１および各ブロックのリセットが開始される。このとき、マイコン１の動作モードもリセットされる。
【００３７】
Ｔ２において、ＲＥＳ＃の解除に対応して内部リセットがハイレベルとなってリセットが解除されると、データ転送回路２２の動作が開始される。このとき、ＯＦＳレジスタには初期値としてリトルエンディアンが設定されているものとする。
【００３８】
Ｔ３において、データ転送回路２２がエンディアン情報（リトルエンディアン）をＣＰＵ１１に設定する。そして、Ｔ４において、ＣＰＵリセットがハイレベルとなってリセットが解除されると、ＣＰＵ１１は設定されたエンディアンで動作を開始する。
【００３９】
図５（ｂ）は、データ転送回路２２の内部構成を示す図である。このデータ転送回路２２は、セレクタ３１と、データＦＦ（Flip Flop）３２と、制御回路３３とを含む。
【００４０】
セレクタ３１は、動作モードを示すＭＤ端子（外部端子）の値がユーザブートモードを示す“０”の場合には、ユーザブート領域のＯＦＳが格納されるアドレス“ＦＦ７Ｆ＿ＦＦＦ８”をバスアービタ１３に出力する。また、セレクタ３１は、ＭＤ端子の値がシングルチップモード（ユーザモード）を示す“１”の場合には、ユーザ領域のＯＦＳが格納されるアドレス“ＦＦＦＦ＿ＦＦ９０”をバスアービタ１３に出力する。
【００４１】
制御部３３は、内部リセットが解除されたときに、バスアービタ１３に対してセレクタ３１から出力されるアドレスからのデータ読み出しを要求する。このとき、バスアービタ１３は、そのアドレスに対応するフラッシュメモリ１５の領域からＯＦＳレジスタの内容を読み出し、データＦＦ３２に出力する。なお、第１の実施の形態において、領域切り替え信号は使用されない。
【００４２】
データＦＦ３２は、バスアービタ１３から受けたＯＦＳの中のエンディアン情報を保持し、ＣＰＵ１１に出力する。
【００４３】
上述のように、本実施の形態においては、ユーザブートモードおよびユーザモードのそれぞれに対応して、フラッシュメモリ１５の別々のアドレスにエンディアン情報を設定することとしているが、その理由は以下の通りである。
【００４４】
ユーザブートモードにおいては、ユーザブート領域にユーザのプログラムが置かれている。そのため、もしユーザ領域にエンディアン情報が格納されていれば、間違ってユーザ領域を消去してしまうとユーザブートプログラムが正しく動作しなくなるためである。
【００４５】
また、シングルチップモードにおいては、ユーザブート領域にエンディアン情報が格納されていても、ユーザブートを使用しないユーザにとっては不便であるし、シングルチップモードで動作中にユーザブート領域にアクセスできないといった制限があるためである。
【００４６】
なお、ユーザがプログラムをフラッシュメモリ１５に書き込むときに、一緒にエンディアン情報も書き込むものとする。また、図５（ｂ）においては、セレクタ３１が、ユーザブート領域のＯＦＳが格納されるアドレスと、ユーザ領域のＯＦＳが格納されるアドレスとを選択的に出力するとして説明したが、図４（ａ）に示すようにブート領域にもＯＦＳが格納されている場合には、セレクタ３１が、ＭＤ端子に応じて３つのアドレスの中から選択的に１つのアドレスを出力するようにしてもよい。
【００４７】
以上説明したように、本実施の形態におけるマイコン１によれば、ＣＰＵ１１のリセットが解除される前に、データ転送回路２２がフラッシュメモリ１５の所定アドレスからエンディアン情報を読み出してＣＰＵ１１に設定するようにしたので、エンディアンを設定するための外部端子を削減することが可能となる。したがって、ユーザが使用可能な外部端子を増やすことが可能となる。
【００４８】
また、動作モードに応じてフラッシュメモリの異なる領域にエンディアン情報を格納するようにしてので、動作モードによるアクセス制限などによってエンディアン情報を変更できなかったり、エンディアン情報が間違って消去されたりするといった不具合を防止することが可能となる。
【００４９】
（第２の実施の形態）
図６は、本発明の第２の実施の形態におけるマイコン１の構成例を示すブロック図である。図１に示す第１の実施の形態におけるマイコンと比較すると、データ転送回路４１の機能が異なる点と、フラッシュメモリがブート領域用およびユーザブート領域用のフラッシュメモリ４２と、ユーザ領域用のフラッシュメモリ４３とに分けられている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【００５０】
フラッシュＩＦ１６は、フラッシュメモリ（ブート領域またはユーザブート領域）４２からフラッシュメモリ（ユーザ領域）４３にアクセスが切り替わった場合、またはフラッシュメモリ４３からフラッシュメモリ４２にアクセスが切り替わった場合に、領域切り替え信号をデータ転送回路４１に出力する。すなわち、フラッシュＩＦ１６は、起動時、領域切り替え時、停止割り込み時などに領域切り替え信号をデータ転送回路４１に出力する。
【００５１】
データ転送回路４１が図５に示すデータ転送回路２２と異なる点は、制御回路３３が領域切り替え信号を受けると、いずれのフラッシュメモリにアクセスが切り替わったかに応じてセレクタ３１に対応するアドレスを出力させ、バスアービタ１３にフラッシュメモリ４２または４３のＯＦＳ（エンディアン情報格納領域）に対するアクセスを行なわせる点である。データＦＦ３２がバスアービタ１３から受けたエンディアン情報をＣＰＵ１１に設定する点は同様である。
【００５２】
図７は、本発明の第２の実施の形態におけるマイコン１の動作の一例を説明するためのフローチャートである。まず、内部リセットが解除されると、データ転送回路４１がブートモードまたはユーザブートモードのエンディアン情報を読み出して、ＣＰＵ１１に設定する（Ｓ１１）。
【００５３】
次に、ＣＰＵ１１のリセットが解除されると、ＣＰＵ１１は、ブート領域またはユーザブート領域内のプログラムを設定されたエンディアンで実行することにより、電源、クロックなどのシステムの初期化を行なうスタートアップ処理を実行し（Ｓ１２）、ユーザプログラムの実行指示待ちとなる（Ｓ１３）。
【００５４】
ユーザプログラムの実行指示があると、ＣＰＵ１１はユーザ領域にユーザプログラムがあるか否かを判定する（Ｓ１４）。たとえば、ユーザ領域の先頭領域にキーワードが書かれているか否か、などの判定方法によってユーザ領域にユーザプログラムがあるか否か判定される。
【００５５】
ユーザ領域にユーザプログラムがある場合には（Ｓ１４，有）、そのままステップＳ１６に処理が進む。ユーザ領域にユーザプログラムがない場合には（Ｓ１４，無）、ユーザ領域にユーザプログラムを書き込み（Ｓ１５）、ステップＳ１６に処理が進む。
【００５６】
ステップＳ１６において、ＣＰＵ１１が、ユーザ領域上のユーザプログラムに分岐する命令を実行する。このとき、データ転送回路４１は、ブート領域またはユーザブート領域からユーザ領域にアクセスが切り替わったことを検知して、ユーザモードのエンディアン情報を読み出して、ＣＰＵ１１に設定する。
【００５７】
次に、ＣＰＵ１１は、データ転送回路４１から出力されるエンディアン情報に応じてエンディアンを切り替えてユーザプログラムを実行する（Ｓ１７）。このとき、ＣＰＵ１１が実行する命令は、ブート領域またはユーザブート領域上のプログラムからユーザ領域上のプログラムへ分岐する命令であるため、パイプラインに入っている命令は全てクリアされる。そのため、このときＣＰＵ１１のエンディアンを切り替えたとしても、切り替えられた後のエンディアンに対応する命令がユーザ領域から新たにフェッチされることになるため、特に動作上問題はない。
【００５８】
ＣＰＵ１１がユーザ領域上のユーザプログラムを実行しているときに、システム停止の割り込みなどを受けると、ユーザプログラムの処理を終了して、メモリ領域の開放、スタック領域の開放などの処理を行ない（Ｓ１８）、ステップＳ１９に処理が進む。
【００５９】
ステップＳ１９において、ＣＰＵ１１が、ブート領域またはユーザブート領域上のユーザプログラムに分岐する命令を実行する。このとき、データ転送回路４１は、ユーザ領域からブート領域またはユーザブート領域にアクセスが切り替わったことを検知して、ブートモードまたはユーザブートモードのエンディアン情報を読み出して、ＣＰＵ１１に設定する。
【００６０】
そして、ＣＰＵ１１は、ブート領域またはユーザブート領域上のプログラムを設定されたエンディアンで実行し、ユーザプログラムをさらに実行する場合にはステップＳ１３に戻ってユーザプログラムの実行指示待ちを行なう。また、ユーザプログラムを実行しなければ、マイコン１の終了処理を行ない（Ｓ２０）、処理を終了する。
【００６１】
以上の説明は、ユーザ領域（フラッシュメモリ４３）に１つのエンディアン情報が格納される場合についてのものであったが、ユーザ領域を複数の領域に分割し、領域ごとにエンディアン情報を格納するようにし、アクセスする領域が切り替わるごとにＣＰＵ１１にエンディアン情報を再設定するようにしてもよい。
【００６２】
以上説明したように、本実施の形態におけるマイコン１によれば、データ転送回路４１が、ブート領域またはユーザブート領域からユーザ領域にアクセスが切り替わるか、またはユーザ領域からブート領域またはユーザブート領域にアクセスが切り替わるのを検知して、ＣＰＵ１１にエンディアン情報を設定するようにした。これによって、ＣＰＵ１１のリセット解除直後だけでなく、ＣＰＵ１１の動作中であっても動作モードやアクセス領域によってエンディアンを切り替えることが可能となる。
【００６３】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００６４】
１  マイコン、１１  ＣＰＵ、１２  ＣＩＦ、１３  バスアービタ、１４  ＤＭＡＣ、１５，４２，４３  フラッシュメモリ、１６  フラッシュＩＦ、１７  ＳＲＡＭ、１８  ＳＲＡＭ  ＩＦ、１９  ＥＢＩＵ、２０  ＰＢＩＵ、２１  周辺ＩＰ、２２，４１  データ転送回路、２３  内部バス、３１  セレクタ、３２  データＦＦ、３３  制御回路。
【図１】
0005622429.tif 000002
【図２】
0005622429.tif 000003
【図３】
0005622429.tif 000004
【図４】
0005622429.tif 000005
【図５】
0005622429.tif 000006
【図６】
0005622429.tif 000007
【図７】
0005622429.tif 000008