keilダウンロードプログラムの具体的なプロセス2:ハードウェアリンク

導入

        このブログでは、プログラムをダウンロードする過程でイメージ ファイルが通過するハードウェアと、それらの間の取り決めについて簡単に説明します。

1. ハードウェア接続

図 1 ハードウェア接続

        PC、jlink、チップを ubs ラインと swd ラインで接続した後、PC 上の keil ソフトウェアで、対応するエミュレータを選択し、ダウンロード プロトコルを選択します。

 図2 エミュレータの選択

 図 3 エミュレータの構成

        図 2 では、jlink ダウンローダーを選択します。図 3 からわかるように、jlink の SN は 20090937 (図 2 の 1)、ダウンロード インターフェイスは SW インターフェイス (図 2 の 2)、およびチップは (図 2 3)

        図 2 のパート 3 では、チップ内の SWJ-DP の ID である 0x2BA01477 が確認できます。デバイス名の下の ARM CoreSight SW-DP は、使用するデバッグ コンポーネントの名前です。CoreSight は、SOC での複雑なデバッグとトレースを処理するために ARM が提案したデバッグ アーキテクチャです。複数のコンポーネントが含まれています。keil でデバッグすると、keil の各ウィンドウに表示されるデータ、ブレークポイント、および単一ステップの実行などの操作がサポートされますこのアーキテクチャによって。

二、DAP

1.SWDプロトコル

        jlink とチップは、SWD (シリアル ワイヤ デバッグ) インターフェイスを介して、SWD プロトコルを使用して接続されます。正確に言うと、SW-DP は SW プロトコルのみをサポートし、SWJ-DP は jtag と sw プロトコルをサポートし、ブロガーは sw-dp を使用するため、以下の記事では特に断りのない限り SW-DP インターフェイスを参照します。SWD はデータ パケットを送信することでチップのレジスタを読み書きできます。SWD は、ARM デバッグ インターフェイスにアクセスするための 2 線式プロトコルです。これは ARM デバッグ インターフェイス アーキテクチャ仕様 (ARM デバッグ インターフェイス アーキテクチャ仕様) の一部であり、JTAG の代替品です。SWD の物理層は 2 つの行で構成されます。

SWDIO: 双方向データライン

SWCLK: ホストによって駆動されるクロック ライン

図 1 では、SW-DP が DAP バスを介して AHB-DP に接続されていることがわかります。

図4

        この部分は、SWD インターフェイスに関与するハードウェアです。シリアル ワイヤ デバッグ ポート (SW-DP) には、SWDIO/SWCLK に接続することで直接アクセスできます。SW-DP は、システムの残りの部分が登録する 1 つ以上のアクセス ポート (AP) にアクセスできます。Cortex M シリーズ CPU の重要な AP は、内部 AHB バスのマスターである AHB-AP です。言い換えれば、AHB-AP は内部コアのメモリ マップにアクセスできます。内部フラッシュ、SRAM、デバッグ コンポーネント、周辺機器はすべてメモリ マップされているため、AHB-AP はプログラミングを含むデバイス全体を制御できます。SWD の動作プロセス全体は段階的に実行され、クロック信号は SWCLK ピンによって入力され、データ信号は SWDIO ピンによって入出力されます。まず、デバッガは SW-DP を操作し、AP レジスタのパラメータを決定し、Cortex メモリ マップを操作します。

