2011/04/22からのアクセス回数 5039 STM8S版Versaloonをちょっと改造 †mbedにはSWDでデバッグするためのピンが解放されていないため、mbedとピンコンパチの Xpresso1768をSTM8S版Versaloonを使ってデバッグしてみます。 Xpressoのデバッガを切り離して電源がとれないため、ST8S版Versaloonをちょっと改造して CN7の1番ピンから3.3Vを取ります。 mbedのプログラムのエクスポート †mbedの新規プロジェクトを作成するとLED点滅のプログラムができるので、これをエクスポート します。 この時、LPC1678、GCC版とします。 Eclipseのプロジェクトを作成 †EclipseでC/C++のMakefileベースのプロジェクトを作成します。 そこにダウンロードしたファイルをコピーします。 XPresso1678のLEDは、P0_22なのでmain.cppを修正します。 #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でデバッグ †openocd.cfgを以下のように作成します。 # 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に付属のものでは動作しませんでした。 ねむいさんが公開されているlpc1768_flash.cfgを使用しました。 無事プログラムの書き込みとデバッグ †それでは、openocdを起動して、 $ /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月号に詳細に説明していますので、参照してください。 デバッグ画面はこんな感じ! コメント †皆様のご意見、ご希望をお待ちしております。 Tweet |