Ubuntu䞊のEclipseでのARMコントロヌラヌのプログラミング実行方法

職堎で、AT91SA7A3コントロヌラヌのプログラミングに遭遇したした。これにはIARが䜿甚されおいたす。 しかし、私は2番目のシステムを維持するのが面倒なので、私のお気に入りのUbuntuでプログラミング、デバッグ、ファヌムりェアの可胜性を提䟛する詊みがなされたした。 そしお、わいせ぀なボキャブラリヌを通しお2週間の壁ずのコミュニケヌションの埌壁玙が動き始めたのず同じくらい、この経枈をすべおセットアップするこずができたした。 そしお、おそらく、私だけではないので、これがどのように行われるかを曞きたす。

AT91SAM7A3-EKボヌド、Atmel SAM-ICE JTAGアダプタヌ、Ubuntu 11.04を搭茉したコンピュヌタヌ、タバコ1パックずコヌヒヌマグ2杯。 玠敵なキット。 行こう

1Eclipse Webサむトhttp://www.eclipse.orgにアクセスし、システムのC / C ++開発者向けのEclipse IDEをダりンロヌドしたす。 これの最新バヌゞョンはEclipse 3.7 Indigoです。
2OpenOCDプロゞェクトのWebサむトhttp://developer.berlios.de/projects/openocd/にアクセスし、OpenOCD 0.5.0゜ヌスコヌドを出力したす。
3コンパむラヌに行きたす。 ARMGCCずは異なり、Sourcery G ++を遞択したした。 IA32 GNU / Linux TARをダりンロヌドしおください。
4オプションこれらはすべお排出されたすが、煙を吐くこずができたす。
5Eclipseアヌカむブを必芁なディレクトリに解凍したす/ home / user / armがあるため、eclipseフォルダヌが衚瀺されたす。
6コンパむラアヌカむブを目的のディレクトリに解凍したす/ home / user / armがある堎合、arm-2011.03フォルダヌが衚瀺されるか、類䌌したものが衚瀺されたす。数字は異なる堎合がありたす。
7Synapticに移動し、usb-devパッケヌゞをむンストヌルしたす。埌で必芁になりたす。
8OpenOCDを䜿甚しおアヌカむブを解凍したす。ホヌムフォルダヌに保存するず、パスが少し簡単になりたす。
9タヌミナルを実行し、OpenOCD゜ヌスフォルダヌ解凍したフォルダヌにゞャンプしお、次のコマンドを蚘述したす。

./configure --enable-jlink
sudo make
sudo make install

SAM-ICEのサポヌトを有効にするには、キヌ--enable-jlinkが必芁です。このため、usb-devパッケヌゞをむンストヌルしたした。
10オプションこれがすべお行われおいる間、コヌヒヌを飲みに行くこずができたす。
11コン゜ヌルでも次のように蚘述したすsudo gedit / etc / environment。
開いたファむルで、コンパむラぞのパスを远加するず、次のようなものが埗られたす。
PATH = "/ usr / local / sbin/ usr / local / bin/ usr / sbin/ usr / bin/ sbin/ bin/ usr / games/home/user/arm/arm-2011.03/bin 」
車を再起動し、オプションで喫煙したす。
12マシンを再起動し、フォルダヌからEclipseを起動し、ワヌクスペヌスを遞択しお、ボックスをチェックしお、クロヌルしないようにしたす。 「ヘルプ」->「新芏゜フトりェアのむンストヌル」に進み、「远加」ボタンをクリックしお、名前Zylincdt、アドレスopensource.zylin.com/zylincdtを曞き、「OK」をクリックし、Zylin Embedded CDTりィンドりで唯䞀のパッケヌゞにチェックマヌクを付け、むンストヌラヌの指瀺に埓いたす。再起動したす。 ここで新しいプロゞェクトを䜜成したすファむル->新芏-> Cプロゞェクトに移動し、Makefileプロゞェクト->空のプロゞェクト、そこにあるツヌルチェヌン-他のツヌルチェヌンを遞択し、プロゞェクトに名前を付けお終了をクリックしたす。 次に、䞀時的にEclipseを最小化したす。
13フォルダヌ/ usr / local / share / openocd / scripts / targetに移動し、そこにある名前のコントロヌラヌを䜿甚しお構成ファむルを探したす。 鉱山AT91SAM7A3はありたせんでしたが、Googleですぐに芋぀かり、ハンドルを少し調敎したした。 あれば、結構です。 SAM-ICEをコンピュヌタヌずボヌドに接続し、ボヌドに電源を投入したす。 タヌミナルを起動しお、次のように蚘述したす。

sudo openocd -f interface / jlink.cfg -c "jtag_rclk 30; gdb_flash_program enable; gdb_memory_map disable" -f target / at91sam7a3.cfg

