(57)【要約】  データ転送を実施するために、フラッシュメモリ、中央処理装置（ＣＰＵ）、および直接メモリアクセス・コントローラ（ＤＭＡＣ）を有するマイクロコントローラ（ＭＣＵ）をプログラミングする方法とシステム。一実施の形態では、その方法は、フラッシュメモリに格納された関数を呼び出し、呼び出されたとき関数に第１パラメータを渡し、フラッシュメモリに格納されるとともに第１ＤＭＡＣ制御値を含む第１データ構造体を第１パラメータが識別する。ＣＰＵは、関数のＣＰＵ実行命令に応じて第１ＤＭＡＣ制御値を読み出す。それから、ＣＰＵは、関数のＣＰＵ実行命令に応じてＤＭＡＣのそれぞれの制御レジスタに第１ＤＭＡＣ制御値を書き込む。【選択図】図４
2019512135.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリ、中央処理装置（ＣＰＵ）、および直接メモリアクセス・コントローラ（ＤＭＡＣ）を備えたマイクロコントローラ（ＭＣＵ）で実施される方法であって、
前記方法は、前記フラッシュメモリに格納された関数を呼び出し、呼び出されたときに第１パラメータを前記関数に渡し、フラッシュメモリに格納されるとともに第１ＤＭＡＣ制御値を備える第１データ構造体を前記第１パラメータが識別し、
前記関数のＣＰＵ実行命令に応じて前記第１ＤＭＡＣ制御値を前記ＣＰＵが読み出し、
前記関数の前記ＣＰＵ実行命令に応じて前記ＤＭＡＣのそれぞれの制御レジスタに前記第１ＤＭＡＣ制御値を前記ＣＰＵが書き込む、
方法。
【請求項２】
請求項１に記載の方法において、
さらに、第２時間で前記関数を呼び出し、前記第２時間で呼び出されたときに第２パラメータを前記関数に渡し、フラッシュメモリに格納されるとともに第２ＤＭＡＣ制御値を備える第２データ構造体を前記第２パラメータが識別し、
第２時間で前記関数の呼び出しに応じて前記第２ＤＭＡＣ制御値を前記ＣＰＵが読み出し、
前記第２ＤＭＡＣ制御値を使って前記第１ＤＭＡＣ制御値を前記ＣＰＵが置き換える、
方法。
【請求項３】
請求項１に記載の方法において、
前記ＭＣＵは第１周辺装置を備え、前記第１データ構造体は第１周辺装置用制御値を備え、
前記方法は、さらに、前記関数の前記ＣＰＵ実行命令に応じて前記第１周辺装置用制御値を前記ＣＰＵが読み出し、
前記関数の前記ＣＰＵ実行命令に応じて前記第１周辺装置のそれぞれの制御レジスタに前記第１周辺装置用制御値を前記ＣＰＵが書き込む、
方法。
【請求項４】
請求項３に記載の方法において、
前記第１周辺装置が割込み制御装置を備える、
方法。
【請求項５】
請求項４に記載の方法において、
前記第１データ構造体は、第１割込みサービスルーチン用の第１アドレスを備え、
前記方法は、さらに、前記関数の前記ＣＰＵ実行命令に応じてベクトル割込みテーブルの入力に前記第１アドレスを前記ＣＰＵが書き込む、
方法。
【請求項６】
請求項３に記載の方法において、
前記第１周辺装置は、イベント・リンク・コントローラを備える、
方法。
【請求項７】
請求項１に記載の方法において、
さらに、前記第１ＤＭＡＣ制御値が前記ＤＭＡＣの前記それぞれの制御レジスタに書き込まれた後に第１データを前記ＤＭＡＣが読み出し、
前記第１ＤＭＡＣ制御値が前記ＤＭＡＣの前記それぞれの制御レジスタに書き込まれた後に前記第１データを第１バッファに前記ＤＭＡＣが書き込む
方法。
【請求項８】
ＭＣＵの中央処理装置（ＣＰＵ）により実行可能な命令を前記ＭＣＵ内に備えたフラッシュメモリであって、
前記ＣＰＵが、前記命令の実行に応じて方法を実施し、
前記方法は、前記ＭＣＵの前記フラッシュメモリに格納された関数を呼び出し、呼び出されたときに前記関数に第１パラメータを渡し、前記フラッシュメモリに格納されるとともに、前記ＭＣＵのＤＭＡＣを制御するための第１直接メモリアクセス・コントローラ（ＤＭＡＣ）制御値を備える第１データ構造体を前記第１パラメータが識別し、
前記関数のＣＰＵ実行命令に応じて前記第１ＤＭＡＣ制御値を前記ＣＰＵが読み出し、
前記関数の前記ＣＰＵ実行命令に応じて前記ＤＭＡＣのそれぞれの制御レジスタに前記第１ＤＭＡＣ制御値を前記ＣＰＵが書き込む、
フラッシュメモリ。
【請求項９】
請求項８に記載のフラッシュメモリにおいて、
前記方法は、さらに、第２時間で前記関数を呼び出し、前記第２時間で呼び出されたときに第２パラメータを前記関数に渡し、前記フラッシュメモリに格納されるとともに第２ＤＭＡＣ制御値を備える第２データ構造体を前記第２パラメータが識別し、
第２時間での前記関数の呼び出しに応じて前記第２ＤＭＡＣ制御値を前記ＣＰＵが読み出し、
前記第２ＤＭＡＣ制御値を使って前記第１ＤＭＡＣ制御値を前記ＣＰＵが書き換える、
フラッシュメモリ。
【請求項１０】
請求項８に記載のフラッシュメモリにおいて、
前記ＭＣＵが第１周辺装置を備え、前記第１データ構造体が第１周辺装置用制御値を備え、
前記方法は、さらに、前記関数の前記ＣＰＵ実行命令に応じて前記第１周辺装置用制御値を前記ＣＰＵが読み出し、
前記関数の前記ＣＰＵ実行命令に応じて前記第１周辺装置のそれぞれの制御レジスタに前記第１周辺装置用制御値を前記ＣＰＵが書き込む、
フラッシュメモリ。
【請求項１１】
請求項１０に記載のフラッシュメモリにおいて、
前記第１周辺装置は、割込み制御装置を備える、
フラッシュメモリ。
【請求項１２】
請求項８に記載のフラッシュメモリにおいて、
前記第１データ構造体は、前記フラッシュメモリに格納された第１割込みサービスルーチンのための第１アドレスを備え、
前記方法は、さらに、前記関数の前記命令を実行する前記ＣＰＵに応じてベクトル割込みテーブルの入力に前記第１アドレスを前記ＣＰＵが書き込む、
フラッシュメモリ。
【請求項１３】
請求項１０に記載のフラッシュメモリにおいて、
前記第１周辺装置は、イベント・リンク・コントローラを備える、
フラッシュメモリ。
【請求項１４】
請求項８に記載のフラッシュメモリにおいて、
前記方法は、さらに、前記第１ＤＭＡＣ制御値が前記ＤＭＡＣのそれぞれの前記制御レジスタに書き込まれた後に第１データを前記ＤＭＡＣが読み出し、
前記第１ＤＭＡＣ制御値が前記ＤＭＡＣのそれぞれの前記制御レジスタに書き込まれた後に第１バッファに前記第１データを前記ＤＭＡＣが書き込む、
フラッシュメモリ。
【請求項１５】
ネットワークを介してコンピュータシステムに命令を送信するサーバーコンピュータシステムを備え、前記命令の実行に応じてＭＣＵの中央処理装置（ＣＰＵ）が、データ転送を実施するために前記ＭＣＵをプログラミングする方法を実施できる方法であって、
前記プログラミングする方法は、前記ＭＣＵのフラッシュメモリに格納された第１直接メモリアクセス・コントローラ（ＤＭＡＣ）制御値を前記ＣＰＵが読み出し、
前記ＭＣＵの前記ＤＭＡＣのそれぞれの制御レジスタに前記第１ＤＭＡＣ制御値を書き込む、
方法。
【請求項１６】
請求項１５に記載の方法において、
前記プログラミングする方法は、さらに、前記フラッシュメモリから第２ＤＭＡＣ制御値を前記ＣＰＵが読み出し、
前記第２ＤＭＡＣ制御値を使って前記制御レジスタ内の前記第１ＤＭＡＣ制御値を前記ＣＰＵが書き換える、
方法。
【請求項１７】
請求項１６に記載の方法において、
前記ＭＣＵは第１周辺装置を備え、前記第１データ構造体は第１周辺装置用制御値を備え、
前記プログラミングする方法は、さらに、前記第１周辺装置用制御値を前記ＣＰＵが読み出し、
前記ＭＣＵの第１周辺装置のそれぞれの制御レジスタに前記第１周辺装置用制御値を前記ＣＰＵが書き込む、
方法。
【請求項１８】
請求項１７に記載の方法において、
前記第１周辺装置は、割込み制御装置を備える、
方法。
【請求項１９】
請求項１８に記載の方法において、
前記第１データ構造体は、前記フラッシュメモリに格納された第１割込みサービスルーチン用の第１アドレスを備え、
前記プログラミングする方法は、さらに、前記割込み制御装置内のベクトル割込みテーブルの入力に前記第１アドレスを前記ＣＰＵが書き込む、
方法。
【請求項２０】
請求項１７に記載の方法において、
前記第１周辺装置は、イベント・リンク・コントローラを備える、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、本明細書に完全かつ十分に説明されているかのように、全体としておよび全ての目的のために参照によって組込まれる、２０１６年２月２９日に出願された「パイプと信号」と題する米国仮特許出願第６２／３００９５３号の国内利益を、米国特許法第１１９（ｅ）の定めにより、請求する。
【背景技術】
【０００２】
マイクロコントローラ（ＭＣＵ）は、集積回路上に形成された小さなコンピュータである。ＭＣＵは、事務機器、家庭用機器、自動車エンジン制御システム、移植可能な医療装置、電動工具、玩具などのような広範囲の装置の埋め込み制御を提供（規定）する。
【０００３】
ＭＣＵはアーキテクチャの点で異なる。しかしながら、ほぼ全てのＭＣＵは、中央処理装置（ＣＰＵ）、フラッシュメモリ、ランダム・アクセス・メモリ（ＲＡＭ）、専用機能を提供する１つ以上の周辺装置、および、１つ以上の汎用入／出力（ＧＰＩ／Ｏ）ポートを収容（含有）している。
【０００４】
ＣＰＵは、フラッシュメモリ内に格納された埋め込みプログラムの命令に従ってＲＡＭ内に保持されたデータを処理できる。しかしながら、ＣＰＵがデータを処理する前には、そのデータは、ＲＡＭ内へ移動されなければならない。ＲＡＭにデータを移動する方法が幾つかある。１つの方法は、プログラム制御方式（プログラムＩ／Ｏ）と呼ばれる。この方法では、ＣＰＵは、ロードまたはストア動作の実行により、ソース（たとえば、ＵＡＲＴすなわち万能非同期送／受信機のような周辺装置）からＲＡＭへデータを転送できる。ＣＰＵは、ソース用のステータスレジスタをポーリングすることによってまたはそのソースからの「レディ」割込みを扱うことによって翻訳され得る各バイトまたは各ワードを転送する前に、そのソースからのレディ信号を待つ必要があるかもしれない。残念ながら、ＣＰＵは、データの転送中では、他の動作を実行できない。
【０００５】
直接メモリアクセス（ＤＭＡ）は、データを転送する代替方法である。この処理は、ＤＭＡコントローラ（ＤＭＡＣ）として知られる装置によって管理される。ＤＭＡでは、データは、ＣＰＵが各バイト（またはワード）を扱わずに、直接転送される。要するに、ＤＭＡのデータ転送は、ＣＰＵから独立している。ＤＭＡ転送は、ソース（たとえば周辺装置）からデスティネーション（たとえば（ＲＡＭ））へ大量データを非常に素早く移動できる。ＤＭＡのデータ転送におけるもっと明白な利益は、ＤＭＡＣがデータ転送している間にＣＰＵが何か他のことを行うことができることである。しかしながら、ＤＭＡ転送をセットアップするにはあるＣＰＵの使用を必要としているが、その後にＣＰＵを必要とせずにデータが転送される。
【０００６】
言及したように、ＤＭＡ転送が生じ得る前には、ＣＰＵはＤＭＡＣのプログラムを作らならなければならない。要するに、ＣＰＵは、ＤＭＡＣに、何のデータを転送すべきか、そのデータをどこに転送すべきか、および、そのデータをどのように転送すべきかを伝えなければならない。ＣＰＵは、適切な制御値をそれぞれの制御レジスタに書き込むことによってＤＭＡＣのプログラムを作る。制御値は転送を規定する。たとえば、制御値は、転送すべきデータのソース（たとえばＵＡＲＴ）、そのデータのデスティネーション（目的地）、転送すべきデータ量、そのデータの幅、データ転送すべきモード（たとえば、バーストモード、需要モード、透過モード、アドレス・インクリメント・モード、単一周期モード、書き込み転送など）などを識別する。
【０００７】
ランタイム（実行時間）の間、ＤＭＡＣは、異なるＤＭＡデータ転送を実施するために、異なる制御値を使ってＣＰＵにより繰り返し再プログラミングされ得る。ＣＰＵは、ＤＭＡＣのプログラムを作るときに、異なるコードを実行する。たとえば、ＵＡＲＴからＲＡＭへデータを転送するためにＤＭＡＣのプログラムを作るのに必要とされるコードは、ＲＡＭからユニバーサル・シリアル・バス（ＵＳＢ）インタフェースへデータを転送するためにＤＭＡＣのプログラムを作るのに必要とされるコードと異なっている。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＤＭＡＣのプログラムもしくは再プログラムを作るのに、または、ＤＭＡ転送に必要とされるＭＣＵの他のコンポーネント（構成）のプログラムもしくは再プログラムを作るのに必要とするコードを書き込むとき、開発者は頻繁に間違える。たとえば、開発者は、ＵＡＲＴからＲＡＭ内の特定のバッファへＤＭＡ転送データをセットアップするコードを書き込もうと思うかもしれないが、開発者は、ＵＳＢインタフェースからのデータを転送するコードを偶然書き込むかもしれない。加えて、開発者は、制御値がレジスタに書き込まれている順序（シーケンス）において頻繁に間違える。この種のコードエラーがなされたとき、そのようなエラーをデバッグすることは非常に難しい。それは、転送の一端が通常、容易に検査できないＲＡＭ内の周辺装置またはバッファであるからである。
【課題を解決するための手段】
【０００９】
フラッシュメモリ、中央処理装置（ＣＰＵ）、および直接メモリアクセス・コントローラ（ＤＭＡＣ）を有するマイクロコントローラ（ＭＣＵ）をプログラミングする方法およびシステムである。一実施の形態では、プログラミングする方法は、フラッシュメモリ内に格納された関数を呼び出すことを含み、関数が呼び出されたとき第１パラメータが関数に渡され、第１パラメータは、フラッシュメモリ内に格納された第１データ構造体を識別し、第１データ構造体は、第１ＤＭＡＣ制御値を含む。ＣＰＵは、関数のＣＰＵ実行命令に応じて第１ＤＭＡＣ制御値を読み出す。それから、ＣＰＵは、関数のＣＰＵ実行命令に応じてＤＭＡＣのそれぞれの制御レジスタに第１ＤＭＡＣ制御値を書き込む。ひとたび第１ＤＭＡＣ制御値がそれぞれの制御レジスタに書き込まれると、ＭＣＵはＤＭＡ転送を実施するようにプログラミングされる。
【図面の簡単な説明】
【００１０】
本発明は、添付図面の参照により当業者にとって明らかにされた多くの目的、特徴、および利点において更に良く理解されるかもしれない。
【図１】ブロック図の形式で示されるとともに本開示の一実施の形態を利用するＭＣＵの例を図示する。
【図２Ａ】図１のＭＣＵにおいて利用されたイベント・リンク・コントローラを図示するブロック図である。
【図２Ｂ】図１のＭＣＵによって実施されるＤＭＡ転送の例のうち関連態様を図示するブロック図である。
【図３】図１で示されたＭＣＵのフラッシュメモリのプログラムを作る（プログラミングする）際に使用されるツールのうち様々な態様を図示するブロック図である。
【図４】本開示の一実施の形態に従って図１のＭＣＵのフラッシュメモリに格納された活性化機能（機能）ＡＦの例とデータ転送構造体（ＤＴＳ）のアレイとを図示するブロック図である。
【図５】本開示の一実施の形態に従って図１のＭＣＵにより実施される方法の関連態様を図示するフローチャートである。
【００１１】
異なる図面における同一参照符号の使用は、類似または同一の事項を指し示す。
【発明を実施するための形態】
【００１２】
データ転送を実施する実行時間でＭＣＵの１つ以上のコンポーネントをプログラミングする装置および方法が記述される。一般に、１つ以上のコンポーネントをプログラミングする方法には、適切な制御値をそれぞれの制御レジスタに書き込んだＣＰＵが含まれている。ひとたびコンポーネントがプログラミングされると、データ転送が始まり得る。一実施の形態では、１つ以上のコンポーネントは、Ｃプログラミングコードで書かれた関数（以下、活性化関数ＡＦとして言及）と、呼ばれたときにそのタグまたはアイデンティティがＡＦへ関数の引数として渡される構造体（以下、データ転送構造体ＤＴＳ）とを使って実行時間でプログラミングされる。データ転送構造体ＤＴＳは、あるアレイ内の幾つかのＤＴＳのうに１つであってもよく、それぞれのＤＴＳには、一実施の形態において、たとえばＤＭＡＣの制御レジスタに書き込むべき制御値が含まれる。ＭＣＵの１つ以上のコンポーネントが異なるデータ転送を実施するために再プログラミングを必要とする場合には、１つ以上のコンポーネントは、活性化関数ＡＦを再び呼び出して異なるＤＴＳタグまたはアイデンティティを渡すことによって、再プログラミングされる。前述に加えて、この開示はまた、ＤＴＳと埋め込みプログラムの他の態様とを生成するために開発者によって使用され得るツールと方法とを記述している。本発明は、ＭＣＵを参照して記述されるが、それに限定されるべきではない。
【００１３】
図１は、前述の活性化関数ＡＦが使用され得るＭＣＵ１００の例の関連コンポーネントを図示するブロック図である。用語ＭＣＵは、図１で示されたものに限定されるべきではない。ＭＣＵ１００は、ＣＰＵ１０２とメモリコンポーネントとを含み、当該メモリコンポーネントにはフラッシュメモリ１０４、ランダム・アクセス・メモリ（ＲＡＭ）１０６、レジスタ（不図示）を備える。また、ＭＣＵ１００は、周辺装置１０８〜１２０と、様々なコンポーネント（たとえば、ＲＡＭ１０６とＵＡＲＴ１１４）が相互に連通する通信システム１２２とを含む。以下でもっと十分に記述されるように、通信システム１２２はプログラム可能なＤＭＡＣを備える。汎用入／出力（Ｉ／Ｏ）ポートのようなＭＣＵ１００の付加的なコンポーネントが予想されるが、図示されていない。
【００１４】
フラッシュメモリ１０４は、主関数と、活性化関数ＡＦと、１つ以上のＤＴＳを含んだアレイ（配列）とを備える埋め込みプログラムを格納する。さらに、埋め込みプログラムは、関数ライブラリ、ハードウェア抽象化層（ＨＡＬ）ドライバ、通信スタック、リアルタイム・オペレーティング・システム（ＲＴＯＳ）などを備えるかもしれない。従来、埋め込みプログラムはアセンブリ言語で書かれていたが、Ｃ言語のような様々なハイレベルな言語が現在ではＭＣＵ用のコードを書くために使用される。本開示は、Ｃ言語で書かれた埋め込みプログラムを参照して記述されており、本発明がそれに限定されるべきではないことが理解される。
【００１５】
あるＭＣＵ製造者は、埋め込みプログラム開発を支援するために一組のツールである統合開発環境（ＩＤＥ）を提供する。ＩＤＥには、エディター、コンパイラ、およびリンカーのようなツールが典型的に含まれる。コンパイラは、Ｃ言語で書かれたソースコードをオブジェクトコードへ変換するコンピュータプログラム（または一組のプログラム）である。リンカーは、オブジェクトコードの１つ以上のファイルを取り込んでそれらを単一の実行可能なファイルに結合編集するコンピュータプログラムである。本開示が検討するＩＤＥは、本開示に従って１つ以上のデータ転送を実施するためのＭＣＵのコンポーネントのプログラムを作るのに必要とされるＣ言語構造（たとえばＤＴＳ）、コンスタント（定数）、デクラレーション（宣誓）などを含む１つ以上のソースコードファイルを生成するため開発者が使用できるグラフィカル・プログラミング・ツール（以下、パイプ信号ツールすなわちＰＳＴとして言及）もまた含む。以下でさらに十分に説明されるように、パイプ信号ツールＰＳＴは、開発者によって作成されたデータ転送のグラフィカル表現に基づいてソースコードファイルを生成できる。ＰＳＴによって作成された１つ以上のソースコードファイルは、他のソースコードファイルにコンパイルおよびリンクでき、当該他のソースコードファイルは、埋め込みプログラムを作成するために、ＡＦを含むファイルを備える。
【００１６】
ＲＡＭメモリ１０６は、埋め込みプログラムによって規定および使用されるデータ変数、１つ以上のデータバッファのアレイ、などを格納するために主に使用される。以下でさらに十分に説明されるように、変数およびアレイは、パイプ信号ツールＰＳＴを使う開発者によって指定（規定）され得る。また、ＭＣＵは、ＣＰＵ１０２、周辺装置１０８〜１２０、および通信システム１２２内に設置された特別な、急速アクセス可能な、専用メモリ回路であるレジスタ（図示せず）を含む。レジスタは、埋め込みプログラムの実行にとって極めて重要な計算結果、状態、制御値、および他の情報を格納するために使用される。以下でさらに十分に説明されるように、幾つかの制御レジスタは、本開示に従ってＤＭＡ転送のようなデータ転送を実施するためにプログラミングされ得る。本発明は、ＤＭＡデータ転送を実施するためにプログラミング・コンポーネントを参照して説明されており、本発明がプログラムＩ／Ｏを含めて他の種類のデータ転送に幅広く応用され得ることは理解される。
【００１７】
ＣＰＵ１０２は、埋め込みプログラムの命令を実行する。不図示であるけれども、ＣＰＵ１０２は、算術および論理演算を実行する算術論理装置（ＡＬＵ）と、オペランドをＡＬＵに供給するとともにＡＬＵ演算の結果を格納するレジスタと、（フラッシュメモリからの）取り出しとＡＦの命令を含めた命令の実行とを制御する制御装置と、を備える。本発明は、１つのＣＰＵ１０２を含むＭＣＵを参照して記述されており、本発明がそれに限定されるべきでないことは理解される。
【００１８】
継続して図１を参照して、周辺装置１０８〜１２０は、様々な専用関数を実施するハードウェアコンポーネントであり、様々なセッティングにおいてより容易な配置を可能にする。特別なＭＣＵにおける特定の周辺装置の有用性は、装置の製造／モデルに完全に依存する。ＭＣＵ１００の周辺装置は、動作態様を制御する値を書き込むことによりプログラミングされ得る。制御値は、ＭＣＵのアドレス・マップ内の特別なアドレス場所にＣＰＵ１０２によって書き込まれる。同様に、ＭＣＵ１００の周辺装置は、特別なアドレス場所からのデータの書き込みまたは読み出しによって使用される。ＣＰＵ１０２は、フラッシュメモリ１０４内の埋め込みプログラムの命令に従って周辺装置に制御値を書き込む。
【００１９】
図１の周辺装置の例には、汎用タイマー１０８、アナログ／デジタル変換器（ＡＤＣ）１１０、事象論理コントローラ（ＥＬＣ）１１２、ＵＡＲＴ１１４、割込み制御装置（ＩＣＵ）１１６、Ｉ２Ｓインタフェース１１８、および、ユニバーサル・シリアル・バス（ＵＳＢ）モデル１２０が含まれる。
【００２０】
図２Ａは、ＥＬＣ制御レジスタ１３０とＥＬＣ制御回路１３２とを備えたＥＬＣ１１２の例の関連コンポーネントを示している。ＥＬＣ制御回路１３２は、ＵＳＢモジュール１２０、ＡＤＣ１１０などのようなコンポーネントからイベント信号Ｅ１−ＥＮを受信する。ＥＬＣ回路１３２は、プログラマブル・スイッチ・マトリクスのように動作できる。要するに、受信されたイベント信号Ｅ１−ＥＮの何れかを、あるコンポーネントへの次の送信のための出力の何れかに切り替えるために、ＥＬＣ回路１１２はＣＰＵ１０２によってプログラミングされ得る。たとえば、ＥＬＣ回路１１２は、ＤＭＡ転送をトリガーするために周辺装置からＤＭＡＣへイベント（事象）信号を送信するようにプログラミングされ、または、ＥＬＣ１１２は、ＩＳＲをトリガーするためにＤＭＡＣからＩＣＵ１１６へイベント信号を送信するようにプログラミングされ得る。切り替えは、ＣＰＵ１０２によって制御レジスタ１３０へ書き込まれた制御値に基づいている。重要なことは、ＥＬＣ１１２は、ＣＰＵ１０２によって実行されるＡＦ命令に従ってプログラミングされ得ることである。
【００２１】
言及したように、ＭＣＵ１００はＩＣＵ１１６を備える。一般に、ＩＣＵは、ＩＳＲの有利になる命令の順次的なＣＰＵ実行を妨げるように動作する。ＩＣＵ１１６は、ＤＭＡＣからの割込み信号を含めた、内部的に発生した割込み信号を、ＥＬＣ１１２を介して直接的か間接的かのいずれかで受信する。一実施の形態では、ＩＣＵ１１６は、ＤＭＡＣからＩＣＵ１１６によって受信された割込み信号に対応するＩＳＲのメモリアドレスを使ってＣＰＵ１０２を規定できる。ＣＰＵ１０２は、ＩＣＵ１１６によって規定されたアドレスで始まるフラッシュメモリ１０４内に格納されたＩＳＲを実施する。ＣＰＵ１０２は、特別なイベント信号がアサートされたときに、ＩＳＲをトリガーするようにＩＣＵ１１６のプログラムを作ることができる。たとえば、ＩＣＵ１１６は、ＲＡＭ１０６に書き込まれたデータブロックを指し示すＤＭＡＣからの信号を探すためにＡＦによってプログラミングされ得る。そして、ＤＭＡＣが信号をアサートしたときに、ＩＣＵ１１６は、ＲＡＭ１０６に書き込まれたデータブロックを順番に処理するＩＳＲを開始する。一実施の形態では、ＩＳＲは、以下でさらに十分に記述されるように、パイプ信号ツールＰＳＴによってある程度生成され得る。
【００２２】
ＭＣＵ１０２は、メモリコンポーネント、ＣＰＵ１０２、周辺装置１０８〜１２０などの間でデータ、制御値、命令、アドレス、制御信号などを送信できる１つ以上のバスを順次含む通信システム１２２を備える。図示された実施の形態では、通信システム１２２は、制御値を含めた命令およびデータを送信するための分離バスを備え、それによりデータおよび命令アクセスを同時に起こさせるのを許容している。また、通信システム１２２は、データのＤＭＡ転送を制御するためにプログラム可能ＤＭＡＣを備える。図２Ｂは、アドレスバス２０４、データバス２０６、および制御ライン２０８を介してＣＰＵ１０２、ＲＡＭ１０６とのデータ通信をする通信システム１２２のＤＭＡＣ２０２の例を図示している。
【００２３】
ＤＭＡＣ２０２は、ＤＭＡデータ転送を実施するためにプログラミングされる。図示された例では、（ＵＡＲＴ１１４からのデータ有用性信号のような）イベントは、ＤＭＡＣ２０２に、データが転送準備されていることを知らせる。それから、ＤＭＡＣ２０２は、ＣＰＵ１０２にＤＭＡリクエスト信号をアサートし、データバス２０６を使用する許可を求める。ＣＰＵ１０２は、電流バス活性化を完了し、バス２０６を駆動するのを止め、ＤＭＡ確認信号をＤＭＡＣ２０２に戻す。それに応じて、ＤＭＡＣ２０２は、ＵＡＲＴ１１４から１バイトデータを読み出し、ＲＡＭ１０６にそのデータを書き込み、まるでＣＰＵであるかのようにアドレスバス２０４、データバス２０６、制御信号ライン２０８を駆動する。一般に、それぞれのＤＭＡ周期は、転送バスアドレスに依存してメモリの書き込みに続く周辺装置の読み出しか周辺装置の書き込みに続くメモリの読み出しかのいずれかで、少なくとも２つのバス周期を典型的にもたらす。注意すべきことは、ＤＭＡＣ２０２が周辺装置間でデータを転送することもできることである。
【００２４】
ＤＭＡＣ２０２は、転送するデータ上では処理を行わない。それは、その制御レジスタ内でプログラミングされた制御値によって命令されるようなバイトを単に転送する。転送が完了されたとき、ＤＭＡＣ２０２はバスを駆動するのを止め、ＤＭＡリクエスト信号をデアサートする。それから、ＣＰＵ１０２は、そのＤＭＡ確認信号を取り出し、バス２０４、２０６の制御を再開する。ＣＰＵ１０２は、ＩＳＲに従って転送されたデータを処理できるようにＤＭＡ転送が完了したときに、ＩＣＵ１１６を介してＩＳＲ用のアドレスもまた受け取ることができる。
【００２５】
上述したように、ＤＭＡ転送が開始可能である前に、ＣＰＵ１０２は、ＤＭＡＣ２０２のプログラムおよび／またはＥＬＣ１１２またはＩＣＵ１１６などのような他のコンポーネントのプログラムを作らなければならない。プログラミングプロセスは、非常に複雑であり、ＤＭＡＣのそれぞれの制御レジスタへの適切な制御値、ＩＣＵ１１６のベクトルテーブルへのベクトルアドレスなどをＣＰＵ１０２が書き込むことを伴う。ＤＭＡＣ２０２内でプログラミングされた制御値の例には、ひとたび転送が完了されるとＤＭＡコントローラがＣＰＵ割込み信号を生成すべきであろうとなかろうと、データが読み出されるべきソース（たとえばＵＡＲＴ１１４内のデータ受信レジスタ）のベースアドレスと、そのデータが書き込まれるべきデスティネーション（たとえばＲＡＭ１０６内のバッファ）のベースアドレスと、転送されるべきデータバイト（ワード）の数と、転送されるべき各データバイト（ワード）の幅とが含まれる。ＤＭＡＣ２０２内でプログラミングされた制御値に依存して、ＤＭＡＣが、各バイト（ワード）転送の後に、ソースおよびデスティネーションアドレスのうち一方または両方を自動的に増やすことは可能である。周辺装置間またはメモリと周辺装置との間でのデータ転送は、周辺装置のソースまたはデスティネーションアドレスがそれぞれの転送後に移動されないことを度々必要とする。異なる制御値は、ソースまたはデスティネーションアドレスが移動されないデータ転送のために必要とされる。
【００２６】
ＤＭＡＣは、典型的には、データ転送するためにバスを共用するＤＭＡチャンネルを幾つか有するが、共用しなければ独立したＤＭＡチャンネルを幾つか有する。ＤＭＡチャンネルのそれぞれは、メモリマップされたプログラム可能な制御レジスタの独自セットを含む。ＣＰＵは、１つのＤＭＡチャンネルを別のものに優先するプライオリティ値を持つそれぞれのＤＭＡチャンネルをプログムミングできる。それぞれのＤＭＡチャンネルは、周辺装置、ＣＰＵなどからイベントまたは制御値によってそのデータ転送がトリガーされるようにプログラミングされ得る。ＤＭＡチャンネルがどのようにプログラミングされるのかに依存して、特別のＤＭＡチャンネル内でのデータ移動は、ハードウェアトリガーかソフトウェアトリガーかのいずれかによって開始され得る。たとえば、ＵＡＲＴ１１４用のステータスビットは切り替わり、それにより新たなデータがＲＡＭ１０６内でバッファへのＤＭＡ転送の準備をすることを示しもよいし、または、Ｉ２Ｓ１１８用のステータスビットが切り替わってＭＣＵ１０２の外部のデバイスへの次の転送用に新たなデータを必要としていることを示してもよい。ＤＭＡチャンネルは、プログラミングされトリガーを受信したとき、必要とされるソースが有効になる（たとえばバスおよびメモリ位置）とすぐにデータを移動し始める。ＥＬＣ１１２は、適切なイベント信号をそれぞれのＤＭＡチャンネルに転送するためにプログラミングされてもよい。
【００２７】
ＤＭＡＣ２０２は、異なるＤＭＡ転送を実施するために、プログラミングかつ再プログラミングされ得る。たとえば、ＤＭＡＣ２０２のうちの１つのＤＭＡチャンネルは、ＵＳＢブロック１２０からＲＡＭ１０６内のバッファへデータ転送を実施するために、プログラミングされ得る。その後になって、同じＤＭＡチャンネルは、ＲＡＭ１０６内の別のブロックからＩ２Ｓ１１８へデータ転送を実施するために再プログラミングされ得る。または、２つのＤＭＡチャンネルは、データ転送を実施するために同時に再プログラミングされ得る。すなわち、１つは、ＵＳＢブロック１２０からＲＡＭ１０６内のバッファへのデータ転送を実施するためであり、もう１つは、ＲＡＭ１０６内の別のブロックからＩ２Ｓ１１８へのデータ転送を実施するためである。
【００２８】
昔、ＤＭＡＣ２０２と他のコンポーネントは、分離コードセグメントを使ってプログラミングまたは再プログラミングされていた。しかしながら、コードセグメントを記述する（書き込む）ことは、複雑かつ時間を要する。それらがコードセグメントを上手く書き込みできる前に、埋め込みプログラム開発者は、益々複雑になったＭＣＵの詳しい知識および理解を必要とする。典型的なＭＣＵのユーザーマニュアルは現在、１０００頁を超えることがある。ＤＭＡＣ２０２のようなコンポーネントは、新たな特徴および将来性において急成長しており、それらを所望な動作モードで完全に理解しかつ適切に構成することはさらに困難であった。残念ながら、ＤＭＡＣの全体にわたる複雑さのため、コードセグメントを書き込むときにエラー（誤差）をもたらしていた。もし開発者が複雑かつ非常に長いＭＣＵのユーザーマニュアルによって特定目的に用いられるルール（規則）に従わないならば、それらの埋め込みプログラムは所望のＤＭＡデータ転送を実施できないことが頻繁にある。
【００２９】
本開示は、これらおよび他の問題に取り組んでおり、ＣＰＵ１０２によって実行されたときフラッシュメモリ１０４内のアレイにおける多くのＤＴＳのうちいずれか１つに従ってデータ転送を実施するためにＤＭＡＣ２０２を含めたコンポーネントのプログラムを作る活性化関数ＡＦを提供（規定）する。一実施の形態では、ＣＰＵ１０２は、前述のＡＦの呼び出しに応えて制御値、ベクトルアドレスなどを使ってコンポーネントのプログラムを作る。さらに、プログラミングプロセスには、ＤＭＡＣなどで割り込まれた（中断された）場合にＣＰＵ１０２が実施するＩＳＲのベクトルアドレスを含むように、ＩＣＵ１１６のベクトルテーブルをアップデート（更新）することが含まれる。ＤＭＡＣ２０２、ＥＬＣ１１２、ＩＣＵ１１６などのプログラムを作るために必要とされる制御値および／または他のデータは、ＡＦへの呼び出しにおいて渡されたタグの中で識別されるＤＴＳによって決定される。ＡＦは、ＭＣＵ１０２の製造業者（メーカー）によってまたはＤＭＡＣ２０２を含めたＭＣＵ１０２を完全に理解する他のものによって開発または提供され得る。ＡＦは、ＭＣＵ１００の要件に適合するＭＣＵコンポーネントのプログラムをある順序で作ることができる。ＡＦとＤＴＳのアレイとは、その開発中に他の埋め込みプログラムとコンパイルおよびリンクされ得る。
【００３０】
また、本開示は、ＤＭＡ転送のグラフィック表示に基づいてＤＴＳ、デクラレーションなどを作り出すパイプ信号ツールＰＳＴを使ってＩＤＥを検討する。ＰＳＴは、開発者がＭＣＵ１０２内で１つ以上のＤＭＡ転送を図表で示して特定（規定）できるグラフィカル・プログラミング・インタフェース（ＧＰＩ）を提供（規定）する。一実施の形態では、データ転送のグラフィック表示は、ＤＭＡＣ２０２、ＲＡＭ１０６内のバッファ、周辺装置（たとえばＵＡＲＴ１１４）のようなコンポーネントのグラフィック表示をドラッグかつドロップすることにより、ＧＰＩの上で構築される（組込まれる）。それから、開発者は、コンポーネント表示間でデータラインおよび／または信号ラインを追加できる。データラインは、１つのコンポーネント表示から別のものへのデータ転送を特定する。信号ラインは、１つコンポーネントによって生成され別のコンポーネントによって受信されるイベント信号を特定する。イベント信号の受信に応えて、コンポーネントは、ある動作（アクション）を開始する。説明を簡単にするために、特に言及された場合を除き、ＧＰＩに対して言及されたときコンポーネント表示を「コンポーネント」と言うものとする。
【００３１】
ＰＳＴは、設定ウィザードを規定（提供）する。開発者は、設定ウィザードを使ってＧＰＩによって表示されたコンポーネントおよびラインのＤＭＡ転送パラメータを特定できる。転送パラメータの例は、コンポーネント間で転送されるべきデータの幅、転送されたデータを受信するＲＡＭ１０４内のバッファ名またはバッファのアレイ（配列）、バッファのサイズ、データが転送されるＤＭＡチャンネルのアイデンティティ、データの転送をトリガーするイベントのアイデンティティ、データ・サンプル・レートなどを含むが、それらに限定されない。ＰＳＴは、転送パラメータを含めた、図（図表）で特定されるデータ転送を「マップ」ファイル内に格納できる。マップファイルは、１つ以上の、図でデザインされたデータ転送を含んでもよい。開発者は、追加の、図でデザインされたデータ転送を含む追加ファイルを作成できる。
【００３２】
ＰＳＴは、ＤＴＳアレイ、バッファの定義またはバッファのアレイ、部分的な（一部の）ＩＳＲなどを含んだ１つ以上のソースファイルを生成するためにマップファイルを処理できる。ＰＳＴよって生成されたＤＴＳのそれぞれは、制御値、その制御値がＡＦにより書き込まれるべきアドレス、などを含んでも良い。ＤＴＳは、ＡＦに、適切なＨＡＬモジュールを介して実行時間で制御レジスタに直接的または間接的に制御値を書き込ませることを可能にする。重要なことには、ＰＳＴとＡＦは、実行時間でＤＭＡＣ２０２と他のコンポーネントとをプログラミングするための複雑なコードを書き込むために開発者が大きなユーザーガイドを参考にする必要性をなくす。
【００３３】
ＰＴＳによって生成されたソースファイルは、埋め込みプログラムを作成するために他のソースファイルでコンパイルされるとともにリンクされ得る。その結果は、フラッシュメモリ１０４内でプログラミングされ得る。実行時間で、ＤＴＳのアイデンティティ（たとえばタグ）は、ＡＦへの呼び出しで渡される。ＡＦは、ＤＭＡＣ２０２内の制御レジスタに１つ以上のＨＡＬモジュールを介して直接的か間接的かどちらかでＤＴＳのバイナリ制御値を書き込む。ＡＦは、ＥＬＣ１１２またはＩＣＵ１１６のような他のコンポーネントに、ＤＴＳの付加的な制御値または他の情報を書き込んでもよい。こうして、ＡＦは、対応ＤＴＳの１つ以上のバイナリ制御値をそれぞれの制御レジスタに書き込むことにより、ＤＭＡ転送のプログラムを作るために動作する。たとえば、ＡＦは、その制御値を読み取ってそれらをそれぞれの制御レジスタに書き込んだ後に、ＤＴＳ１によって規定（定義）されたデータ転送を実施できる。その後に、再度呼び出されたときにＡＦは、別のＤＴＳに従って異なるＤＭＡ転送を実施するために、ＤＭＡＣ２０２のレジスタに、バイナリ制御値の新たなセットのまるひとつを書き込むことができる。
【００３４】
上述したように、本開示は、ＰＳＴを含むＩＤＥを検討する。続けて図１〜図２Ｂを参照して、図３は、コンピュータシステム３００で実行するＰＳＴの例の関連態様を図示する。ＰＳＴは、開発者が１つ以上のデータ転送を図で特定できるＧＰＩ３０２を規定する。図示された例では、ＧＰＩ３０２は、第１および第２ＤＡＭデータ転送を特定するために使用される。
【００３５】
続いて図１と図３を参照して、第１ＤＭＡは、ＵＳＢモジュール１２０、ＤＭＡＣ２０２、ＲＡＭ１０６内のバッファ（すなわちｕｓｂ＿ｂｕｆｆｅｒ）、ＣＰＵ１０２のそれぞれのグラフ表示３０４〜３０９をＧＰＩ３０２上でドラッグおよびドロップすることにより作成される。データライン３１６、３１８は、付け加えられ、ＵＳＢモジュール１２０からｕｓｂ＿ｂｕｆｆｅｒへＤＭＡＣ２０２を介してデータフローを定義する。ＣＰＵ１０２の信号ライン３１９とグラフ表示とは、ＩＳＲ（すなわちＩＳＲ１）を開始するためのＤＭＡＣ２０２によって生成できる割込み信号（すなわちＤＭＡ１イベント）を定義するために付け加えられる。第２ＤＭＡ転送は、Ｉ２Ｓ１１８、ＤＭＡＣ２０２、ＲＡＭ１０６内のバッファアレイ（すなわちｕ２ｓ＿ｂｕｆｆｅｒ）のそれぞれのグラフ表示３１０〜３１４をＧＰＩ３０２上でドラッグおよびドロップすることによって作成される。データライン３２０、３２２は、付け加えられ、ＵＳＢモジュール２１０からＲＡＭ１０６内のバッファアレイ（すなわちｕｓｂ＿ｂｕｆｆｅｒ）へＤＭＡＣ２０２を介してデータフローを定義するために付け加えられる。
【００３６】
また、ＧＰＩ３０２は、開発者が第１および第２ＤＭＡ転送用のパラメータを特定できる設定ウィザード３３０〜３４０を示す。設定ウィザードは、表示されたコンポーネントまたはライン（たとえば信号ライン３１９）上での右クリックによって表示される。それぞれの設定ウィザードは、開発者がＤＴＳの作成、バッファの定義、ＩＳＲへの割込み信号のリンクなどに必要とするパラメータ（たとえば、チャンネル数、バッファアレイ名、データ幅など）を入力（エンター）できる１つ以上のフィールドを含む。たとえば、設定ウィザード３３２は、データが転送されるＤＭＡチャンネル数（すなわちチャンネル１）、転送されるべきデータの幅（すなわちバイト）、データ転送をトリガーするイベント信号のアイデンティティ（すなわちＵＳＢ０）を有する第１データ転送用のパラメータを、ユーザーに入力させることを可能にするフィールドを含む。図示された例では、第１データ転送をｕｓｂ＿ｂｕｆｆｅｒにトリガーするために選択された信号は、転送されるテータをそのバッファが含むときにＵＳＢ１２０のチャンネル０によって生成された信号である。パラメータの幾つかは、ドロップダウン方式のメニューを介して選択可能である。たとえば、設定ウィザード３２２は、内部的に生成された多くのイベント信号のうちいずれかを、たとえばイベント信号ＵＳＢ０などを開発者が選択できるドロップダウン方式のメニューを備える。ＰＳＴは、イベント信号ＵＳＢ０をＤＭＡＣ２０２に切り替えるようにＥＬＣ１１２をプログラミングするために必要とされる制御値を生成できる。設定ウィザード３３４は、開発者に、それぞれのバッファ（すなわち１０２４バイト）の名前（すなわちｕｓｂ＿ｂｕｆｆｅｒ）、サイズ、および、アレイ内のバッファ数（すなわち２）を含めた、第１データ転送で使用されるバッファ用のパラメータを特定することを許容している。設定ウィザードは、それらの対応コンポーネントに固有であることがある。たとえば、ＤＭＡＣ用の設定ウィザードは、バッファ用の設定ウィザード内に含まれたフィールドと異なるフィールドを含んでもよい。データライン３１６、３１８のようなデータラインは、ＤＭＡ転送のために幾つかの制御値を定義するためにＰＳＴによって使用され得る。図示された実施の形態では、データライン３１６、３１８は、ＧＰＩ３０２内でそれらの接続を与えられる第１ＤＭＡ転送用のソースおよびデスティネーションとしてＵＳＢチャンネル０およびｕｓｂ＿ｂｕｆｆｅｒを定義する。この情報により、ＰＳＴは、適切な値をＤＭＡＣ２０２内のチャンネル１のソースおよびデスティネーション制御レジスタのために選択可能である。加えて、この情報により、ＰＳＴは、ＤＭＡチャンネルがＵＳＢ１２０およびＲＡＭ１０６と正確にインタフェースできるように、適切な制御値をチャンネルのＤＣＲレジスタのために選択可能である。
【００３７】
ＰＳＴは、埋め込みプログラムでの使用のために一部のＩＳＲを開発者に定義するのを可能にする。一部のＩＳＲは、ＤＭＡ転送を介してＲＡＭ１０６へ転送されたデータを処理するための命令を含むように開発者によって編集され得る。一実施の形態では、ＩＳＲは、ＤＭＡＣ２０２を介してＲＡＭ１０６へのデータ転送を完了した後に、割込み信号を生成するＤＭＡＣ２０２に応じて開始され得る。ＧＰＩ３０２は、ＤＭＡＣ２０２によって生成された割込み信号をそれぞれのＩＳＲにリンクするために使用され得る。一部のＩＳＲは、処理されるＲＡＭ内のデータの位置と量を使ってＣＰＵ２０２を定義するコードと一緒に生成される。図３で図示された例では、ＣＰＵ表示３０９は、第１データ転送に関連する一部のＩＳＲをセットアップするためにＧＰＩ３０２上でドラッグおよびドロップされた。信号ライン３１９は、ＩＳＲ用のパラメータを定義するために加えられた。これらのパラメータは、設定ウィザード３４４を使って定義され得る。図示された例では、設定ウィザード３４４は、ＩＳＲ１、そのＩＳＲの名前、ＤＭＡ１イベント、割込みラインのアイデンティティを定義するために開発者によって使用され、ＤＭＡ１イベントは、実行時間でｕｓｂ＿ｂｕｆｆｅｒへのデータ転送を完了したときにＤＭＡチャンネル１によって生成された信号である。ＰＳＴは、設定ウィザード３４４および他の情報に入力されたパラメータを使って、ｕｓｂ＿ｂｕｆｆｅｒがどこに設置されるのかをＣＰＵ２０２に伝えるコードを初めに含んだ一部のＩＳＲを作成する。それから、開発者は、ｕｓｂ＿ｂｕｆｆｅｒ内に格納されたデータを処理するために、ＩＤＥエディターを使う一部のＩＳＲに付加コードを加えることができる。
【００３８】
続いて図１〜図３を参照して、図４は、ＡＦ４０２とフラッシュメモリ１０４内に格納されたＤＴＳのアレイ４０４とのブロック線図表示を図示する。ＡＦ４０２は、ＣＰＵ１０２上で実行する命令の形を取り、ＭＣＵ１００のアーキテクチャに固有である。ＣＰＵ１０２は、ＡＦへの呼び出しにおいて渡されアレイ４０４内でＤＴＳを識別するタグ（以下、ＤＴＳ  ＩＤ）を使ってアレイ４０４にアクセスできる。説明のために、フラッシュメモリ１０４内に埋め込まれたプログラムが、ＡＦを呼び出す多重命令を含み、多重命令のそれぞれには引数としての分離ＤＴＳ  ＩＤを備えると仮定する。要するに、呼び出し命令は、ＤＴＳ  ＩＤ引数を除いて相互に同一である。アレイ４０４は、それぞれのＤＴＳに対してＤＴＳ  ＩＤをマップする。それぞれのＤＴＳは、１つ以上のバイナリ制御値を定義する。加えて、それぞれのＤＴＳは、バイナリ制御値が書き込まれた制御レジスタのアドレスまたは他のアイデンティティを定義してもよい。追加の情報は、それぞれのＤＴＳ内に格納されてもよい。ＡＦ４０２は、ＤＴＳ内で定義されたバイナリ制御値をＤＭＡＣ２０２の適切な制御レジスタに直接的または間接的に（１つ以上のＨＡＬモジュールを介して）書き込む。ひとたび制御値がＤＭＡＣ２０２に書き込まれると、ＤＭＡＣ２０２がＤＴＳに対応するデータ転送を実施するようにプログラミングされることは、当業者なら理解する。
【００３９】
図５は、一実施の形態による、ＡＦ４０２によって実施されたプロセスの例を図示する。そのプロセスは、ＡＦ４０２を呼び出す命令を実行するＣＰＵ１０２に応えて開始される。それに返答して、ＡＦ４０２の実行中にＣＰＵ１０２は、呼び出し命令において渡されたＤＴＳ  ＩＤを使ってアレイ４０４にアクセスし、ＤＴＳ  ＩＤにマップされたＤＴＳのバイナリ制御値を読み出す。ステップ５０６では、ステップ５０４で読み出されたバイナリ制御値は、ＤＭＣＡ２０２のそれぞれの制御レジスタにおよび／またはＭＣＵ１００の他のコンポーネントに直接的または間接的に書き込まれる。ひとたびＤＭＡＣ２０２および／または他のコンポーネントがプログラミングされると、プログラム制御はステップ５１０で示されるように埋め込みプログラムに戻される。
【００４０】
ＡＦ４０２がＭＣＵ１０２のアーキテクチャに固有であることに留意するべきである。ＡＦ４０２は、他のソース・コード・コンポーネントにコンパイルおよびリンクされ得る場合に、インターネットを介してコンピュータシステムにダウンロード可能である。ＡＦ４０２は、それぞれのＤＭＡデータ転送をプログラミングするための複雑なコードをプログラム開発者が書き込む必要性をなくす。むしろ、プログラム開発者は、それぞれのデータ転送を実施するためにＤＴＳ  ＩＤをＡＦ４０２に渡す呼び出し命令を加えることのみを必要とする。これにより、ＭＣＵに対してバグ無し埋め込みプログラムを開発するタスクが非常に単純化される。ＤＴＳは、作成されて、上述されたＰＳＴを使うプログラムメモリ１０４にその後にダウンロードされ得る。一実施の形態では、ＰＳＴは、コンピュータシステムのマイクロプロセッサ上で実行する命令の形を取っても良い。ＡＦのように、ウィザードはインターネットを介してサーバーコンピュータシステムからダウンロードされ得る。ＡＦは、自身によって、または、コードエディタ、コンパイラ、およびリンカーを含んだパッケージにおいてダウンロード可能である。
【００４１】
本発明は、幾つかの実施の形態に関して記述されたが、ここで詳述された特有の形態に限定されるよう意図されていない。それどころか、添付された請求項によって規定されるような発明の範囲内に合理的に含まれ得るような変更、変形、および等価物を覆うよう意図される。
【図１】
2019512135.tif 000003
【図２Ａ】
2019512135.tif 000004
【図２Ｂ】
2019512135.tif 000005
【図３】
2019512135.tif 000006
【図４】
2019512135.tif 000007
【図５】
2019512135.tif 000008
【国際調査報告】
2019512135.tif 000009