arm/EZ-USBでデバッグ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
2009/06/04 からのアクセス回数 &counter;
#contents
** ターゲットボード [#b4181c9d]
Armlibが異なるCPUアーキテクチャーで使えて、便利なことを示...
[[EZ-ARM7>http://optimize.ath.cx/ARM7/index.html]]
を使ってみます。((本当は、Interface 2009/6月号の付録を使...
&ref(DSCN03011.jpg);
EZ-ARMの特徴をあげると、
- CPU LPC2214
- フラッシュROM 256Kバイト
- SRAM 16Kバイト
- 汎用I/O(5V耐圧) 最大112本
- 外部バス 8/16/32bitアクセス
- A/Dコンバータ 8ch 10bit
- D/Aコンバータ 無し
- リアルタイムクロック(RTC) バックアップ不可
- タイマー 2ch 32bit(4キャプチャ、4コンペア)
- PWM 6出力
- UART 2ch
- I2C 1ch(400Kbit/s)
- SPI 2ch
今回は、EZ-ARM7付属のライターとGDBスタブを使うため、VM-Wa...
** テストプログラム [#vda609a6]
もちろん、テストプログラムはLEDの点滅です。
ただ、今回はforループによる遅延ではなく、タイマー割り込み...
示すことにします。
*** makefileの設定 [#wd86127d]
[[arm/armlibを使ってみる]]と同様に、armlibのサンプルにあ...
#pre{{
TRG = blink
ARMLIB = $(HOME)/local/arm/armlib
ARCH = lpc2000
ARMLIB_ARCH_SRC = processor.c timer.c
ARMLIB_SRC =
LDFLAGS = -T$(ARMLIB)/arch/$(ARCH)/boot/lpc2214-rom.ld -...
}}
*** global.h [#v26c0413]
&ref(global.h);は、サンプルのglobal.hをそのまま使います。
*** blink.c [#b41f28c8]
メインのファイルは、&ref(blink.c);です、これはオプティマ...
同じにしました。
- ヘッダファイルは、global.h, lpc2000.h, processor.hの他...
- main関数
-- processorInit : 使用するCPUの初期設定を行う
-- timerInit : タイマーの初期化を行う
-- ledInit : LEDのIOの設定を行う
-- ledOn, ledOff : LEDのオン、オフ切り替え
-- timerPause : タイマー割り込みを使ったウェイト処理、こ...
#pre{{
#include "global.h"
#include "lpc2000.h"
#include "processor.h" // include processor initializati...
#include "timer.h"
static void ledInit(){
PINSEL1 = 0;
IO0DIR |= 0x40000000;
IO0SET = 0x40000000;
}
static void ledOn(int led){
IO0CLR = led;
}
static void ledOff(int led){
IO0SET = led;
}
int main(void){
int i;
// initialize processor
processorInit();
// initialize timers
timerInit();
ledInit();
while (1){
ledOn(0x40000000);
timerPause(500); // wait 500 msec
ledOff(0x40000000);
timerPause(500); // wait 500 msec
}
return 0;
}
}}
** プログラムのmakeと書き込み [#d1f1bd84]
Macでmakeコマンドを実行します。
#pre{{
$ make
}}
blink.hex blink.bin, blink.elfが生成されていれば成功です。
次にWindowsマシンに、EZ-ARM7を接続し、付属のライターで書...
(ここでは、VM Wareのファイル共有機能を使います。)
Cygwinを起動し、jtag_flash.exeを実行します。
#pre{{
$ jtag_flash.exe blink.hex
JTAG Flash Writer for LPC2214/2138 by OPTIMIZE Ver2.1
書き込み中 セクタ=0 アドレス=00000000 サイズ=2000 ...
}}
USB Blasterの書き込みに比べて、とても高速に書き込めます。
これで、EZ-ARM7のLEDが1秒間隔で点滅します。
** Eclipseからリモートデバッグ [#me348819]
EZ-ARM7に付属のjtag_stub.exeを使ってEclipseからリモートで
デバッグすることができる。
*** スタブの起動 [#l320aa6e]
デバッガーを使用する場合には、Cコンパイラーのオプションか...
再度、makeを実行してください。
#pre{{
#compiler flags
CPFLAGS = -g -Wall -Wstrict-prototypes -I$(ARMLIB) -I$(A...
-I$(ARMLIB)/arch/$(ARCH)/include -Wa,-ahlms=$(<:.c=.lst)
}}
Cygwinから、jtag_stubを起動する
#pre{{
$ jtag_stub
LPC2214/2138 GDB stub Server Ver2.1 by OPTIMIZE.
GDBとの接続待機中(localhost:2159)...
}}
最後のlocalhost:2159がスタブの接続待ちポートです。
この番号を記録しておきます。
*** Eclipseのデバッグ設定 [#nab1f5f0]
Eclipseのデバッグ設定タグで
- MainタブのC/C++ Application: には、blinker.elfを指定し...
Commandsタグの
- Initialize commandsでは、WindowsマシンのIPアドレス:接続...
#pre{{
target remote 192.168.1.19:2159
}}
- Run commandsには、シンボルファイルの指定とロード、ブレ...
#pre{{
symbol-file blink.elf
load blink.elf
br main
continue
}}
#ref(debug_setting.jpg);
デバッガで、ステップ処理、変数の値も確認でき、応答速度も...
#ref(debug.jpg);
** コメント [#bdac6092]
この記事は、
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
終了行:
[[FrontPage]]
2009/06/04 からのアクセス回数 &counter;
#contents
** ターゲットボード [#b4181c9d]
Armlibが異なるCPUアーキテクチャーで使えて、便利なことを示...
[[EZ-ARM7>http://optimize.ath.cx/ARM7/index.html]]
を使ってみます。((本当は、Interface 2009/6月号の付録を使...
&ref(DSCN03011.jpg);
EZ-ARMの特徴をあげると、
- CPU LPC2214
- フラッシュROM 256Kバイト
- SRAM 16Kバイト
- 汎用I/O(5V耐圧) 最大112本
- 外部バス 8/16/32bitアクセス
- A/Dコンバータ 8ch 10bit
- D/Aコンバータ 無し
- リアルタイムクロック(RTC) バックアップ不可
- タイマー 2ch 32bit(4キャプチャ、4コンペア)
- PWM 6出力
- UART 2ch
- I2C 1ch(400Kbit/s)
- SPI 2ch
今回は、EZ-ARM7付属のライターとGDBスタブを使うため、VM-Wa...
** テストプログラム [#vda609a6]
もちろん、テストプログラムはLEDの点滅です。
ただ、今回はforループによる遅延ではなく、タイマー割り込み...
示すことにします。
*** makefileの設定 [#wd86127d]
[[arm/armlibを使ってみる]]と同様に、armlibのサンプルにあ...
#pre{{
TRG = blink
ARMLIB = $(HOME)/local/arm/armlib
ARCH = lpc2000
ARMLIB_ARCH_SRC = processor.c timer.c
ARMLIB_SRC =
LDFLAGS = -T$(ARMLIB)/arch/$(ARCH)/boot/lpc2214-rom.ld -...
}}
*** global.h [#v26c0413]
&ref(global.h);は、サンプルのglobal.hをそのまま使います。
*** blink.c [#b41f28c8]
メインのファイルは、&ref(blink.c);です、これはオプティマ...
同じにしました。
- ヘッダファイルは、global.h, lpc2000.h, processor.hの他...
- main関数
-- processorInit : 使用するCPUの初期設定を行う
-- timerInit : タイマーの初期化を行う
-- ledInit : LEDのIOの設定を行う
-- ledOn, ledOff : LEDのオン、オフ切り替え
-- timerPause : タイマー割り込みを使ったウェイト処理、こ...
#pre{{
#include "global.h"
#include "lpc2000.h"
#include "processor.h" // include processor initializati...
#include "timer.h"
static void ledInit(){
PINSEL1 = 0;
IO0DIR |= 0x40000000;
IO0SET = 0x40000000;
}
static void ledOn(int led){
IO0CLR = led;
}
static void ledOff(int led){
IO0SET = led;
}
int main(void){
int i;
// initialize processor
processorInit();
// initialize timers
timerInit();
ledInit();
while (1){
ledOn(0x40000000);
timerPause(500); // wait 500 msec
ledOff(0x40000000);
timerPause(500); // wait 500 msec
}
return 0;
}
}}
** プログラムのmakeと書き込み [#d1f1bd84]
Macでmakeコマンドを実行します。
#pre{{
$ make
}}
blink.hex blink.bin, blink.elfが生成されていれば成功です。
次にWindowsマシンに、EZ-ARM7を接続し、付属のライターで書...
(ここでは、VM Wareのファイル共有機能を使います。)
Cygwinを起動し、jtag_flash.exeを実行します。
#pre{{
$ jtag_flash.exe blink.hex
JTAG Flash Writer for LPC2214/2138 by OPTIMIZE Ver2.1
書き込み中 セクタ=0 アドレス=00000000 サイズ=2000 ...
}}
USB Blasterの書き込みに比べて、とても高速に書き込めます。
これで、EZ-ARM7のLEDが1秒間隔で点滅します。
** Eclipseからリモートデバッグ [#me348819]
EZ-ARM7に付属のjtag_stub.exeを使ってEclipseからリモートで
デバッグすることができる。
*** スタブの起動 [#l320aa6e]
デバッガーを使用する場合には、Cコンパイラーのオプションか...
再度、makeを実行してください。
#pre{{
#compiler flags
CPFLAGS = -g -Wall -Wstrict-prototypes -I$(ARMLIB) -I$(A...
-I$(ARMLIB)/arch/$(ARCH)/include -Wa,-ahlms=$(<:.c=.lst)
}}
Cygwinから、jtag_stubを起動する
#pre{{
$ jtag_stub
LPC2214/2138 GDB stub Server Ver2.1 by OPTIMIZE.
GDBとの接続待機中(localhost:2159)...
}}
最後のlocalhost:2159がスタブの接続待ちポートです。
この番号を記録しておきます。
*** Eclipseのデバッグ設定 [#nab1f5f0]
Eclipseのデバッグ設定タグで
- MainタブのC/C++ Application: には、blinker.elfを指定し...
Commandsタグの
- Initialize commandsでは、WindowsマシンのIPアドレス:接続...
#pre{{
target remote 192.168.1.19:2159
}}
- Run commandsには、シンボルファイルの指定とロード、ブレ...
#pre{{
symbol-file blink.elf
load blink.elf
br main
continue
}}
#ref(debug_setting.jpg);
デバッガで、ステップ処理、変数の値も確認でき、応答速度も...
#ref(debug.jpg);
** コメント [#bdac6092]
この記事は、
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
ページ名:
SmartDoc