arm/もう一度SAM7
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
#contents
2014/07/21からのアクセス回数 &counter;
U-BootやuCLinuxの移植記事が雑誌にでているのですが、ボード...
そこで、買って袋に入ったままの
[[SAM-LA2>https://www.olimex.com/Products/ARM/Atmel/SAM7-...
を使ってみようと思います。
&ref(SAM7-LA2.png);
** SAM7-Pxxxの復習 [#z84b8f84]
一番最初に使ったARMのマイコンボードが、SAM7-Pxxxです。何...
試行錯誤してまとめたのが、[[arm/LED点灯の作成とデバッグ]]...
その後、MacOSXでもOpenOCDが使えるVersaloonの関連記事をト...
OpenOCDの進歩で[[arm/LED点灯の作成とデバッグ]]の記事のコ...
ことが分かり、SAM-PxxxをOpenOCDでデバッグするところから復...
Versaloon対応のOpenOCDの作り方は、内容はちょっと古いですが
[[arm/Versaloon対応OpenOCDの作成]]
を参考にしてください。
&ref(SAM7-Pxxx_Versaloon.png);
*** Versaloonコンフィグの修正 [#lc739e7d]
Versaloonは、SWDの他JTAGもサポートしているのでSAM7-Pxxxも...
最初は上手く動きませんでした。
調べて見るとvsllink.cfgにJTAGトランスポートの選択(transp...
openocdの共有ディレクトリ/script/interface/vsllink.cfgを...
#pre{{
#
# Versaloon Link -- VSLLink
#
# http://www.simonqian.com/en/Versaloon
#
interface vsllink
transport select jtag
}}
*** AT91SAM7-Pxxx(at91sam7s64.cfg)のコンフィグファイル ...
AT91SAM7-Pxxxのコンフィグファイルは、
[[at91sam7s64.cfg>https://code.google.com/p/armboard/sour...
を参考にしました。
AT91SAM7Sでは、ボードスキャンとJTAG-ICEの2つのJTAGを持っ...
出力されます。
#pre{{
Info : JTAG tap: at91sam7s64.cpu tap/device found: 0x3f0f...
Warn : JTAG tap: at91sam7s64.cpu UNEXPECTED: 0x3f0f...
Error: Trying to use configured scan chain anyway...
}}
これは、SAM7シリーズの特徴で、JTAG用にBSDとICEの2つをサポ...
- ボードスキャン(BSDのジャンパーを閉じる)
- JTAG-ICE(BSDのジャンパーをオープン)
そこで、at91sam7s64.cfg内で、以下の様にCPUTAPIDを追加し、...
知らせます。
#pre{{
if { [info exists CPUTAPID ] } {
set _CPUTAPID $CPUTAPID
} else {
set _CPUTAPID 0x3f0f0f0f
}
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAP...
}}
以下のファイルをopenocdの共有ディレクトリ/script/targetに...
- &ref(at91sam7s64.cfg);
*** openocd.cfgの変更 [#e05a5372]
OpenOCDのコンフィグファイルも書き方が変わり、フラッシュの...
#pre{{
flash probe 0 flash : command requires more arguments
}}
Sparkfunのフォーラムの
[[hsutherl氏のコメント>https://forum.sparkfun.com/viewtop...
で解決できました。((感謝))
最終的なopenocd.cfgは、以下の様になりました。
#pre{{
# OpenOCD at91sam7s64.cfg with Flash proc
telnet_port 4444
gdb_port 3333
source [find interface/vsllink.cfg]
source [find target/at91sam7s64.cfg]
# 以下のURLのhsutherl氏のコメントを参考
# https://forum.sparkfun.com/viewtopic.php?f=18&t=33789
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME at91sam7 0x00100000 0 0 0 0 $_TARG...
proc flash_program {ELF_FILENAME} {
halt
flash probe 0
flash write_bank 0 $ELF_FILENAME 0x0
echo "flash program complete. reset and run"
resume
exit
}
init
halt
}}
*** OpenOCDを使ったデバッグ [#f62e3bb9]
RAMベースのプログラムのデバッグは、
[[arm/LED点灯の作成とデバッグ]]
に従ってデバッグを設定します。
デバッグのコンフィグタブのInitialize commands以下の様に変...
#pre{{
target remote localhost:3333
set remote hardware-breakpoint-limit 2
monitor reset halt
load
monitor reset init
thbreak main
}}
MacOSXでは、VersaloonのCDCがOSのドライバーに取られしまう...
#pre{{
$ sudo kextunload /System/Library/Extensions/IOUSBFamily....
}}
元に戻すには、
#pre{{
$ sudo kextload /System/Library/Extensions/IOUSBFamily.ke...
}}
*** 動作確認 [#n688a10a]
準備ができたので、ターミナルでopenocdを起動します。
#pre{{
$ /usr/local/bin/openocd -f openocd.cfg
$ /usr/local/bin/openocd -f openocd.cfg
Open On-Chip Debugger 0.5.0-dev-00783-g0123985-dirty (201...
Licensed under GNU GPL v2
For bug reports, read
http://openocd.berlios.de/doc/doxygen/bugs.html
Warn : must select a transport.
Warn : use 'at91sam7s64.cpu' as target identifier, not '0'
Error: Fail to receive usb data, error string is Operatio...
Info : Versaloon(0x15)by Simon(compiled on Jan 29 2011)
Info : USB_TO_XXX abilities: 0x0000024F:0x010001EF:0xC000...
Info : RCLK (adaptive clock speed)
Info : JTAG tap: at91sam7s64.cpu tap/device found: 0x3f0f...
Info : Embedded ICE version 1
Info : at91sam7s64.cpu: hardware has 2 breakpoint/watchpo...
target state: halted
target halted in ARM state due to debug-request, current ...
cpsr: 0x200000df pc: 0x00000184
}}
*** ROMベースのプログラムのデバッグ [#c40bd8c9]
フラッシュROMへの書込は、以下の手順で行います。
#pre{{
$ /usr/local/bin/openocd -f openocd.cfg -c "flash_program...
}}
*** ROMでのブレークポイントの使い方 [#k0172fde]
ROMベースのプログラムでは、ハードブレークポイントが2個し...
Eclipseからのブレークポイントは使えません。
そこでプログラムが停止している時に、Eclipseのgdbコンソー...
を入力してEnterを押すことで一時ブレークポイントがセットで...
((この時、breakpointのタブに2個以上のブレークポイントがセ...
してください。))
#pre{{
thbreak 関数名
または
thbreak ソースファイル名:行数
}}
&ref(thbreak.png);
プログラムを途中で停止して、ブレークポイントをセットする...
以下の様に停止してからブレークポイントをセットしてくださ...
#pre{{
$ telnet localhost 4444
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> halt
}}
** コメント [#icad787b]
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。勉強会で分から...
スパム防止に画像の文字列も入力してください。
#comment_kcaptcha
終了行:
[[FrontPage]]
#contents
2014/07/21からのアクセス回数 &counter;
U-BootやuCLinuxの移植記事が雑誌にでているのですが、ボード...
そこで、買って袋に入ったままの
[[SAM-LA2>https://www.olimex.com/Products/ARM/Atmel/SAM7-...
を使ってみようと思います。
&ref(SAM7-LA2.png);
** SAM7-Pxxxの復習 [#z84b8f84]
一番最初に使ったARMのマイコンボードが、SAM7-Pxxxです。何...
試行錯誤してまとめたのが、[[arm/LED点灯の作成とデバッグ]]...
その後、MacOSXでもOpenOCDが使えるVersaloonの関連記事をト...
OpenOCDの進歩で[[arm/LED点灯の作成とデバッグ]]の記事のコ...
ことが分かり、SAM-PxxxをOpenOCDでデバッグするところから復...
Versaloon対応のOpenOCDの作り方は、内容はちょっと古いですが
[[arm/Versaloon対応OpenOCDの作成]]
を参考にしてください。
&ref(SAM7-Pxxx_Versaloon.png);
*** Versaloonコンフィグの修正 [#lc739e7d]
Versaloonは、SWDの他JTAGもサポートしているのでSAM7-Pxxxも...
最初は上手く動きませんでした。
調べて見るとvsllink.cfgにJTAGトランスポートの選択(transp...
openocdの共有ディレクトリ/script/interface/vsllink.cfgを...
#pre{{
#
# Versaloon Link -- VSLLink
#
# http://www.simonqian.com/en/Versaloon
#
interface vsllink
transport select jtag
}}
*** AT91SAM7-Pxxx(at91sam7s64.cfg)のコンフィグファイル ...
AT91SAM7-Pxxxのコンフィグファイルは、
[[at91sam7s64.cfg>https://code.google.com/p/armboard/sour...
を参考にしました。
AT91SAM7Sでは、ボードスキャンとJTAG-ICEの2つのJTAGを持っ...
出力されます。
#pre{{
Info : JTAG tap: at91sam7s64.cpu tap/device found: 0x3f0f...
Warn : JTAG tap: at91sam7s64.cpu UNEXPECTED: 0x3f0f...
Error: Trying to use configured scan chain anyway...
}}
これは、SAM7シリーズの特徴で、JTAG用にBSDとICEの2つをサポ...
- ボードスキャン(BSDのジャンパーを閉じる)
- JTAG-ICE(BSDのジャンパーをオープン)
そこで、at91sam7s64.cfg内で、以下の様にCPUTAPIDを追加し、...
知らせます。
#pre{{
if { [info exists CPUTAPID ] } {
set _CPUTAPID $CPUTAPID
} else {
set _CPUTAPID 0x3f0f0f0f
}
jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAP...
}}
以下のファイルをopenocdの共有ディレクトリ/script/targetに...
- &ref(at91sam7s64.cfg);
*** openocd.cfgの変更 [#e05a5372]
OpenOCDのコンフィグファイルも書き方が変わり、フラッシュの...
#pre{{
flash probe 0 flash : command requires more arguments
}}
Sparkfunのフォーラムの
[[hsutherl氏のコメント>https://forum.sparkfun.com/viewtop...
で解決できました。((感謝))
最終的なopenocd.cfgは、以下の様になりました。
#pre{{
# OpenOCD at91sam7s64.cfg with Flash proc
telnet_port 4444
gdb_port 3333
source [find interface/vsllink.cfg]
source [find target/at91sam7s64.cfg]
# 以下のURLのhsutherl氏のコメントを参考
# https://forum.sparkfun.com/viewtopic.php?f=18&t=33789
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME at91sam7 0x00100000 0 0 0 0 $_TARG...
proc flash_program {ELF_FILENAME} {
halt
flash probe 0
flash write_bank 0 $ELF_FILENAME 0x0
echo "flash program complete. reset and run"
resume
exit
}
init
halt
}}
*** OpenOCDを使ったデバッグ [#f62e3bb9]
RAMベースのプログラムのデバッグは、
[[arm/LED点灯の作成とデバッグ]]
に従ってデバッグを設定します。
デバッグのコンフィグタブのInitialize commands以下の様に変...
#pre{{
target remote localhost:3333
set remote hardware-breakpoint-limit 2
monitor reset halt
load
monitor reset init
thbreak main
}}
MacOSXでは、VersaloonのCDCがOSのドライバーに取られしまう...
#pre{{
$ sudo kextunload /System/Library/Extensions/IOUSBFamily....
}}
元に戻すには、
#pre{{
$ sudo kextload /System/Library/Extensions/IOUSBFamily.ke...
}}
*** 動作確認 [#n688a10a]
準備ができたので、ターミナルでopenocdを起動します。
#pre{{
$ /usr/local/bin/openocd -f openocd.cfg
$ /usr/local/bin/openocd -f openocd.cfg
Open On-Chip Debugger 0.5.0-dev-00783-g0123985-dirty (201...
Licensed under GNU GPL v2
For bug reports, read
http://openocd.berlios.de/doc/doxygen/bugs.html
Warn : must select a transport.
Warn : use 'at91sam7s64.cpu' as target identifier, not '0'
Error: Fail to receive usb data, error string is Operatio...
Info : Versaloon(0x15)by Simon(compiled on Jan 29 2011)
Info : USB_TO_XXX abilities: 0x0000024F:0x010001EF:0xC000...
Info : RCLK (adaptive clock speed)
Info : JTAG tap: at91sam7s64.cpu tap/device found: 0x3f0f...
Info : Embedded ICE version 1
Info : at91sam7s64.cpu: hardware has 2 breakpoint/watchpo...
target state: halted
target halted in ARM state due to debug-request, current ...
cpsr: 0x200000df pc: 0x00000184
}}
*** ROMベースのプログラムのデバッグ [#c40bd8c9]
フラッシュROMへの書込は、以下の手順で行います。
#pre{{
$ /usr/local/bin/openocd -f openocd.cfg -c "flash_program...
}}
*** ROMでのブレークポイントの使い方 [#k0172fde]
ROMベースのプログラムでは、ハードブレークポイントが2個し...
Eclipseからのブレークポイントは使えません。
そこでプログラムが停止している時に、Eclipseのgdbコンソー...
を入力してEnterを押すことで一時ブレークポイントがセットで...
((この時、breakpointのタブに2個以上のブレークポイントがセ...
してください。))
#pre{{
thbreak 関数名
または
thbreak ソースファイル名:行数
}}
&ref(thbreak.png);
プログラムを途中で停止して、ブレークポイントをセットする...
以下の様に停止してからブレークポイントをセットしてくださ...
#pre{{
$ telnet localhost 4444
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> halt
}}
** コメント [#icad787b]
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。勉強会で分から...
スパム防止に画像の文字列も入力してください。
#comment_kcaptcha
ページ名:
SmartDoc