Hi there !
I have successfully compiled redboot for DWL2100AP - it works when loaded via JTAG into RAM. ROM version does not works, because something wrong in hardware initialization. BUT, it is possible now to use part of original bootloader as hardware initializer, that loads redboot. For now i have working redboot, loaded with part of original bootloader. It can load compresed linux kernel from flash or network.
ar531x rev 0x00005850 firmware startup...
SDRAM TEST...PASSED
+
RedBoot startup
Ethernet eth0: MAC address xx:xx:xx:xx:xx:xx
IP: 0.0.0.0/255.255.255.0, Gateway: 0.0.0.0
Default server: 0.0.0.0, DNS server IP: 0.0.0.0
RedBoot(tm) bootstrap and debug environment [RAM]
Non-certified release, version v2_0 - built 17:19:25, Mar 9 2007
Copyright (C) 2000, 2001, 2002, Red Hat, Inc.
RAM: 0x80010000-0x81000000, 0x806bd9d8-0x80ff3000 available
FLASH: 0xbfc00000 - 0xbffe0000, 31 blocks of 0x00020000 bytes each.
== Executing boot script in 10.000 seconds - enter ^C to abort
^C
RedBoot>
Now I'm trying to get redboot works without original bootloader, work in progress.
But, there are some problems with hardware:
I don't know why, but in my version of D-Link works only ENET1 and WLAN1 (not ENET0 and WLAN0 as it sould to be). So I patched redboot to use ENET1. Original bootloader also use et1 (not et0). The same thing with wireless card: it works fine as WLAN1 and platform ap43 with lastest version of madwifi.
Also, to get redboot access to flash it have to be described in flash_am29xxxxx_parts.inl like this:
{ // S29gl032m90
device_id : FLASHWORD(0x7e),
block_size : 0x20000 * CYGNUM_FLASH_INTERLEAVE,
block_count: 32,
device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
base_mask : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
bootblock : true,
bootblocks : { 0x004000 * CYGNUM_FLASH_INTERLEAVE,
0x004000 * CYGNUM_FLASH_INTERLEAVE,
0x004000 * CYGNUM_FLASH_INTERLEAVE,
0x004000 * CYGNUM_FLASH_INTERLEAVE,
0x004000 * CYGNUM_FLASH_INTERLEAVE,
0x004000 * CYGNUM_FLASH_INTERLEAVE,
0x004000 * CYGNUM_FLASH_INTERLEAVE,
0x004000 * CYGNUM_FLASH_INTERLEAVE,
0x3e0000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
banked : false
},
Also, flash works only in x8 bit mode, so it really slow when programming via JTAG (I've tried to set x6 bit mode in flash controller, but it does not works). And flash layout is not so good: in Spansion S29GL032M R4 bootblocks are in the bottom, but bootloader is about 0x20000 bytes long, so small blocks in bottom of flash are useles. But at the top of flash there are small pars of data. like redboot fis directory or board config. They are all small, but each use 1 sector of flash (128k). So, I've decided do not use fis at all, and hard coded flash layout into kernel and redboot: now I have ~3.8Mb of free space for root filesystem and kernel (flash layout like in WRT54) and 128k for configuration.
(Last edited by bitbucket on 10 Mar 2007, 16:46)