【チュートリアル】Ubuntuの下でARMプロセッサarm-linux-gccクロスコンパイル環境およびOpenJTAG+openocd書き込み環境を構築する
UbuntuでARMプロセッサarm-linux-gccクロスコンパイル環境およびOpenJTAG+openocd書き込み環境を構築
前言
このチュートリアルで使用するオペレーティングシステムはUbuntu 16.04で、使用するARMプロセッサはSamsung S 3 C 2440で、FriendlyARM Mini 2440開発ボードで操作し、OpenJTAG+openocd書き込みプログラムを使用します.
もちろん、理屈は通じるので、異なるプラットフォームの下でも一部の配置を少し修正すればいいだけです.
ステップ
1.arm-linux-gccクロスコンパイルツールをダウンロードし、プログラムを作成します.
(次の文章では、私が勉強している間に書いたプログラム(C言語とアセンブリインタラクション)を発表します)
Makefileはこのように書くことができます(ledを点灯する例):
ファイルを生成する.binは後続の使用に供する OpenJTAGは、プログラムを記録するためのデバッグ/シミュレーションツールです.私の手元にあるのはFT 2232 Dチップで、USB回転JTAG、USBシリアルポート機能も備えています.では、以前JLinkでWindowsのKeil MDKでstm 32を開発していたのと何が違うのでしょうか.たとえば、OpenJTAGはWindows、Linux、MACの下で使用できますが、JLinkはWindowsでのみ使用でき、Linuxの下ではデバッグ機能が使用できません.そのため、ある程度OpenJTAGの方が実用性があります.
ハードウェアを使用するには、まずドライバをインストールする必要があります.intra 2 net社のウェブサイトに最新版(旧版ももちろん可能ですが、いくつかの構成では異なるかもしれません)のlibftdiをダウンロードする必要があります.これはOpenJTAGが使用しているFT 2232 Dチップの下位ドライバライブラリです.(注:libusb-devをインストールする必要があります)
ダウンロード後のコンパイルインストール:
もちろんgitでソースコードをダウンロードすることもできます.
ftdi-eeprom(FT 2232に接続されているe 2 promを焼くツール)もインストールしたい場合は、同じ方法でダウンロードしてインストールします.(注:libconfuse-devをインストールする必要があります)
2.openocdのインストール
OpenocdはオープンソースのJTAG上位機プログラムで、現在多くのチップをサポートしており、サポートされているチップは増加しています.もちろん、ソースコードは公開されており、自分でコンパイルできるので、カスタムツールドライバを増やすのも簡単です.作業ディレクトリを開き、端末を開き、git:sudo apt-get install gitをインストールする必要があります.
オープンnocdの最新版のソースコードが入手できます
Openocdのディレクトリに入り、次の操作を行います.
上の./configureのパラメータは私の板によって決められています.他のチップ、デバッグツールなどを使用する場合は、対応する修正を行います.詳細は:
インストールが完了したら、
バージョン情報が出力されます.
3.openocdを構成する.cfg
以下のプロファイルを参照してください.(ここでは、ハードウェアによって異なります)
4.openocdを起動する
開発ボードに接続されているOpenJTAGのUSBインタフェースをPCに接続し、端末に入力する.
正常にアクセスしたら、別の端末を開き、次のように入力します.
進入操作指令方式 pollを入力、開発ボードの現在の情報 を表示する. halt入力、 一時停止入力resume、回復 入力reset、リセット LEDを点灯させるプログラムを例に挙げます.
そしてLEDが点灯しているのが見えます!私の後続の学習過程のプログラムの共有を読むことを歓迎します&解析 読んでくれてありがとう^^
参考資料の一部は次のとおりです.http://blog.chinaunix.net/uid-20543672-id-94365.html個人用ページ:http://www.techping.cn/ 私の個人サイトブログ:http://www.techping.cn/blog/wordpress/ 私のCSDNブログ:http://blog.csdn.net/techping 私の簡単な本:http://www.jianshu.com/users/b2a36e431d5e/timeline 私のGitHub:https://github.com/techpingようこそお互いfollow~
前言
このチュートリアルで使用するオペレーティングシステムはUbuntu 16.04で、使用するARMプロセッサはSamsung S 3 C 2440で、FriendlyARM Mini 2440開発ボードで操作し、OpenJTAG+openocd書き込みプログラムを使用します.
もちろん、理屈は通じるので、異なるプラットフォームの下でも一部の配置を少し修正すればいいだけです.
ステップ
1.arm-linux-gccクロスコンパイルツールをダウンロードし、プログラムを作成します.
(次の文章では、私が勉強している間に書いたプログラム(C言語とアセンブリインタラクション)を発表します)
Makefileはこのように書くことができます(ledを点灯する例):
led.bin:start.o
arm-linux-ld -Ttext 0 -o led.elf start.o
arm-linux-objcopy -O binary led.elf led.bin
arm-linux-objdump -D led.elf > led.dis
start.o:start.s
arm-linux-gcc -o start.o start.s -c
ファイルを生成する.binは後続の使用に供する
ハードウェアを使用するには、まずドライバをインストールする必要があります.intra 2 net社のウェブサイトに最新版(旧版ももちろん可能ですが、いくつかの構成では異なるかもしれません)のlibftdiをダウンロードする必要があります.これはOpenJTAGが使用しているFT 2232 Dチップの下位ドライバライブラリです.(注:libusb-devをインストールする必要があります)
ダウンロード後のコンパイルインストール:
./configure
make
sudo make install
もちろんgitでソースコードをダウンロードすることもできます.
ftdi-eeprom(FT 2232に接続されているe 2 promを焼くツール)もインストールしたい場合は、同じ方法でダウンロードしてインストールします.(注:libconfuse-devをインストールする必要があります)
2.openocdのインストール
OpenocdはオープンソースのJTAG上位機プログラムで、現在多くのチップをサポートしており、サポートされているチップは増加しています.もちろん、ソースコードは公開されており、自分でコンパイルできるので、カスタムツールドライバを増やすのも簡単です.作業ディレクトリを開き、端末を開き、git:sudo apt-get install gitをインストールする必要があります.
git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd
オープンnocdの最新版のソースコードが入手できます
Openocdのディレクトリに入り、次の操作を行います.
sudo ./bootstrap
sudo ./configure --enable-ftdi --enable-usb_blaster_libftdi --enable-openjtag_ftdi --enable-maintainer-mode --enable-legacy-ft2232_libftdi
sudo make
sudo make install
上の./configureのパラメータは私の板によって決められています.他のチップ、デバッグツールなどを使用する場合は、対応する修正を行います.詳細は:
./configure --help
インストールが完了したら、
openocd -v
バージョン情報が出力されます.
Open On-Chip Debugger 0.10.0-dev-00251-g888d5a5-dirty (2016-04-24-13:35)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
3.openocdを構成する.cfg
以下のプロファイルを参照してください.(ここでは、ハードウェアによって異なります)
interface ftdi
ftdi_device_desc "USB<=>JTAG&RS232"
ftdi_vid_pid 0x1457 0x5118
ftdi_layout_init 0x0f08 0x0f1b
ftdi_layout_signal nSRST -data 0x0200 -noe 0x0800
ftdi_layout_signal nTRST -data 0x0100 -noe 0x0400
jtag_khz 1500
if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
} else {
set _CHIPNAME s3c2440
}
if { [info exists ENDIAN] } {
set _ENDIAN $ENDIAN
} else {
# this defaults to a bigendian
set _ENDIAN little
}
if { [info exists CPUTAPID] } {
set _CPUTAPID $CPUTAPID
} else {
set _CPUTAPID 0x0032409d
}
#jtag scan chain
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0x0f -expected-id $_CPUTAPID
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME arm920t -endian $_ENDIAN -chain-position $_TARGETNAME
$_TARGETNAME configure -work-area-phys 0x40000000 -work-area-size 0x4000 -work-area-backup 1
#reset configuration
adapter_nsrst_delay 100
jtag_ntrst_delay 100
reset_config trst_and_srst
#-------------------------------------------------------------------------
# JTAG ADAPTER SPECIFIC
# IMPORTANT! See README at top of this file.
#-------------------------------------------------------------------------
adapter_khz 12000
#jtag interface
#-------------------------------------------------------------------------
# GDB Setup
#-------------------------------------------------------------------------
gdb_breakpoint_override hard
#------------------------------------------------
# ARM SPECIFIC
#------------------------------------------------
targets
arm7_9 dcc_downloads enable
arm7_9 fast_memory_access enable
nand device 0 s3c2440 $_TARGETNAME
adapter_nsrst_delay 100
jtag_ntrst_delay 100
reset_config trst_and_srst
init
echo "--- login with - telnet localhost 4444 ---"
4.openocdを起動する
開発ボードに接続されているOpenJTAGのUSBインタフェースをPCに接続し、端末に入力する.
openocd -f openocd.cfg
正常にアクセスしたら、別の端末を開き、次のように入力します.
telnet localhost 4444
進入操作指令方式
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
>
halt //
nand probe 0// Nand Flash
nand erase 0 0 0x20000// 0 128K
nand write 0 led.bin 0// LED.bin
reset//
そしてLEDが点灯しているのが見えます!
参考資料の一部は次のとおりです.http://blog.chinaunix.net/uid-20543672-id-94365.html