(57)【要約】【課題】  保護対象プログラムが格納されていても、外部からフラッシュメモリへアクセスすることのできるマイクロコントローラを提供する。【解決手段】  デバッグ回路２は、フラッシュメモリ１に格納されているプログラムのデバッグ実行中はデバッグ有効信号ＶＤを出力する。保護範囲設定回路３は、フラッシュメモリ１のアドレスに対して保護範囲ＰＲを設定する。アドレス検出回路４は、アドレスバス１００上のアドレスＡＤが保護範囲ＰＲ内であるときにアドレス検出信号ＤＡを出力する。分岐命令検出回路５は、分岐命令の発行を検出したときに分岐命令検出信号ＤＢを出力する。アクセス制御回路６は、デバッグ有効信号ＶＤが出力されたときに、アドレス検出回路４の出力および分岐命令検出回路５の出力にもとづいて、フラッシュメモリ１へのアクセスを許可するか禁止するかを決定する。【選択図】  図１
2016157331.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリと、
前記フラッシュメモリに格納されているプログラムのデバッグ実行中はデバッグ有効信号を出力するデバッグ回路と、
前記フラッシュメモリのアドレスに対して保護範囲を設定する保護範囲設定回路と、
アドレスバス上の値が前記保護範囲内であるときにアドレス検出信号を出力するアドレス検出回路と、
分岐命令の発行を検出したときに分岐命令検出信号を出力する分岐命令検出回路と、
前記デバッグ有効信号が出力されたときに、前記アドレス検出回路の出力および前記分岐命令検出回路の出力にもとづいて、前記フラッシュメモリへのアクセスを許可するか禁止するかを決定するアクセス制御回路と
を備えることを特徴とするマイクロコントローラ。
【請求項２】
前記アクセス制御回路は、
前記デバッグ有効信号が出力されたときに、前記アドレス検出回路から前記アドレス検出信号が出力されないときは、前記フラッシュメモリへのアクセスを許可する
ことを特徴とする請求項１に記載のマイクロコントローラ。
【請求項３】
前記アクセス制御回路は、
前記デバッグ有効信号が出力されたときに、前記アドレス検出回路から前記アドレス検出信号が出力されて、前記分岐命令検出信号が出力されないときは、前記フラッシュメモリへのアクセスを禁止する
ことを特徴とする請求項１に記載のマイクロコントローラ。
【請求項４】
前記アクセス制御回路は、
前記デバッグ有効信号が出力されたときに、前記アドレス検出回路から前記アドレス検出信号が出力されても、前記分岐命令検出信号が出力されたときは、前記フラッシュメモリへのアクセスを許可する
ことを特徴とする請求項１に記載のマイクロコントローラ。
【請求項５】
前記アクセス制御回路は、
フラッシュライターが接続されたことを示すフラッシュライターモード信号が入力されたときにも、デバッグ時と同様に前記フラッシュメモリへのアクセスを禁止する
ことを特徴とする請求項１に記載のマイクロコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、マイクロコントローラに関する。
【背景技術】
【０００２】
フラッシュメモリを内蔵するマイクロコントローラにおいて、このフラッシュメモリの一部に半導体メーカ側でドライバプログラムや特定の応用プログラムを書き込んだ上で、ユーザーに提供されることがある。このフラッシュメモリには、ユーザー作成のプログラムも書き込まれる。
【０００３】
従来、このようなマイクロコントローラでは、上述のドライバプログラムや特定の応用プログラムを第３者の不正な読み出しから保護する機能を有し、この機能を有効にすると、マイクロコントローラ外部からのフラッシュメモリの読み出しが全面的に禁止される。
【０００４】
これにより、デバッグツール等を接続してもフラッシュメモリのデータを読み出すことができず、第３者による不正な改変などからプログラムを保護することができる。この場合、ユーザー作成プログラムもフラッシュメモリに書き込むことが行われる。
【０００５】
しかし、この従来の方式では、同時にユーザー作成プログラムへの外部からのアクセスもできなくなるためユーザー作成プログラムのデバッグを行うことができず、また、後からプログラムを追加することもできない、という問題があった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−５８５８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、保護対象プログラムが格納されていても、外部からフラッシュメモリへアクセスすることのできるマイクロコントローラを提供することにある。
【課題を解決するための手段】
【０００８】
実施形態のマイクロコントローラは、フラッシュメモリと、デバッグ回路と、保護範囲設定回路と、アドレス検出回路と、分岐命令検出回路と、アクセス制御回路とを備える。デバッグ回路は、前記フラッシュメモリに格納されているプログラムのデバッグ実行中はデバッグ有効信号を出力する。保護範囲設定回路は、前記フラッシュメモリのアドレスに対して保護範囲を設定する。アドレス検出回路は、アドレスバス上の値が前記保護範囲内であるときにアドレス検出信号を出力する。分岐命令検出回路は、分岐命令の発行を検出したときに分岐命令検出信号を出力する。アクセス制御回路は、前記デバッグ有効信号が出力されたときに、前記アドレス検出回路の出力および前記分岐命令検出回路の出力にもとづいて、前記フラッシュメモリへのアクセスを許可するか禁止するかを決定する。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態のマイクロコントローラの構成の例を示すブロック図。
【図２】保護範囲設定回路の内部構成の例を示すブロック図。
【図３】フラッシュメモリの保護範囲設定の説明図。
【図４】アクセス制御回路の動作を説明するための図。
【図５】アクセス制御回路の動作を説明するための図。
【図６】アクセス制御回路の動作を説明するための図。
【図７】第２の実施形態のアクセス制御回路の例を示すブロック図。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について図面を参照して説明する。なお、図中、同一または相当部分には同一の符号を付して、その説明は繰り返さない。
【００１１】
（第１の実施形態）
図１は、第１の実施形態のマイクロコントローラの構成の例を示すブロック図である。
【００１２】
本実施形態のマイクロコントローラは、フラッシュメモリ１と、フラッシュメモリ１に格納されているプログラムのデバッグ実行中はデバッグ有効信号ＶＤを出力するデバッグ回路２と、フラッシュメモリ１のアドレスに対して保護範囲ＰＲを設定する保護範囲設定回路３と、アドレスバス１００上のアドレス値ＡＤが保護範囲内ＰＲであるときにアドレス検出信号ＤＡを出力するアドレス検出回路４と、分岐命令の発行を検出したときに分岐命令検出信号ＤＢを出力する分岐命令検出回路５と、デバッグ有効信号ＶＤが出力されたときに、アドレス検出回路４の出力および分岐命令検出回路５の出力にもとづいて、フラッシュメモリ１へのアクセスを許可するか禁止するかを決定するアクセス制御回路６と、を備える。
【００１３】
フラッシュメモリ１には、ドライバプログラムや特定の応用プログラムなどの保護対象のプログラムとユーザーにより作成されたユーザープログラムが格納される。
【００１４】
デバッグ回路２は、フラッシュメモリ１に格納されたユーザープログラムのデバッグに使用される回路である。デバッグ回路２は、プログラムのデバッグ実行中はデバッグ有効信号ＶＤを出力する。
【００１５】
保護範囲設定回路３は、フラッシュメモリ１のアドレスに対して保護範囲ＰＲを設定する回路である。保護範囲ＰＲは、フラッシュメモリ１に格納されているプログラムを保護するために外部からのアクセスを禁止するアドレス範囲を示す。
【００１６】
図２に、保護範囲設定回路３の内部構成の例を示す。
【００１７】
保護範囲設定回路３は、上限アドレス記憶部３１と、下限アドレス記憶部３２と、設定部３３と、を有する。
【００１８】
上限アドレス記憶部３１には上限アドレスＵＡが書き込まれ、下限アドレス記憶部３２には下限アドレスＬＡが書き込まれる。
【００１９】
設定部３３は、上限アドレスＵＡと下限アドレスＬＡの間のアドレス範囲を保護範囲ＰＲとして設定する。
【００２０】
ここで、上限アドレスＵＡおよび下限アドレスＬＡは、任意の値を設定することができる。
【００２１】
図３に、フラッシュメモリ１に設定された保護範囲ＰＲの例を示す。
【００２２】
フラッシュメモリ１のアドレス領域のうち、上限アドレスＵＡと下限アドレスＬＡで挟まれた領域が保護範囲ＰＲに設定される。
【００２３】
保護範囲ＰＲは、保護対象プログラムが格納されているメモリ領域を含むように設定される。また、ユーザープログラムは、保護範囲ＰＲ以外のメモリ領域に格納される。
【００２４】
アドレス検出回路４は、アドレスバス１００に出力されたアドレス値ＡＤと保護範囲内ＰＲとを比較し、アドレス値ＡＤが保護範囲内ＰＲであることを検出したときは、アドレス検出信号ＤＡを出力する。
【００２５】
分岐命令検出回路５は、発行された命令ＩＲが分岐命令であるかどうかをチェックし、分岐命令の発行を検出したときは、分岐命令検出信号ＤＢを出力する。
【００２６】
アクセス制御回路６は、デバッグ有効信号ＶＤが出力されたときに、アドレス検出回路４の出力および分岐命令検出回路５の出力にもとづいて、フラッシュメモリ１へのアクセスを許可するか禁止するかを決定し、保護制御信号ＰＣを出力する。
【００２７】
次に、デバッグ回路２を用いてフラッシュメモリ１に格納されたユーザープログラムのデバッグを行うときのアクセス制御回路６の動作について、図４〜図６を参照しながら説明する。ユーザープログラムのデバッグを行うとき、デバッグ回路２からはデバッグ有効信号ＶＤが出力される。
【００２８】
まず、図４に示すように、デバッグのためにユーザープログラム格納領域にアクセスしようとする場合、アドレスＡＤが保護範囲ＰＲ以外であるので、アドレス検出回路４からアドレス検出信号ＤＡが出力されない。この場合、アクセス制御回路６は、保護制御信号ＰＣとして、フラッシュメモリ１へのアクセスを許可する「許可」信号を出力する。これにより、ユーザープログラムへのアクセスが可能となる。
【００２９】
しかし、例えば、デバッグ中にユーザープログラムの実行をブレークして、図５に示すように、保護対象プログラムに直接アクセスしようとすると、アドレスＡＤが保護範囲ＰＲ内に入る。そのため、アドレス検出回路４からアドレス検出信号ＤＡが出力される。
【００３０】
アドレス検出回路４からアドレス検出信号ＤＡが出力された場合、アクセス制御回路６は、保護制御信号ＰＣとして、フラッシュメモリ１へのアクセスを禁止する「禁止」信号を出力する。これにより、保護対象プログラムを読み出すなどの動作は、実行できなくなる。
【００３１】
これに対して、図６に示すように、ユーザープログラムからの分岐命令で保護対象プログラムにアクセスしようとした場合、分岐命令検出回路５から分岐命令検出信号ＤＢが出力される。
【００３２】
分岐命令検出回路５から分岐命令検出信号ＤＢが出力された場合、アクセス制御回路６は、保護制御信号ＰＣとして、フラッシュメモリ１へのアクセスを許可する「許可」信号を出力する。これにより、ユーザープログラムのデバッグ中に、例えば、保護対象プログラムをサブルーチンとして呼び出すことが可能となる。
【００３３】
このような本実施形態によれば、保護対象プログラムが格納されたアドレス範囲を保護範囲として設定し、アドレスバス上のアドレスの値が保護範囲内であるか否かによってフラッシュメモリへのアクセスを禁止するか許可するかを制御することができる。これにより、保護対象プログラムが格納されていても保護範囲外のアドレスにアクセスすることができ、この領域に格納されたユーザープログラムのデバッグを行うことができる。
【００３４】
また、ユーザープログラム実行中の分岐命令であれば保護範囲内のアドレスへもアクセスできるので、保護対象プログラムの実行を伴うユーザープログラムのデバッグを行うことができる。
【００３５】
（第２の実施形態）
保護対象プログラムへの不正なアクセスの手段として、フラッシュライターが用いられることがある。そこで、本実施形態では、フラッシュライターによるフラッシュメモリへのアクセスを防止することのできるアクセス制御回路の例を示す。
【００３６】
図７は、本実施形態アクセス制御回路の例を示すブロック図である。
【００３７】
本実施形態のアクセス制御回路６Ａが第１の実施形態のアクセス制御回路６と異なる点は、入力信号としてフラッシュライターモード信号ＦＷＭが追加されている点である。
【００３８】
フラッシュライターモード信号ＦＷＭは、フラッシュライターが接続されたことを示す信号である。
【００３９】
アクセス制御回路６Ａは、フラッシュライターモード信号ＦＷＭが入力されると、デバッグ時と同様に、フラッシュメモリの保護対象プログラムが格納されたアドレス範囲の読み出しに対して、保護制御信号ＰＣとして、フラッシュメモリ１へのアクセスを禁止する「禁止」信号を出力する。これにより、フラッシュライターを用いたフラッシュメモリ１のデータの読み出しや書き換えが防止される。
【００４０】
このような本実施形態によれば、フラッシュライターによる保護対象プログラムへの不正なアクセスを防止することができる。
【００４１】
以上説明した少なくとも１つの実施形態のマイクロコントローラによれば、保護対象プログラムが格納されていても、外部からフラッシュメモリへアクセスすることができる。
【００４２】
また、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４３】
１  フラッシュメモリ
２  デバッグ回路
３  保護範囲設定回路
４  アドレス検出回路
５  分岐命令検出回路
６、６Ａ  アクセス制御回路
３１  上限アドレス記憶部
３２  下限アドレス記憶部
３３  設定部
【図１】
2016157331.tif 000003
【図２】
2016157331.tif 000004
【図３】
2016157331.tif 000005
【図４】
2016157331.tif 000006
【図５】
2016157331.tif 000007
【図６】
2016157331.tif 000008
【図７】
2016157331.tif 000009