LoginSignup
0
0

More than 1 year has passed since last update.

続xscaleの道

Last updated at Posted at 2023-03-28

ブートローダーをいろいろ試しているうちに、つぶしてしまったので、urjtagでブートローダーを書き込む事にしました。

u-bootにもixp425のビルド設定がありますが、NSLU2はredbootを使っていたようで、redbootの方が良さそうです。

NSLU2のサイトはほとんどなくなっていますが、かろうじて下記のレポジトリが見つかりました。

ここにある、redbootのレポジトリはtoolchainレポジトリ(gcc3)のLinuxのバイナリでビルドが通ります。ただ通常のredbootとディレクトリ構成が違っていて、configした後のファイルを抜き出したもののようです。いつものようにFreeBSDのLinuxエミュレーションでビルドしてみます。

gcc3なのが気になりますが、普通にarmでビルドされたgcc4はbigでもlittleでもコンパイルはできますが、big用のlibgccを用意しなければいけないのでこれを使うのが良さそうです。

どうもこのソースはNSLU2とは関係ないものだけどixp425がターゲットなので一緒にしているようです。

iop_redbootというレポジトリはIntelが配布していた、ソースから抜き出したオリジナルのeCosのredbootのコードのようです。元になったIOP_Redboot_Mar_19_2007_source.tar.gzはsourceforgeにありましたが、eCosのツールなどが入っていないので、別に用意する必要があるようです。

すんなりビルドは通ったのでurjtagで焼いてみます。

自作の20ピンの変換コネクタは、そのままでは周りの部品にあたって使えないので、いろいろ考えてみて足長ピンソケットの下駄を履かせて使うことを思いつきました。

足長ピンソケットは一列なのでVCCとGNDは別に取れるように改良しました。

写真(2023-03-29 09.33).jpg

cable ft2232
detect
endian big
detectflash 0x50000000
flashmem 0x50000000 redboot.bin noverify

何も出ません。

ixp425にはUARTが2つあるので、逆になってるのかもしれません。設定を変えてビルドしてみます。

--- a/include/pkgconf/hal_arm_xscale_grg.h
+++ b/include/pkgconf/hal_arm_xscale_grg.h
@@ -18,7 +18,7 @@
 #define HAL_PLATFORM_MACHINE_TYPE  245
 #define CYGNUM_HAL_BREAKPOINT_LIST_SIZE 32
 #define CYGNUM_HAL_BREAKPOINT_LIST_SIZE_32
-#define CYGSEM_HAL_IXP425_PLF_USES_UART1 1
+//#define CYGSEM_HAL_IXP425_PLF_USES_UART1 1
 #define CYGSEM_HAL_IXP425_PLF_USES_UART2 1
 #define CYGSEM_HAL_ROM_MONITOR 1

出ました。

Sercomm(tm) intel board bootloader [ROMRAM]
Sercomm certified release, version 1.00 - built 08:12:35, Mar 29 2023

Platform: Intel Generic Residential Gateway (XScale) 
Copyright (C) 2000, 2001, 2002, Red Hat, Inc.

RAM: 0x00000000-0x04000000, 0x001f4588-0x04000000 available
welcome, snowel 888
== Executing boot script in 2.000 seconds - enter ^C to abort
not have eRcOmM 
Initialize GIGAbit ethernet PCI card
Found device on bus 0, devfn 0xa0:
 Vendor    0xffff
 Device    0xffff
PCI can't find GigaBit card 
In download function

ixp425のurjtagはflashは焼けましたが、機能が完全に使えているわけではなさそうです。

ちなみにopenocdはhaltできませんでした。

しかし、redbootは複雑なディレクトリになっていて、よく抜き出してコンパイルが通る状態にしたものだと感心します。

なにか特殊用途に作りこまれているようです、ブートのデバッグはちょっと間違えると、何も出なかったりして難しいので、とりあえずこれをベースにいじってみます。
I
確実なビルドのRedbootがあればOpenRGのbootからjtagを使わずに書き換えが可能です。ただ失敗する可能性もあるのでurjtagは用意したほうが良いです。urjtagのixp425対応はすこぶる安定してます。

GPIO Dir Func
2 IN SW2
3 OUT LVC374 OE
4 OUT LED8(下)
8 IN PCI INTD
9 IN PCI INTC
10 IN PCI INTB
11 IN PCI INTA
13 OUT PCI RESET
14 OUT PCI CLK
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0