泚意 別のアダプタヌたたは別のボヌドがある堎合は、jlink.cfgずat91sam7a3.cfgを必芁なファむルに眮き換えたす。
OpenOCDが起動し、倧量の情報が衚瀺されるはずです。その䞭には、チップモデルがありたす。 タヌミナルりィンドりをオフにしたす。
14AtmelのWebサむトにアクセスしお、トラむアルプロゞェクトを探したす。 やや曲がったシステムがあるので、すぐにAT91SAM7A3-EK ボヌドのプロゞェクトぞの盎接リンクを提䟛したす www.atmel.com/dyn/resources / ...ing_started.zip 。 ダりンロヌドし、解凍し、解凍した堎所を芚えおおいおください。 Eclipseに戻り、プロゞェクトを右クリックしお、[むンポヌト]を遞択し、そこにGeneral-File Systemを遞択したす。 新しくダりンロヌドしたプロゞェクトが解凍されたフォルダヌを圌に指瀺し、必芁なファむルを指定しおすべおを遞択するだけで苊しむ必芁はありたせん、[完了]をクリックしたす。
15プロゞェクトのMakefileに移動し、CROSS_COMPILE = arm-elf-の行を芋぀けおCROSS_COMPILE = arm-none-eabi-Saveに眮き換えたす。Makefileを保存し、Project-> Build Projectに進み、すべおがコンパむルおよびコンパむルされる様子を確認したす。 すべおが正しく行われた堎合、出力は2぀のファむル* .elfおよび* .binになりたす。
16gdbinit_sramファむルずgdbinit_flashファむルをホヌムフォルダヌたたは他の堎所に䜜成したす。ここで、次のように蚘述したす。
gdbinit_sram

タヌゲットリモヌトlocalhost3333
リセットの初期化を監芖する
モニタヌ停止
printf "____タヌゲットが停止したした____ \ n"
set $ mem_a = * 0x00000000
set $ mem_c = $ mem_a
set $ mem_a = $ mem_a + 1
セット* 0x00000000 = $ mem_a
set mem_b = * 0x00000000
if$ mem_a == $ mem_b
セット* 0x00000000 = $ mem_c
printf "____ Remap_is_Done ____ \ n"
他に
printf "____ Remap_is_Not ____ \ n"
セット* 0xFFFFFF00 = 1
printf "____ Remap_is_Done ____ \ n"
終わり
モニタヌreg pc 0x00000000
モニタヌarm7_9 dbgrq enable
gdb_breakpoint_overrideをハヌドに監芖
ロヌド
hbreak / *ここにブレヌクポむントのポむントを瀺したす* /
続ける
条件1

gdbinit_flash

タヌゲットリモヌトlocalhost3333
リセットの初期化を監芖する
モニタヌ停止
printf "____タヌゲットが停止したした____ \ n"
set $ mem_a = * 0x00000000
set $ mem_c = $ mem_a
set $ mem_a = $ mem_a + 1
セット* 0x00000000 = $ mem_a
set mem_b = * 0x00000000
if$ mem_a == $ mem_b
printf "____ Remap_is_Not ____ \ n"
セット* 0x00000000 = $ mem_c
セット* 0xFFFFFF00 = 1
printf "____ Remap_is_Done ____ \ n"
他に
printf "____ Remap_is_Done ____ \ n"
終わり
モニタヌarm7_9 dcc_downloads enable
モニタヌarm7_9 fast_memory_access enable
フラッシュの消去erase_sector 0 0 15
モニタヌフラッシュプロヌブ0
monitor flash write_bank 0 / *ここでファヌムりェアファむルぞのパスを瀺したす* / 0
リセット実行の監芖
殺す

17デバッガヌを構成したす。 Run-> Debug Configurationに移動し、Zylin Embedded DebugNativesramデバッグ甚ずZylin Embedded DebugNativeフラッシュファヌムりェア甚の2぀の新しい構成を䜜成したす。 タブ付きになりたした。
メむンC / C ++アプリケヌションは、パスずファむル名を指定したす。* .elfはデバッグに必芁、* .bin-はファヌムりェアに必芁です。
デバッガヌGDBデバッガヌ-デバッガヌぞのパスを指定したす。この堎合、home / user / arm / arm-2011.03 / bin / arm-none-eabi-gdbのようになりたす。
GDBコマンドファむル-ここでは、察応するgdbinitファむルぞのパスを瀺したす。
コマンド[初期化コマンド]フィヌルドは空です。
[共通]タブ[お気に入りメニュヌに衚瀺]の[デバッグ]ボックスをオンにしたす。
[適甚]をクリックし、OpenOCDが実行されおいるこずを確認し、[デバッグ]をクリックしたす。 sram構成が実行されおいる堎合、デバッグ情報を含むりィンドりが衚瀺されたす。 オプションで、倉数、メモリ、逆アセンブリなどの抂芁を含むりィンドりを远加できたす。
出来䞊がり、すべおが動䜜したす。
ちょっずした远加。 ダりンロヌドしたプロゞェクトを削陀しないこずをお勧めしたす-レゞスタの操䜜を容易にするための定数を蚘述するヘッダヌファむル、スタヌトアップファむル、リンカヌスクリプト重芁、最も重芁なこずは、デバッガヌのファむルにメモリがどのように割り圓おられるかを説明するMakefileですプログラマヌ。 私にずっおは、それらをそれぞれの新しいプロゞェクトに転送し、Makefileを少し線集する方が良いでしょう。 そしお人生は矎しいでしょう。

PS少し埌で、頭を少し動かせば、ARMのツヌルチェヌンを䜿甚しお同じこずができるこずに気付きたしたが、その必芁性はなくなり、私はそれを始めたせんでした。

Source: https://habr.com/ru/post/J174195/


All Articles