2016年08月22日

Beaglebone(13): レジスタ画面で調査

Attach出来ました。 昨日のページはこちら → Beaglebone(12): Attachしてみよう

それで、今日はレジスタ画面で調査をします。

Attachした状態で以下の操作をします。
BeagleA027.png

すると、レジスタ画面が表示されます。
BeagleA028.png

ここで大事なのは、CPSRです。

BeagleA029.png
動作モードが右の5ビットで表示されいます。
これを見ると特権モードの1つであるSystemで動作していることが解ります。
BeagleA030.png

あとTビットが0なので、命令としてはARM命令を使っていることも確認できます。







続きを読む
posted by EWARMJP at 12:00| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2016年08月21日

Beaglebone(12): Attachしてみよう

昨日、Beaglebone Blackにアタッチするためのプロジェクトを作成しました。⇒Beaglebone(11): Attachする準備


EWARMではバージョンによってAttachの仕方が違います。
いま私が使っているバージョンは、EWARMの7.60.1ですので、バージョンにはご注意ください。
BeagleA025.png

あっけなくつながりました。
BeagleA026.png

実は、いろいろトラブルが起きるかと思っていたので、拍子抜けです。
これから、すこしずつ調査を進めていきます。

posted by EWARMJP at 12:00| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2016年08月20日

Beaglebone(11): Attachする準備

それでは、Beaglebone Blackの今動いているところに、EWARMからattachして接続してみます。

1)適当なプロジェクトを作ります。
BeagleA020.png
BeagleA021.png
BeagleA022.png

プロうグラムはこれで十分です。

2)プロジェクトオプションを変更します。今回は、I-jetを使う設定です。
まずマイコンをAM3359に設定します。
BeagleA023.png


デバッガをI-jetに変更します。
BeagleA024.png



ここまでオプション設定を保存しておきましょう。






posted by EWARMJP at 13:00| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2016年08月19日

Beaglebone(10): JTAG接続のICEって3?

話がそれたついでにもう少し、逸れてみましょう。
JTAG接続について昨日はこちら → Beaglebone(9): JTAG接続のICEって2?

実際にどんな通信をしているのか?リアルなコードを見ることが出来ます。

Porting the CMSIS-DAP debugger to the Cortex-M0 platformという資料があります。https://www.lpcware.com/content/nxpfile/an11321-porting-cmsis-dap-debugger-cortex-m0-platform


その中にソースコードがあるのですがJTAG接続周りのコードはJTAG_DP.cというファイルに入っています。
// Generate JTAG Sequence
//   info:   sequence information
//   tdi:    pointer to TDI generated data
//   tdo:    pointer to TDO captured data
//   return: none
void JTAG_Sequence (uint32_t info, uint8_t *tdi, uint8_t *tdo) {
  uint32_t i_val;
  uint32_t o_val;
  uint32_t bit;
  uint32_t n, k;

  n = info & JTAG_SEQUENCE_TCK;
  if (n == 0) n = 64;

  if (info & JTAG_SEQUENCE_TMS) {
    PIN_TMS_SET();
  } else {
    PIN_TMS_CLR();
  }

  while (n) {
    i_val = *tdi++;
    o_val = 0;
    for (k = 8; k && n; k--, n--) {
      JTAG_CYCLE_TDIO(i_val, bit);
      i_val >>= 1;
      o_val >>= 1;
      o_val  |= bit << 7;
    }
    o_val >>= k;
    if (info & JTAG_SEQUENCE_TDO) {
      *tdo++ = o_val;
    }
  }
}

そこで、JTAG_CYCLE_TDIOを見てみると、データを入れてクロックを落として、データを読んでクロックを上げてどいう動作をしています。
#define JTAG_CYCLE_TDIO(tdi,tdo)        \
  PIN_TDI_OUT(tdi);                     \
  PIN_TCK_CLR();                        \
  PIN_DELAY();                          \
  tdo = PIN_TDO_IN();                   \
  PIN_TCK_SET();                        \
  PIN_DELAY()

これで、内部のレジスタにアクセスが出来るので、あとは、ICEとしても使ったりすることが出来るわけですね。







posted by EWARMJP at 12:00| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2016年08月18日

Beaglebone(9): JTAG接続のICEって2?

JTAG接続ってなに?ってところですが、今日は具体的なところに行きます。
昨日の話はこちら → Beaglebone(8): JTAG接続のICEって1?


実際にテストするときにどのようなピンを持っているかというと、以下の5本です。ただ、TRSTは実装しなくても良いようです。
TDI (Test Data In)
TDO (Test Data Out)
TCK (Test Clock)
TMS (Test Mode Select)
TRST (Test Reset)


そうすると、テストだけを考えるとこれだけでテストできます。
BeagleA018.png

さらにJTAGの良いところは、こうした部品をディジーチェーンでつなげることが出来るところです。
BeagleA019.png

この絵何か見え覚えがないでしょうか?
これです。。
BeagleA014.png


posted by EWARMJP at 12:00| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2016年08月17日

Beaglebone(8): JTAG接続のICEって1?

そういえば、ARMで使用するICE(ハードウェアデバッガ)は、JTAG-ICEと言われたりすること多いです。
すこしJTAGって何?ってところを調べてみます。

このJTAGって呼ばれているものの正体は、IEEEで標準化されているIEEE 1149.1という規格です。
このIEEE 1149.1は、半導体のテストをするための仕組みで、現在多くの半導体で使われている技術になります。
半導体って写真を重ねていくように、トランジスタを作り、配線をシリコンの上に作りこみます。丸いシリコンの上に以下のようにたくさんの半導体を作り、カットして半導体パッケージに実装します。
BeagleA015.png

工場で作ったチップがすべて正しく動作する保証はありません。
そのために、現在の半導体は出荷前にテストを実施します。

このテストが普通では難しいのです。テストは入力となるテストパターンを用いて実際に半導体を動作させて、出力値を期待値と比較して想定している値が出力されているかを確認します。
BeagleA016.png


半導体を設定するときには、記憶素子(レジスタ、メモリ)と組み合わせ回路の2つで構成されているのですが、
通常の機能(たとえば、マイコンではマイコンとしての機能そのもの)だけで、良品か不良品の判定をすることは実はできませんので、
通常の機能のほかにテスト容易化設計を実施して、すべての記憶素子だけをつなぎ合わせて、外部から値をすべて書き換え/読み出しが出来るようにします。一般的にはスキャンパスと呼ばれると思いますが、このスキャンパスを用意しておくとテストが容易に実施できます。
BeagleA017.png






posted by EWARMJP at 12:00| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする