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

MyList

« 電流測定 | トップページ | 「日本で最も人材を育成する会社」のテキスト »

2012年12月17日 (月)

トラ技2012/11オマケ基板(2)

トラ技2012/11オマケ基板 を作ったまま放ってあったので、とりあえずLチカをやってみた。

 LPCXpresso IDEをインストールするとLPC-Link経由でデバッグできるのだが、面白くないのでOpenOCD + ST-Linkでやってみた。
ねむいさんが既にOpenOCD + ST-Link/V2 でLチカってらっしゃるので目新しいことではないのだが。 RAMでLチカを動かしてみることにする。

 ねむいさんが”おきば”で公開されているST-Link/V2に対応したOpenOCDと、LチカのサンプルをDLする。ST-LinkはSTM32LVDiscoveryのST-Link部分を使う。

 configは tcl/target/lpc11u14_stlinkv2_flash.cfg から必要な部分を取り出して使ったところ、OpenOCDが起動できない。
デバッグオプション(-d3) をつけて起動すると ST-Linkがオープンできていないようだ。

 しばし嵌ってしまったが、よく見ると、USBのVID,PIDが違うことに気が付いた。
STM32LVDiscoveryのST-LinkはPID:0483 PID:3744だが、OpenOCDはPID:483 PID:3748でないといっている。調べてみるとPID:0483 PID:3744はST-Link/V1なのだそうだ、ねむいさんが使ってらっしゃるSTM32F0DiscoveryはST-Link/V2だけど、STM32LVDiscoveryはST-Link/V1のようだ。

 config中の"stlink-v2.cfg"を"stlink-v1.cfg"に変えると動くようになった。(Flashに書けるかは未確認)

--- LPC11U14.cfg ---

# NXP LPC1114 Cortex-M0 with 32kB Flash and '4'kB Local On-Chip SRAM,
source [find interface/stlink-v1.cfg]
source [find target/swj-dp.tcl]
set _CHIPNAME lpc11u14
set _CPUTAPID 0x0BB11477
set _TRANSPORT stlink_swd
set _TARGETNAME $_CHIPNAME.cpu
transport select $_TRANSPORT
stlink newtap $_CHIPNAME cpu -expected-id $_CPUTAPID
target create $_TARGETNAME stm32_stlink -chain-position $_TARGETNAME

 CMSISライブラリを使ったサンプルはRAM(4K)に収まらないので使えない。
プログラムは直接RAMにロードして動かすので、サンプル中の.dataや.bssを初期化している部分をコメントアウトしておく。

 gdbを使って動かす場合には↓のような .gdbinitを作って
-- .gdbinit ---

target remote localhost:3333
monitor reset halt
thbreak main
monitor mww 0x40048000 0x00000001
set $sp=0x10001000
set $pc=main
info reg
load
continue

OpenOCDを起動しておいて、
arm-nome-eabi-gdb sample.elf
でgdbを起動すると、mainで止まるので、continueコマンドで実行できる。
(予めブレークポイントを設定しておくとそこで止まる。)

C:\arm> arm-none-eabi-gdb sample.elf GNU gdb (Sourcery CodeBench Lite 2012.03-56) 7.2.50.20100908-cvs
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later

This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-mingw32 --target=arm-none-eabi".
For bug reporting instructions, please see:

...
Reading symbols from c:\arm\sample...done.
main () at ../main.c:21
21              BODCTRL = 0x13;
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0xc1000000 pc: 0x1fff0040 msp: 0x10000ffc
Hardware assisted breakpoint 1 at 0x100000c4: file ../main.c, line 21.
Loading section .text, size 0x22c lma 0x10000000
Start address 0x10000000, load size 556
Transfer rate: 54 KB/sec, 556 bytes/write.

Temporary breakpoint 1, main () at ../main.c:21
21              BODCTRL = 0x13;
(gdb) c Continuing.

 

gdbを使わなくても、OpenOCDだけで動かすこともできる。
ターミナルソフトでlocalhost:4444に接続して、↓の太字の部分を入力する。

Open On-Chip Debugger
> reset halt target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0xc1000000 pc: 0x1fff0040 msp: 0x10000ffc
> load_image C:/arm/sample.elf 556 bytes written at address 0x10000000
downloaded 556 bytes in 0.040000s (13.574 KiB/s)
> mww 0x40048000 1 > reg sp 0x10001000 sp (/32): 0x10001000
> reg pc 0x100000c1 pc (/32): 0x100000C1
> resume

 リマップ・レジスタ(0x40048000)に1を書いて割り込みベクタがRAMを使うように設定しておかないと割り込みが使えない。
 reg pc xxxxxxxx で設定する値(エントリ・アドレス)は、マップファイル中のシンボル"main"を調べて設定するか、
load_image した後に mdw 0x10000004 で表示される値を設定する。
Lpc1114_lchika

←リンク先にAVI

« 電流測定 | トップページ | 「日本で最も人材を育成する会社」のテキスト »

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

コメント

コメントを書く

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

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

トラックバック


この記事へのトラックバック一覧です: トラ技2012/11オマケ基板(2):

« 電流測定 | トップページ | 「日本で最も人材を育成する会社」のテキスト »