2、AHB-AP

        SW-DP と AHB-AP は DAP バスを介して通信します。DAP バス上のアドレスは 32 ビットで、上位 8 ビットはアクセスするデバイスの選択に使用されます。最大 256 台のデバイスがハングアップできることがわかります。 DAPバス上の機器。M3 プロセッサ内では、デバイス アドレスは 1 つだけ使用され、残りの 255 はアクセス ポート (AP) を DAP バスに接続するために使用できます。データがDAPインターフェースに送信されると、次のステップは「AHB-AP」と呼ばれるAPデバイスに接続することです。これは、DAPバスのコマンドをデータ送信に変換するために使用されるバスブリッジに相当します。 AHB バス上で接続し、M3 内のバス ネットワークに接続します。このようにして、NVIC に設定されたデバッグ制御レジスタを含む、M3 のアドレス空間全体がカバーされます。CoreSight シリーズ製品には、APB-AP や JTAG-AP など、数種類の AP デバイスがあります。名前が示すように、APB-AP は APB バス データ送信アクションの生成に使用され、JTAG-AP は従来の JTAG ベースのテスト インターフェイスの制御に使用されます。

        AHB-AP は CM3 のメモリ システムとデバッグ インターフェイス モジュール (SWJ-DP/SW_DP) の間に配置され、バス ブリッジとして機能します。デバッグ ホストと CM3 システム間の最も基本的なデータ転送では、AHB-AP 内の 3 つのレジスタのみを使用する必要があります。それらは、コントロールおよびステータス ワード (CSW)、転送アドレス レジスタ (TAR)、データ読み取り/書き込み ( DRW)。

        CSW レジスタは、転送方向 (読み取り/書き込み)、転送サイズ、転送タイプを制御できます。TARレジスタは転送アドレスを指示し、DRWレジスタは転送するデータを保持します(レジスタにアクセスすると転送が開始されます)。DRW のデータはバス上に実際に表示されるものと一致しているため、ハーフワードおよびバイト転送の場合、結果のデータはデバッグ ハードウェアによって適切にシフトされて LSB に揃えられる必要があります。たとえば、アドレス 0x1002 でハーフワード転送を実行する場合、データを DRW の [31:16] に配置する必要があります。AHB-AP は非整列転送を生成できますが、アドレス オフセットに従ってターゲット データのサークル シフトを自動的に実行しません。この穴はデバッグ ソフトウェアによって塞がれる必要があります。手動でサークル シフトするか、非整列アクセスを複数の整列アクセスに分解するかのいずれかです。 。

        AHB-AP には追加機能を提供する他のレジスタがあります。たとえば、AHB-AP は 4 つのバンク レジスタとアドレス自動インクリメント機能を提供し、狭い範囲の連続アドレスでのデータ アクセスを高速化します。CSW レジスタには、MasterType と呼ばれるビットもあります。通常、AHB-AP データ送信に参加しているハードウェアに、データ送信がデバッガによって開始されたことを通知するには、1 に設定する必要があります。ただし、デバッガはこのビットをクリアしてプロセッサ コアを偽装することもできます。このようにして、AHB でデータを受信するハードウェアは、それがカーネルによって開始されたデータ転送であると認識し、正常に動作します。この機能は、特に FIFO を備えたペリフェラルのテスト目的で使用して、デバッガからアクセスされたときにどのように動作が異なるかを知ることができます。

3.ROMテーブル

        そういえば、説明されていない問題があるのですが、JLink は SW 線で SW-DP モジュールに接続されているのですが、AHB-AP がどこにあるのかはどうやってわかるのでしょうか?ここでROMテーブルが登場します。
        ROM テーブルは、M3 コアに含まれるデバッグ システムの一部であり、CM3 チップにどのデバッグ コンポーネントが含まれているかを自動的に検出するために使用されます。
        CM3 には事前定義されたメモリ マップがあり、標準のデバッグ コンポーネントが含まれていますが、新しい Cortex-M デバイスには異なるデバッグ コンポーネントを含めることができ、チップ メーカーは CM3 の実装時にデバッグ コンポーネントを変更することもできます。デバッグ ツールがデバッグ システムに含まれる特定のコンポーネントを検出できるようにするために、NVIC と各デバッグ機能ブロックのアドレスを記録するこの ROM テーブルが提供されます。
        ROM テーブルは 0xE00F_F000 にあります。ROM テーブルの内容を分析することにより、メモリ システム内のシステムおよびデバッグ コンポーネントの位置を計算できます。デバッグ コンポーネントを検出した後、デバッガーはその ID レジスタを調べて、システムでどのコンポーネントが使用できるかを判断できます。
        CM3 の ROM テーブルでは、最初のエントリの内容は、ROM テーブルのエントリ アドレスに対する NVIC のエントリ アドレスのオフセットである必要があります。ROM テーブルの最初のエントリのデフォルト値は 0xFFF0F003 で、ビット フィールド [1:0] の役割は非常に特殊です。これは、このエントリに対応するデバイスが存在し、このエントリの後ろに後続のエントリがあることを示します (つまり、このエントリ エントリは最後のエントリではありません)。このように、最初のエントリによって、システムに NVIC が存在し、2 番目のエントリがあることがわかり、NVIC のアドレスは 0xE00F_F000+0xFFF0_F000=0xE000_E000 として計算できます。
        デフォルトの ROM テーブルを図に示します。ただし、チップ メーカーは一部のオプション コンポーネントを追加、削除、および他の CoreSigth デバッグ コンポーネントと置き換えることができるため、チップの ROM テーブルは、対応する変更を反映するためにデフォルトのものとは異なります。

