フォト
無料ブログはココログ

MyList

« 開発改善コンクール | トップページ | 知的生産の技術 »

2013年9月 3日 (火)

OpenOCD TI-ICDI + LM4F120 LaunchPad

買って写真だけ撮って放っていた TIのLM4F120 LaunchPad で遊んでみる。

Lm4f120launcpad4

 TIのStellarisシリーズはいつの間にかTiva Cシリーズに変わっていて、このボードに載っているLM4F120H5QRはTM4C1233H6PMになったらしく、LM4F120H5QRのデータシートはTIのサイトで見つけることができなかった。(ネットには落ちているけど)
対照表がこのページTiva C Series ARM Cortex-M Microcontrollers にあるなんてわからないよ!

 TI謹製のCCSを使うと何の問題もないのだけれど、開発環境ばかり増えるのも嫌なのでEclipse+OpenOCDかInsight+OpenOCDでやりたいと思って放っておいたのだが、教材に使う魂胆でOpenOCDで使ってみることにした。

 OpenOCD 0.7.0 がICDIに対応したというのでDLしてみたが、LM4F120 LaunchPadは対応していないようだ。ところが、OpenOCDのサイトにあるUser's GUIDEはrelease 0.8.0-devになっていて、このドキュメントにはLM4F120LaunchPadのICDIもサポートされると書いてある。

 OpenOCD 0.8.0-devを探していると、ねむいさんのページにあったのでさっそくDLしてみると、tcl/boardにek-lm4f120xl.cfgがあった。(ねむいさんに感謝)

 例によってRAMで動くプログラムを作ってみた。
STM32vlDiscoveryに載っているSTM32F100RBT6BのRAMは8k、トラ技おまけのLPC1114FN28のRAMは4kだが、このボードに載っているLM4F120H5QRのRAMは余裕の32kである。

 ねむいさんのページにあったLM4F120H5QRのkickstartを参考にして、リンカスクリプト(lib/linker/lm4f120xxx.ld)を編集してすべてのセクションをRAMに配置するようにして、(">ROM"を">RAM"にするだけの手抜き) makeするとmain.sym、main.binができる。

  ek-lm4f120xl.cfgを使ってOpenOCDを起動するとICDI経由ターゲットのLM4F120H5QRが見える。

openocd -s ./tcl -f bord/ek-lm4f120xl.cfg

C:\OpenOCD\OpenOCD-0.8.0>openocd.exe -s ./tcl -f board/ek-lm4f120xl.cfg Open On-Chip Debugger 0.8.0-dev-00131-gf4943ac-dirty (2013-08-30-09:42)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : This adapter doesn't support configurable speed
Info : ICDI Firmware version: 9270
Info : lm4f120h5qr.cpu: hardware has 6 breakpoints, 4 watchpoints

telnetでlocalhost:4444に接続して、main.binをロードして実行する。

Open On-Chip Debugger
> version Open On-Chip Debugger 0.8.0-dev-00131-gf4943ac-dirty (2013-08-30-09:42)
> reset halt
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x0000334c msp: 0x20001000
> load_image C:\\LM4F120H5QR_Launchpad\\main.bin 0x20000000 bin
2340 bytes written at address 0x20000000
downloaded 2340 bytes in 0.078000s (29.297 KiB/s)
> mdw 0x20000000 2
0x20000000: 20008000 20000281
> reg sp 0x20008000
sp (/32): 0x20008000
> reg pc 0x20000280
pc (/32): 0x20000280
> mww 0xE000ED08 0x20000000
> resume
>

LM4F120H5QRのFlashは0000:0000-0004:0000、RAMは2000:0000-20000:8000に配置してあるので、スタックポインタ(SP)は、20000:8000を、プログラムカウンタ(PC)はmain.symからResetHandlerのアドレスを探すか、main.binをロードして2000:0000に書かれているアドレスを、mww 0x20000000で調べて指定する。(2000:0280) 

reg sp 0x20008000
reg pc 0x20000280

 LM4F120は割り込みベクタテーブルはVTABLEレジスタ(E000:ED08)で設定する。
VTABLEレジスタにRAMの開始アドレス2000:0000を書くと割り込みベクタがRAMに配置されるらしい。
(Tiva™ TM4C1233H6PM Microcontroller (identical to LM4F120H5QR) DATA SHEET tm4c1233h6pm.pdf P154 Register 68: Vector Table Offset (VTABLE), offset 0xD08 参照)

mww 0xE000ED08 0x20000000

そして
resumeするとPC=0x20000280 ResetHandlerから実行される。

 フラッシュメモリの内容をシリアルにダンプするプログラムを書いてみた。

Welcome to LM4F120XL LaunchPad dump program !!
F : dump Flash area
R : dump RAM area
H : Help


address  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
0000:0000 00 10 00 20 4D 33 00 00 BB 2A 00 00 8F 11 00 00 ... M3...*......
0000:0010 07 27 00 00 07 27 00 00 07 27 00 00 00 00 00 00 .'...'...'......
0000:0020 00 00 00 00 00 00 00 00 00 00 00 00 07 27 00 00 .............'..
0000:0030 07 27 00 00 00 00 00 00 07 27 00 00 81 27 00 00 .'.......'...'..
0000:0040 07 27 00 00 07 27 00 00 07 27 00 00 07 27 00 00 .'...'...'...'..
0000:0050 07 27 00 00 BD 16 00 00 07 27 00 00 07 27 00 00 .'.......'...'..
0000:0060 07 27 00 00 07 27 00 00 07 27 00 00 07 27 00 00 .'...'...'...'..
0000:0070 07 27 00 00 07 27 00 00 07 27 00 00 07 27 00 00 .'...'...'...'..
0000:0080 07 27 00 00 07 27 00 00 07 27 00 00 07 27 00 00 .'...'...'...'..
0000:0090 07 27 00 00 07 27 00 00 07 27 00 00 07 27 00 00 .'...'...'...'..
0000:00A0 07 27 00 00 07 27 00 00 07 27 00 00 07 27 00 00 .'...'...'...'..
0000:00B0 07 27 00 00 07 27 00 00 07 27 00 00 07 27 00 00 .'...'...'...'..
0000:00C0 07 27 00 00 07 27 00 00 07 27 00 00 07 27 00 00 .'...'...'...'..
0000:00D0 07 27 00 00 07 27 00 00 07 27 00 00 07 27 00 00 .'...'...'...'..
0000:00E0 07 27 00 00 07 27 00 00 07 27 00 00 07 27 00 00 .'...'...'...'..
0000:00F0 07 27 00 00 07 27 00 00 07 27 00 00 07 27 00 00 .'...'...'...'..

もう少し大きなプログラムを書いてみよう。

« 開発改善コンクール | トップページ | 知的生産の技術 »

JTAG」カテゴリの記事

CPUボード」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: OpenOCD TI-ICDI + LM4F120 LaunchPad:

« 開発改善コンクール | トップページ | 知的生産の技術 »