LoginSignup
1
1

猛牛さんにNetBSDを焼いてみた

Last updated at Posted at 2024-02-26

開発中はネットブートしていましたが、ある程度使えるようになったので、Flashに焼いてみることにしました。

CFEでflashを確認してみます。

CFE> show devices
Device Name          Description
-------------------  ---------------------------------------------------------
uart0                NS16550 UART at 0x18000300
uart1                NS16550 UART at 0x18000400
flash0               ST Compatible Serial flash size 1024KB
flash0.boot          ST Compatible Serial flash offset 00000000 size 256KB
flash0.trx           ST Compatible Serial flash offset 00040000 size 1KB
flash0.os            ST Compatible Serial flash offset 0004001C size 704KB
flash0.nvram         ST Compatible Serial flash offset 000F0000 size 64KB
flash1.boot          ST Compatible Serial flash offset 00000000 size 256KB
flash1.trx           ST Compatible Serial flash offset 00040000 size 704KB
flash1.nvram         ST Compatible Serial flash offset 000F0000 size 64KB
nflash0.trx          Unknown type 146 NAND flash offset 00000000 size 1KB
nflash0.os           Unknown type 146 NAND flash offset 0000001C size 131072KB
nflash1.trx          Unknown type 146 NAND flash offset 00000000 size 121856KB
nflash1.brcmnand     Unknown type 146 NAND flash offset 07700000 size 9216KB
eth0                 Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller
*** command status = 0

どうもこのデバイスはブート用の1MのSPI FlashとOS用の128MのNAMD FLashを搭載しているようでうす。

tftpサーバにtrxイメージを置いて以下のようにして焼きます。

CFE> flash -noheader 192.168.11.3:netbsd-WZR-1750DHP.trx nflash1.trx
Reading 192.168.11.3:netbsd-WZR-1750DHP.trx: Done. 1769472 bytes read
Programming...done. 1769472 bytes written
*** command status = 0

trxはZRouterのtoolsを使って作りました。

KERN="WZR-1750DHP"
../ZRouter/tools/oldlzma/oldlzma e sys/arch/evbarm/compile/obj/${KERN}/netbsd.bin -d16 /tmp/netbsd.lza
../ZRouter/tools/asustrx/asustrx -o /tmp/netbsd.trx /tftpboot/netbsd-${KERN}.trx

-d16を指定しないと実機で展開できないようです。

00000000  48 44 52 30 00 00 6c 00  b2 5a 84 63 00 00 01 00  |HDR0..l..Z.c....|
00000010  1c 00 00 00 00 00 40 00  00 00 00 00 5d 00 00 01  |......@.....]...|
00000020  00 d0 e3 15 00 00 00 00  00 00 00 62 80 39 5a 33  |...........b.9Z3|
00000030  fb da 0c e2 78 02 5c 87  48 81 e3 7c be ff fd 84  |....x.\.H..|....|
00000040  97 47 f1 b8 1b 5f 8a 8c  2b db 50 77 44 22 ef f5  |.G..._..+.PwD"..|

これはOpenWRTで配布しているtrxファイルのヘッダーです。1bまでがtrxのヘッダーで1cからlzmaのヘッダーです。デフォルトのlzmaのヘッダーは5d,00,00,80なのですが80が01となっています。OpenWRTのMakefileを確認して-d16をつけているのを見つけました。-d16を付けると01になりました。

FreeBSDに入っているlzmaだとダメで古いものを使う必要があります。rayに話したら、oldlzmaはCFEのために入れてるって事でした。

c2kの時はcfiだったので、BareBoxでバックアップのイメージをダンプして解析しましたが、今回はNANDでオリジナルを確認する事ができないのでOpenWRTのイメージを確認して解析しました。

u-bootではイメージの展開アドレスを指定できますが、CFEは固定のようです。このターゲットでは0x00008000でした。

check_trx: start nflash1.trx
check_trx: exit nflash1.trx
Loader:raw Filesys:raw Dev:nflash0.os File: Options:(null)
Loading: .. 4818900 bytes read
Entry at 0x00008000
Closing network.
Starting program at 0x00008000

これでスタンドアローンでNetBSDが起動できました。

操作のターミナルはWindowsのRLoginを使っていて、書き込みでタイポするといけないので、スクリプトにして実行しています。

1
1
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
1
1