openocd.exeとOOCD-JTAGボードを使ったデバッグの準備

目次 > openocd.exeとOOCD-JTAGボードを使ったデバッグの準備

OOCDのインストール OOCD-JTAGを使ったブート書き込み


openocd.exeとOOCD-JTAGについて


openocd.exeはオープンソースのJTAGサポートソフトで、openocd.exeがサポートするJTAGインターフェースボードの回路がいくつか公開されています。
JSD OOCD-JTAGボードはUSBインターフェスICで著名なFTDI社のFT2232Dを使ったopenocd.exe互換のJTAGインターフェースボードです。
ここではOOCD-JTAGボードとSTM32F103-P52CPUボードを使ったブート書き込みの例を紹介します。

STM32F103-P52 CPUボードの設定

  1. CPUボードとOOCD-JTAGボードを接続する

    CPUボードとJTAGボードをJTAGでつなぎ、それぞれPCにUSBコネクタで接続します。

  2. プロジェクトパスにoocdJTAG_Debug.cfgファイルを用意する
    プロジェクトパスに置くoocdJTAG_Debug.cfgファイルの内容は下記のとおりです
    新しいプロジェクトで使う場合サンプルプロジェクトにあるファイルをコピーしてそのまま使うことができます
    赤字の部分はinsight(GDB)からFlashの書き換えを禁止するための設定です、デフォルトではinsightからFlashROMにプログラムを書き込んで実行することが可能となっています。
    モニタ起動のプログラムをデバッグするときはinsightがヘッダ部分を書き換えてしまいモニタから起動できなくなるため赤字の部分を追加してください。

    oocdJTAG_Debug.cfg

    # Open On-Chip Debugger
    # (c) 2005 by Dominic Rath
    # (snapshot r247 from SVN tree + giveio, no official release, compiled my mifi)
    #
    # --help | -h display this help
    # --file | -f use configuration file <name>
    # --debug | -d set debug level <0-3>
    # --log_output | -l redirect log output to file <name>

    # daemon configuration

    # logging
    #debug 3

    # default ports
    telnet_port 4444
    gdb_port 3333

    daemon_startup reset

    #gdb_flash_program enable
    gdb_flash_program disable


    # interface configuration

    interface ft2232
    ft2232_device_desc "oocdJTAG A"
    ft2232_layout jtagkey
    #ft2232_latency 20
    jtag_speed 10

    jtag_nsrst_delay 100
    jtag_ntrst_delay 100

    reset_config trst_and_srst

    # scan chain configuration

    # jtag_device L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
    jtag_device 4 0x1 0xf 0xe
    jtag_device 5 0x1 0x1 0x1e

    # target configuration

    # target <type> <startup mode>
    # target cortex_m3 <endianness> <reset mode> <chainpos> <variant>
    target cortex_m3 little reset_halt 0
    #target cortex_m3 little run_and_init 0
    #target cortex_m3 little run_and_halt 0
    #target cortex_m3 little reset_init 0

    # run_and_halt_time <target> <time_in_ms>
    run_and_halt_time 0 0

    # working_area <target> <address> <size> <backup|nobackup>
    working_area 0 0x20000000 0x5000 nobackup

    ## flash bank <driver> <base> <size> <chip_width> <bus_width> <target> [options]
    ## flash bank stm32x <base> <size> 0 0 <target>
    flash bank stm32x 0x08000000 0x10000 0 0 0

    # script configuration

    # target_script <target> <event> <script_file>
    #target_script 0 reset flash.script    

  3. JDEの基本設定画面でデバッグにopenocd.exeを使うよう設定する



    OOCD-JTAG起動コマンドの欄に openocd.exe -f oocdJTAG_Debug.cfg と入力します

  4. デバッグ構築したプログラムをターゲットボードに書き込む( gdb_flash_program disableを設定している場合のみ)

    デバッグ構築の欄にチェックを入れ、転送ツールとしてJTW32を指定してモニタ書き込みをおこないます。

    ROM化ボタンをクリックしてターゲットファイルをコンパイルしCPUボードに書き込みます。

    書き込み状態はJTW32画面に表示されます。

  5. insight(GDB)を起動する

    デバッガ起動ボタンをクリックしてinsight(GDB)を起動します。

  6. insight(GDB)の初期設定
    最初にinsightを起動したときには初期設定が必要です Run > Connect to target を実行します


    Target Selection ウィンドウで次のように設定しOKをクリックします


    Successfully connected と表示されたらinsightとCPUボードが正常に接続されています。


    i以上でinsightを使ったデバッグを始めることができます。
  7. insight 終了時の注意


    insightの実行中はopenocd.exeが起動したままになっていてinsightを終了してもopenocd.exeは自動的に終了しません。

    ターゲットファイルの構築などはJDE側で並行して実行することが出来ますが、insight終了時にコンソール画面左上のボタンをクリックしてopenocd.exeを終了することを忘れないようにして下さい。