OpenOCD ST-Link + STM32LVDiscovery
STM32vlDiscoveryのRAMで動くプログラムをEcripseで作ってOpenOCD-STLinkでデバッグするときのメモ
- 概要
STM32vlDiscoveryは開発環境(IDE)として
● Atollic, TrueSTUDIO® (including the free LiteTrueSTUDIO®)
● IAR, Embedded Workbench® for ARM
● Keil, MDK-ARMTMが使える
評価ボードや雑誌のオマケ基板をで遊んでいると開発環境が増えてくるのだが、大抵はLチカが動くと2度と使わない。ということで既にインストールしてあるEclipse+gcc+OpenOCD-STLinkでやってみることにした。
更に、ちょっとしたプログラムをいちいちFlashに書くのは面倒なのでRAMで動くプログラムを作ることにする。 - Eclipse+CDT
EclipseのインストールはNetを探すと見つかる。CDTもインストールしておく。
ZylinCDT(組み込み用CDT)もインストールする。
Eclipseの[ヘルプ]→[新規ソフトウェアのインストール]→[追加]で
名前(N): Zylin embeddedCDT
ロケーション(L): http://opensource.zylin.com/zylincdt
を追加すると、中ほどのリストボックスに Zylin embeddedCDT が表示されるのでこれをインストールする。 - サンプルソース
サンプルはSTのSTM32VLDiscoveryのページの[Design Support]タブにSTM32VLDISCOVERY firmware package (AN3268)が公開されている。
このサンプルはARM-based 32-bit MCU STM32F10xxx standard peripheral libraryが使用されていている。ソースは参考になるのだが、このサンプルではRAMに収まらない。
ここのサンプルはSTのライブラリを使っていないのでRAMに収まる。ヘッダファイルはSTM32F10x standard peripheral librayのものを使う。
- スタートアップルーチン
スタートアップルーチンはSTM32VLDISCOVERY firmware packageを展開してできる、
~\an3268\stm32vldiscovery_package\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\TrueSTUDIO\startup_stm32f10x_ld_vl.s
の拡張子を"S"(大文字)にして使う。 - リンカスクリプト
RAMで動作させるためのリンカスクリプトはSTM32VLDISCOVERY firmware packageを展開してできる、
~an3268\stm32vldiscovery_package\Project\Master Workspace\TrueSTUDIO\stm32_flash.ld
の「>FLASH」を「>RAM」に編集して使う。
(スタートアップルーチンで.dataセグメントをROMからRAMへのコピーが不要になるのだが、ここは手抜きということで ^^;) - コンパイル
Lesson1のソースをコンパイルしてみた。
- デバッグ
デバッグの構成で左ペインの Zylin embedded debuger(C++アプリは不可)を選択し、コマンドタブに以下のコマンドを入力する。
target remote localhost:3333
monitor reset halt
thbreak main
mon mww 0xE000ED08 0x20000000
set $sp=0x20002000
set $pc=Reset_Handler
info reg
mon reg
load
c
gdbのコマンドの意味は
target remote localhost:3333 #OopenOCDのgdbポート monitor reset halt #CPUをリセットして停止する thbreak main #main() にブレークポイント設定 mon mww 0xE000ED08 0x20000000 #割り込みベクタをRAMの先頭に設定 set $sp=0x20002000 #スタックポインタをRAMの末尾に設定 set $pc=Reset_Handler #プログラムカウンタをReset_Hanlerに設定 info reg #レジスタ表示 #mon reg #こちらの方が詳しい load #バイナリをRAMにロードする c #実行 OpenOCDを起動しておくとソースレベルデバッグが可能になる。
(メニューバーの[実行]→[外部ツール]→[外部ツールの構成]でOpenOCDを起動するように設定しておくと外部ツールアイコンで起動できる) - 実行
実行するとこんな感じ
←リンク先に動画
プログラムで点滅しているのは右上の青LED
そのうちもっと丁寧に書こう
« Raspberry Pi | トップページ | ソニーのふり見て、我がふり直せ。 »
「JTAG」カテゴリの記事
- STM32F0-Discovery + OpenOCD(2014.07.30)
- versaloon(2014.02.03)
- usb_jtag + カメレオンUSB FX2(2013.09.16)
- OpenOCD TI-ICDI + LM4F120 LaunchPad(2013.09.03)
- JTAGkey Clone(2012.08.04)
コメント