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ボードを使ったブート書き込みの例を紹介します。

■ ブート書き込みの準備:OOCDのインストール


openocd.exeはJDEの実行ファイルと同じ場所にあります。
openocd.exeを使うためにFTDI社のデバイスドライバが必要です、OOCDのインストールを参照してFTDIのUSBデバイスドライバをインストールしてください。

STM32F103-P52の書込み

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

    CPUボードとJTAGボードをJTAGでつなぎ、それぞれPCにUSBコネクタで接続します。
    右の図では簡単のためCPUボードのJTAG端子穴に直接JTAGボードの端子を差し込んでいます
  2. プロジェクトパスにoocdJTAG_Flash.cfgファイルと.flash.scriptファイルを用意する
    プロジェクトパスに置くoocdJTAG_Flash.cfgファイルとflash.scriptファイルの内容は下記のとおりです
    新しいプロジェクトで使う場合サンプルプロジェクトにあるファイルをコピーしてそのまま使うことができますが
    ターゲット名だけはテキストエディタで新プロジェクトのターゲット名に書き換えて下さい。

    flash.scriptの内容
       wait_halt
    sleep 10
    stm32x mass_erase 0
    sleep 10
    flash write_image
    mon_stm32f103-p52.mot 0 s19
    sleep 10
    shutdown

    oocdJTAG_Flash.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
    # 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を使うよう設定する



    転送ツールの設定でコマンドラインを選択し、 openocd.exe -f oocdJTAG_Flash.cfg と入力します

  4. ターゲットファイルを構築してCPUボードに書き込む

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

    書き込み状態はJDE下のコンソール画面に表示されます。

  5. 書き込みエラーでopenocd.exeが終了しない場合の対処


    JTAGポートの接続トラブルなどでopenocd.exeが終了しない場合はコンソール画面左上のボタンが赤く表示されたままになります。
    その場合はこのボタンをクリックしてopenocd.exeを強制終了してください。