HOME
  Security
   Software
    Hardware
FPGA
  CPU
   Android
    Raspberry Pi
nLite
  etc.
   ALL
    LINK
English Translate 中文翻訳
BACK

2003/12/14

ARM開発環境を無料で揃える 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)
OLIMEX LPC-H40(Philips LPC2106)

  MOTHER BOARD for LPC-H40(LPC-H2106) and ASM Sample Program.

OLIMEX OKI-H5003(Oki ML67Q5003 ARM)
OLIMEX OKI-H5003(Oki ML67Q5003 ARM)

  OKI-H5003 ASM Sample Program / ISFP Utility.

ARMマイコンでBASIC
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/