・2003/12/14
ARM開発環境を無料で揃える
(Windows+Cygwin+GCC+GDB+Insight+JTAGで開発、JTAG経由でFlash-ROMの書き換え)
Tags: [ワンチップCPU]
ARM
●参考リンク
・Cygwin
Cygwin is a Linux-like environment for Windows
Cygwinのセットアップ
・GCC
Building the ARM THUMB development tools for Windows
Compiling and Installing the GNU Tools under Microsoft Windows
・JTAG-TOOL
JTAG Tools
・ROM-BIOS
BIOS for Samsung S3C4510B(bios-it)
・OS
uClinux
eCos
・ARMアセンブラ
Linux Zaurusでアセンブリプログラミング
・実験用ARM基板
BLR-TX4Lを分解
はじめに
このページはWINDOWSやMS-DOSは解るけど、Unix/Linux系は全く知らないという私が悪戦苦闘しながらARM系の開発環境を構築していきます。
間違いや、ここはこうした方が良い等のご意見ご指摘は大歓迎です。
開発環境:Windows2000Pro+Cygwin
ターゲット:ARM7系組み込み用ボード
JTAGアダプタ:Wiggler,Xilinx-DLC5,ByteBlasterMV
<
table>
(Donationware |
|
) |
メモ
configureでの指定の意味
build=無指定(今からソースをコンパイルするマシン)
host=無指定(コンパイルしたコードを実行するマシン)
target=arm-elf(コンパイルしたコードが対象にするマシン)
Cygwin
Develと Utilsを INSTにします。それ以外はDEFAULTで
また、Textの moreとWebの wgetもあれば便利かも?
下記のアーカイブをダウンロード
binutils-2.14.tar.gz
gcc-3.3.2.tar.gz
newlib-1.11.0.tar.gz
gdb-6.0.tar.gz
insight-6.0.tar.gz
(1)Binutilをコンパイル
(2)GCCを仮コンパイル
(3)newlibをコンパイル
(4)GCCを本コンパイル
(5)GDBをコンパイル
(6)Insightをコンパイル
JTAG Toolsを使ってFLASH-ROMにプログラムを書き込み動作確認できました。
最終的にはeCosとかのOSを動くようにしたいと考えています。
基板にJTAG端子が無いので半田付け。
直接足に配線を半田付け

ホットメルトで補強してコネクタを増設

JTAGコネクタ部分のアップと増設したLED基板

基板全景

