[[FrontPage]]

#contents

2011/04/22からのアクセス回数 &counter;

** STM8S版Versaloonをちょっと改造 [#c6b36aa9]
mbedにはSWDでデバッグするためのピンが解放されていないため、mbedとピンコンパチの
Xpresso1768をSTM8S版Versaloonを使ってデバッグしてみます。

Xpressoのデバッガを切り離して電源がとれないため、ST8S版Versaloonをちょっと改造して
CN7の1番ピンから3.3Vを取ります。

&ref(STM8SVersaloon_mod.png);

** mbedのプログラムのエクスポート [#p7b66d91]
mbedの新規プロジェクトを作成するとLED点滅のプログラムができるので、これをエクスポート
します。
この時、LPC1678、GCC版とします。

** Eclipseのプロジェクトを作成 [#kc96bc09]
EclipseでC/C++のMakefileベースのプロジェクトを作成します。

そこにダウンロードしたファイルをコピーします。

XPresso1678のLEDは、P0_22なのでmain.cppを修正します。

#pre{{
#include "mbed.h"

//DigitalOut myled(LED1);
DigitalOut myled(P0_22);

int main() {
    while(1) {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}
}}

makeコマンドでコンパイルすれば完了です。

** openocdでデバッグ [#b243bbd4]
openocd.cfgを以下のように作成します。

#pre{{
# OpenOCD lpc2214 cfg with Flash proc
telnet_port 4444
gdb_port 3333

source [find interface/vsllink_swd.cfg]
source [find target/lpc1768_flash.cfg]
# 高速書き込みのために追加
#arm7_9 dcc_downloads enable
#arm7_9 fast_memory_access enable

proc flash_program {ELF_FILENAME} {
	halt
	flash probe 0
	flash write_image erase $ELF_FILENAME
	echo "flash program complete. reset and run"
	resume
	reset run
	exit
}

init
}}

LPC1768用のコンフィグファイルはOpenOCDに付属のものでは動作しませんでした。
ねむいさんが公開されている&ref(lpc1768_flash.cfg);を使用しました。

** 無事プログラムの書き込みとデバッグ [#y03374ed]
それでは、openocdを起動して、
#pre{{
$ /usr/local/bin/openocd 
Open On-Chip Debugger 0.5.0-dev-00783-g0123985-dirty (2011-12-25-15:57)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.berlios.de/doc/doxygen/bugs.html
Warn : must select a transport.
Info : OpenOCD runs in SWD mode
adapter_nsrst_delay: 200
jtag_ntrst_delay: 200
10 kHz
Info : Versaloon(0x32)by Simon(compiled on Aug 14 2011)
Info : USB_TO_XXX abilities: 0x00000009:0x00000040:0xC0000006
Info : clock speed 10 kHz
Info : lpc1768.cpu: hardware has 6 breakpoints, 4 watchpoints
10 kHz
Warn : Only resetting the Cortex-M3 core, use a reset-init event handler to reset any peripherals
target state: halted
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x000000cc msp: 0x10008000
12500 kHz
500 kHz
Info : accepting 'gdb' connection from 3333
Warn : acknowledgment received, but no packet pending
10 kHz
Warn : Only resetting the Cortex-M3 core, use a reset-init event handler to reset any peripherals
target state: halted
target halted due to debug-request, current mode: Thread 
xPSR: 0x81000000 pc: 0x0000103e msp: 0x10007fd8
debug_level: 2
Info : Padding image section 0 with 4 bytes
Warn : Verification will fail since checksum in image (0x00000000) to be written to flash is different from calculated vector checksum (0xefff7402).
Warn : To remove this warning modify build tools on developer PC to inject correct LPC vector checksum.
requesting target halt and executing a soft reset
target state: halted
target halted due to breakpoint, current mode: Thread 
xPSR: 0x01000000 pc: 0x000000cc msp: 0x10008000
debug_level: 0
}}

途中でchecksumが一致しない旨のワーニングがでますが、そのまま実行しても動きます。
ただ、LPC1343のようにチェックサムの値が異なるときに、処理をきりかえる場合には
別途対応が必要です。


次に、Eclipseでデバッグ設定をします。トラ技2月号に詳細に説明していますので、参照してください。

&ref(debug_LPC1768.png);

デバッグ画面はこんな感じ!

&ref(debug_screen.png);

** コメント [#nc0aa317]
#vote(おもしろかった,そうでもない,わかりずらい)
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])

皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc