7.3.3. デバッガからターゲットへの通信

以下は、ホストで実行されているデバッガからコアで実行されているアプリケーションにメッセージを転送するときのイベントシーケンスです。

  1. デバッガが通信データ制御レジスタの R ビットをポーリングします。R ビットがクリアされている場合は、通信データ読み出しレジスタがクリアされているので、ターゲットアプリケーションが読み出すデータをこのレジスタに書き込むことができます。

  2. デバッガがスキャンチェイン 2 を経由して、通信データ読み出しレジスタにデータをスキャンインします。これによって通信データ制御レジスタ内の R ビットが自動的に設定されます。

  3. ターゲットアプリケーションが通信データ制御レジスタ内の R ビットをポーリングします。このビットが設定されている場合は、アプリケーションがコプロセッサ 14 からの読み出しを行う MRC 命令を使用して読み出すことができるデータが、通信データ読み出しレジスタ内に存在します。R ビットはこの読み出し命令によってクリアされます。

Example 7.2 のターゲットアプリケーションコードは、このシーケンスを示しています。このサンプルコードは、主なサンプルディレクトリの ...\dcc\inchan.s に収録されています。

サンプルを実行するには

  1. And goodbye! などの文字列を含む入力ファイルをホスト上で作成します。

  2. 以下のコマンドを入力し、inchan.s をアセンブルします。

    armasm --debug inchan.s
    
  3. 以下のコマンドを入力し、出力オブジェクトをリンクします。

    armlink inchan.o -o inchan.axf
    

    このリンク手順で、実行可能ファイル inchan.axf が作成されます。

  4. イメージをロードして実行します。詳細については、デバッガのマニュアルを参照して下さい。

Example 7.2. 

     AREA  InChannel, CODE, READONLY
     ENTRY
     MOV   r1,#3          ; Number of words to read
     LDR   r2, =indata    ; Address to store data read
pollin
     MRC   p14,0,r0,c0,c0 ; Read control register
     TST   r0, #1
     BEQ   pollin         ; If R bit clear then loop
read
     MRC   p14,0,r3,c1,c0 ; read word into r3
     STR   r3,[r2],#4     ; Store to memory and
                          ; update pointer
     SUBS  r1,r1,#1       ; Update counter
     BNE   pollin         ; Loop if more words to read
     MOV   r0, #0x18      ; Angel_SWIreason_ReportException
     LDR   r1, =0x20026   ; ADP_Stopped_ApplicationExit
     SVC   0x123456       ; ARM semihosting (formerly SWI)

     AREA  Storage, DATA, READWRITE
indata
     DCB   "Duffmessage#"
     END
Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0203GJ
Non-Confidential