どっかで見た事のある基板ですね???
そうです、
メルコのブロードバンドルータのBLR-TX4L
です。
(ルータそのものの性能も非常に高く、telnet接続する事で非常に高度な設定ができる事で有名です。)
AAFぱ研の
BLR-TX4Lを分解
を参考にして、ARM実験用に転用できると思い購入しました。
個人で低価格で簡単に入手できる”ARM評価ボード”としてはなかなか良い選択肢ではないでしょうか?
(GBAも入手可能ですが、今回はJTAG経由でFLASH-ROMを焼くという目的がありました。)
BLR-TX4Lの構成
・SAMSUNG S3C4510X(ARM7TDMI)
・MXIC MX29LV800BTC-90(8MBit,AMD互換)
・Winbond W986432DH-7(64MBit)
・REALTEK RTL8305S
・REALTEK RTL8019AS
Linux Zaurusでアセンブリプログラミング
のページを参考にLEDが点滅するプログラムを作りました。
FLASH-ROMの0番地に焼くと動きます。
みようみまねで作ったアセンブラソースリスト
"test.s"
KS32C_REG_BASE = 0x03ff0000
KS32C_IOPMOD = (KS32C_REG_BASE + 0x5000)
KS32C_IOPDATA = (KS32C_REG_BASE + 0x5008)
.text
.align 2
.global _start
_start:
ldr r1,=KS32C_IOPMOD
ldr r2,=0x3ffff
str r2, [r1,#0x00]
loop:
ldr r0,=KS32C_IOPDATA
ldr r1,=0x2AAAA
str r1, [r0,#0x00]
ldr r4,=1000000
1: nop
subs r4, r4, #1
bne 1b
ldr r0,=KS32C_IOPDATA
ldr r1,=0x35555
str r1, [r0,#0x00]
ldr r4,=1000000
1: nop
subs r4, r4, #1
bne 1b
bal loop
.align 2
.bss
arm-elf-ldのリンカ指定のファイル
"test.ld"
OUTPUT_ARCH(arm)
/*ENTRY(stext)*/
SECTIONS
{
.text 0x0 : { /* Real text segment */
_text = .; /* Text and read-only data */
*(.text)
. = ALIGN(4);
_etext = .; /* End of text section */
}
.data 0x03fe0000 : {
__data_start = .;
*(.data)
. = ALIGN(4);
_edata = .;
}
.bss : {
__bss_start = .; /* BSS */
*(.bss)
. = ALIGN(4);
_end = .;
}
.stack 0x03fe2000 : {
__stack = .; /* STACK */
}
}
アセンブル用バッチファイル(bashスクリプト)
arm-elf-as -mbig-endian -o test.o test.s
arm-elf-ld -EB -M -T test.ld test.o -o test
arm-elf-objcopy -O binary test test.bin
arm-elf-objdump -h test
JTAG-Tools用バッチファイル(jtag>プロンプトで実行する。適当に編集して。)
jtag> script jtag.scr
"jtag.scr"
cable parallel 0x378 DLC5 << JTAGアダプタ
cable parallel 0x378 ByteBlaster << どっちか選ぶ
detect
include samsung/s3c4510b/s3c4510b << SAMSUNG S3C4510を割り付け
endian big << Big-Endianモード
instruction SAMPLE/PRELOAD << FLASH読み書きに必要
shift ir
shift dr
dr
get signal LITTLE << なんとなく表示してみる
get signal B0SIZE0
get signal B0SIZE1
get signal MCLK
get signal CLKSEL
get signal CLKOEN
get signal TMODE
get signal ExtMREQ
instruction EXTEST << FLASH読み書きに必要
shift ir
set signal P15 out 0 << なんとなく設定してみる
set signal P14 out 1
set signal P13 out 0
set signal P12 out 1
shift dr
set signal P15 out 1
set signal P14 out 0
set signal P13 out 1
set signal P12 out 0
shift dr
peek 0 << FLASHの0番地を表示
peek 1 << FLASHの1番地を表示
readmem 0x0000 0x100 read.bin << FLASH読み込み
eraseflash 0x0000 0 << FLASH消去
flashmem 0x0000 write.bin << FLASH書き込み
quit << プログラム終了
私はjtag-0.5.1にkblaszkowskiパッチを当てて、さらにFLASH-ROM部分を動くようにしました。
Cygwin上で "ioperm -i"でI/Oポートを叩けるようにしておく必要があります。
"ioperm -u"で解除。("GIVEIO.SYS"等と競合するので排他で設定する。)
BIOS for Samsung S3C4510Bの bios-itの起動に成功しました。
ログファイル
こんな感じ
2003/12/18 eCos(Samsung SNDS based)の"redboot"の起動に成功しました。
残る問題はこれをどのように有効に使うかわからない事です。
何かいい参考アプリありませんでしょうか?
ログファイル
こんな感じ
(GNU)?雑感
・どこを変更すれば良いのかわかり難い/わからない。
・ドキュメントがわかり難い/わからない/そもそも無い。
・ソースリストだけポツンとある。
・どこをクリックしてダウンロードするのか、何をダウンロードすれば良いのかわかり難い。
・(利点や長所の部分が逆に不便を強いる。)
Tags: [ワンチップCPU]
●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)
OLIMEX LPC-H40(Philips LPC2106)
MOTHER BOARD for LPC-H40(LPC-H2106) and ASM Sample Program.
OLIMEX OKI-H5003(Oki ML67Q5003 ARM)
OKI-H5003 ASM Sample Program / ISFP Utility.
ARMマイコンでBASIC
超ミニBASIC for SH7046を移植しました
[HOME]
|
[BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c)
2005 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator
http://www.neko.ne.jp/~freewing/cpu/arm_gcc/