Cortex-M3 のデフォルト ROM テーブル。

        値の下位 2 ビットは、デバイスが存在するかどうか (ビット [1])、およびその背後に他のエントリがあるかどうか (ビット [0]) を示すために使用されます。通常の状況では、NVIC、DWT、および FPB が常に存在する必要があるため、最後の 2 ビットは常に 1 になります。ただし、TPIU と ETM は削除でき、場合によっては CoreSight ファミリの他のデバッグ コンポーネントに置き換えることができます。
        値の上位部分は、ROM テーブルのエントリ アドレスに対する対応するコンポーネントのエントリ アドレスのオフセットを与えるために使用されます。たとえば、NVIC エントリ アドレス = 0xE00F_F000 + 0xFFF0_F000 = 0xE000_E000 (キャリー ビットは無視されます)
        デバッグ ツールを開発するときは、代替の CM3 チップが使用されることは避けられないため、ROM テーブルから各デバッグ コンポーネントを 1 つずつチェックする必要があります。デバッグ コンポーネントをカスタマイズし、ROM テーブルを変更すると、ROM テーブルの計算によって得られたアドレスを使用して決定を行うことができます。

        この時点で、keil が [ダウンロード] ボタンをクリックした後、JLink が SW ラインを介してチップの SW-DP インターフェイスに接続し、内部 AHB-AP インターフェイスと通信し、AHB-AP がバスと通信し、その後4G アドレス空間全体にアクセスします (チップのすべてのアドレスにアクセスできます)。

3、フラッシュ

        データが AHB バス (AHB バス、APB バス、2 つはバス ブリッジを介して接続されている) に送信された後、M3 コア上の 4G アドレス空間全体に送信でき、M3 コア上のすべてのリソースを使用できます。フラッシュはバス上の AHB にマウントされます。一般に、プログラムを保存するフラッシュは AHB バスに実装されます。これは、AHB バスが APB バスよりもはるかに高速であり、UART やタイマーなどの低速周辺機器が搭載されているためです。この言葉については後で説明します)。プログラムの自然なアクセス速度は速いほど良いため、AHB バスに実装されます。フラッシュ接続バスと M4 コアの接続図 (M3 コアと M4 コアの違いはそれほど大きくなく、この記事では 2 つの違いについては触れません。読者はこの記事では 2 つが同じであると考えることができます)シリーズ記事)を図に示します。

 

         M3 コアには、命令バス (I-BUS)、データ バス (D-BUS)、およびシステム バス (System-BUS) の 3 つのバスがあります。3 つのバスには、それぞれ独自のアドレス バス、データ バス、および制御バスがあります。M3 コアは Haval 構造であるため、命令バスとデータ バスがあり、2 つは並列に値を取得します。命令バスはバス マトリックスに接続された XIP インターフェイスを介して FLASH からデータ (命令) をフェッチし、データ バスは XIP を介してフラッシュからデータをフェッチし、RAM からデータを読み書きします。システム バスはその他のリソースにアクセスします。上の写真のROMを参照してください。その機能は次の記事で紹介されています。

        ここまで、使用するハードウェアと使用するプロトコルを紹介してきましたが、SWD や DAP などのプロトコルについてはブロガー自身が詳しく調べたわけではありませんので、この記事の主題とはあまり関係ありません。データの流通プロセス。

おすすめ

転載: blog.csdn.net/zichuanning520/article/details/132252353