Ok, talking to guys on IRC and they said to post up here. I've been challenged to see if I can come up with a system that boots in sub 10 seconds to a command prompt with networking. I'm sitting on a few Kino LX800 boards that we use for other projects, but I'm willing to sacrifice one for this.
The board has sata onboard using an ALI M5281 controller. It also uses the geode CS5536 ide controller, so the sata stuff may not be an issue.
From reading/talking to people, this board should be minimal prompt at
around 7 seconds. I've got access to device programmers and 2m repair stuff, so flashing isn't a huge issue.
Would this be a good board for a proof of concept, or should I look at something else.
The board is a Kino LX800, AMD GEODE 500mhz, sata/pata, onboard amd video, onboard realtek 8139 ethernet.
I'd like to to LB and kernel in flash, but if the hardware won't suppor a 16mbit flash, then I'll do lb/filo and boot from CF over the standard ide channel. The board currently has a 49fl004 socketed flash. Plan on using a stripped down debian install, since that's the only one I can reliably shrink.
Thanks, Mark
Here's all the specs:
Here's the output of lspci.
00:01.0 Host bridge: Advanced Micro Devices [AMD] Unknown device 2080 (rev 31) 00:01.1 VGA compatible controller: Advanced Micro Devices [AMD] Geode LX Video 00:01.2 Entertainment encryption device: Advanced Micro Devices [AMD] Geode LX AES Security Block 00:0e.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10) 00:0f.0 ISA bridge: Advanced Micro Devices [AMD] CS5536 [Geode companion] ISA (rev 03) 00:0f.2 IDE interface: Advanced Micro Devices [AMD] CS5536 [Geode companion] IDE (rev 01) 00:0f.3 Multimedia audio controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] Audio (rev 01) 00:0f.4 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] OHC (rev 02) 00:0f.5 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] EHC (rev 02) 00:10.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10) 00:11.0 Mass storage controller: ALi Corporation ALi M5281 Serial ATA / RAID Host Controller (rev a4) 00:11.1 Mass storage controller: ALi Corporation M5228 ALi ATA/RAID Controller (rev c6) 00:12.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
Here's the more verbose lspci output recommend by the guys on irc.
00:01.0 0600: 1022:2080 (rev 31) Subsystem: 1022:2080 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 248, Cache Line Size: 32 bytes Region 0: I/O ports at ac1c [size=4] Region 1: I/O ports at 9e00 [size=8] 00: 22 10 80 20 05 00 20 02 31 00 00 06 08 f8 80 00 10: 1d ac 00 00 01 9e 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 80 20 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:01.1 0300: 1022:2081 Subsystem: 1022:2081 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 11 Region 0: Memory at ee000000 (32-bit, non-prefetchable) [size=16M] Region 1: Memory at efff4000 (32-bit, non-prefetchable) [size=16K] Region 2: Memory at efff0000 (32-bit, non-prefetchable) [size=16K] Region 3: Memory at effec000 (32-bit, non-prefetchable) [size=16K] Region 4: Memory at effe8000 (32-bit, non-prefetchable) [size=16K] 00: 22 10 81 20 07 00 20 02 00 00 00 03 08 00 00 00 10: 00 00 00 ee 00 40 ff ef 00 00 ff ef 00 c0 fe ef 20: 00 80 fe ef 00 00 00 00 00 00 00 00 22 10 81 20 30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 00 00
00:01.2 1010: 1022:2082 Subsystem: 1022:2082 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 11 Region 0: Memory at effe4000 (32-bit, non-prefetchable) [size=16K] 00: 22 10 82 20 06 00 a0 02 00 00 10 10 08 00 00 00 10: 00 40 fe ef 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 82 20 30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 00 00
00:0e.0 0200: 10ec:8139 (rev 10) Subsystem: 10ec:8139 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR+ Latency: 32 (8000ns min, 16000ns max) Interrupt: pin A routed to IRQ 11 Region 0: I/O ports at f200 [size=256] Region 1: Memory at effff000 (32-bit, non-prefetchable) [size=256] Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- 00: ec 10 39 81 07 00 90 82 10 00 00 02 00 20 00 00 10: 01 f2 00 00 00 f0 ff ef 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 ec 10 39 81 30: 00 00 00 00 50 00 00 00 00 00 00 00 0b 01 20 40
00:0f.0 0601: 1022:2090 (rev 03) Subsystem: 1022:2090 Control: I/O+ Mem- BusMaster- SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Region 0: I/O ports at 6000 [size=8] Region 1: I/O ports at 6100 [size=256] Region 2: I/O ports at 6200 [size=64] Region 3: I/O ports at 1000 [size=32] Region 4: I/O ports at 9d00 [size=128] Region 5: I/O ports at 9c00 [size=64] 00: 22 10 90 20 09 00 a0 02 03 00 01 06 08 40 80 00 10: 01 60 00 00 01 61 00 00 01 62 00 00 01 10 00 00 20: 01 9d 00 00 01 9c 00 00 00 00 00 00 22 10 90 20 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:0f.2 0101: 1022:209a (rev 01) (prog-if 80) Subsystem: 1022:209a Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 248, Cache Line Size: 32 bytes Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [disabled] [size=8] Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable) [disabled] [size=1] Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [disabled] [size=8] Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable) [disabled] [size=1] Region 4: I/O ports at ff00 [size=16] 00: 22 10 9a 20 05 00 a0 02 01 80 01 01 08 f8 00 00 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20: 01 ff 00 00 00 00 00 00 00 00 00 00 22 10 9a 20 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:0f.3 0401: 1022:2093 (rev 01) Subsystem: 1022:2093 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin B routed to IRQ 11 Region 0: I/O ports at fe00 [size=128] 00: 22 10 93 20 05 00 a0 02 01 00 01 04 08 00 00 00 10: 01 fe 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 93 20 30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 02 00 00
00:0f.4 0c03: 1022:2094 (rev 02) (prog-if 10) Subsystem: 1022:2094 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin D routed to IRQ 11 Region 0: Memory at efffe000 (32-bit, non-prefetchable) [size=4K] Capabilities: [40] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- 00: 22 10 94 20 06 00 30 02 02 10 03 0c 08 00 00 00 10: 00 e0 ff ef 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 94 20 30: 00 00 00 00 40 00 00 00 00 00 00 00 0b 04 00 00
00:0f.5 0c03: 1022:2095 (rev 02) (prog-if 20) Subsystem: 1022:2095 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin D routed to IRQ 11 Region 0: Memory at efffd000 (32-bit, non-prefetchable) [size=4K] Capabilities: [40] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- 00: 22 10 95 20 06 00 30 02 02 20 03 0c 08 00 00 00 10: 00 d0 ff ef 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 95 20 30: 00 00 00 00 40 00 00 00 00 00 00 00 0b 04 00 00
00:10.0 0200: 10ec:8139 (rev 10) Subsystem: 10ec:8139 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 32 (8000ns min, 16000ns max) Interrupt: pin A routed to IRQ 11 Region 0: I/O ports at f000 [size=256] Region 1: Memory at efffc000 (32-bit, non-prefetchable) [size=256] Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- 00: ec 10 39 81 07 00 90 02 10 00 00 02 00 20 00 00 10: 01 f0 00 00 00 c0 ff ef 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 ec 10 39 81 30: 00 00 00 00 50 00 00 00 00 00 00 00 0b 01 20 40
00:11.0 0180: 10b9:5281 (rev a4) (prog-if 85) Subsystem: 10b9:5281 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 128, Cache Line Size: 512 bytes Interrupt: pin A routed to IRQ 11 Region 0: I/O ports at fd00 [size=8] Region 1: I/O ports at fc00 [size=4] Region 2: I/O ports at fb00 [size=8] Region 3: I/O ports at fa00 [size=4] Region 4: I/O ports at f900 [size=16] [virtual] Expansion ROM at 20000000 [disabled] [size=64K] 00: b9 10 81 52 05 00 a0 02 a4 85 80 01 80 80 80 00 10: 01 fd 00 00 01 fc 00 00 01 fb 00 00 01 fa 00 00 20: 01 f9 00 00 00 00 00 00 00 00 00 00 b9 10 81 52 30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 00 00
00:11.1 0180: 10b9:5228 (rev c6) (prog-if 85) Subsystem: 10b9:5281 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 128 Interrupt: pin A routed to IRQ 11 Region 0: I/O ports at f800 [size=8] Region 1: I/O ports at f700 [size=4] Region 2: I/O ports at f600 [size=8] Region 3: I/O ports at f500 [size=4] Region 4: I/O ports at f400 [size=16] 00: b9 10 28 52 05 00 a0 02 c6 85 80 01 00 80 80 00 10: 01 f8 00 00 01 f7 00 00 01 f6 00 00 01 f5 00 00 20: 01 f4 00 00 00 00 00 00 a0 00 00 00 b9 10 81 52 30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 00 00
00:12.0 0200: 10ec:8139 (rev 10) Subsystem: 10ec:8139 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 32 (8000ns min, 16000ns max) Interrupt: pin A routed to IRQ 11 Region 0: I/O ports at ee00 [size=256] Region 1: Memory at efffb000 (32-bit, non-prefetchable) [size=256] [virtual] Expansion ROM at 20010000 [disabled] [size=64K] Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-) Status: D0 PME-Enable- DSel=0 DScale=0 PME- 00: ec 10 39 81 07 00 90 02 10 00 00 02 00 20 00 00 10: 01 ee 00 00 00 b0 ff ef 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 ec 10 39 81 30: 00 00 00 00 50 00 00 00 00 00 00 00 0b 01 20 40
markw wrote:
Ok, talking to guys on IRC and they said to post up here. I've been challenged to see if I can come up with a system that boots in sub 10 seconds to a command prompt with networking. I'm sitting on a few Kino LX800 boards that we use for other projects, but I'm willing to sacrifice one for this.
I would bet you can achieve that goal with that board.
The board has sata onboard using an ALI M5281 controller. It also uses the geode CS5536 ide controller, so the sata stuff may not be an issue.
A Compactflash card on the IDE interface is you best bet for easy speed.
I'd like to to LB and kernel in flash, but if the hardware won't suppor a 16mbit flash, then I'll do lb/filo and boot from CF over the standard ide channel. The board currently has a 49fl004 socketed flash. Plan on using a stripped down debian install, since that's the only one I can reliably shrink.
The 5536 on that board will support up to a 256MB boot ROM, and 2MB LPC ROMs are pretty accessible now.
Tom Sylla wrote:
markw wrote:
Ok, talking to guys on IRC and they said to post up here. I've been challenged to see if I can come up with a system that boots in sub 10 seconds to a command prompt with networking. I'm sitting on a few Kino LX800 boards that we use for other projects, but I'm willing to sacrifice one for this.
I would bet you can achieve that goal with that board.
The board has sata onboard using an ALI M5281 controller. It also uses the geode CS5536 ide controller, so the sata stuff may not be an issue.
A Compactflash card on the IDE interface is you best bet for easy speed.
I'd like to to LB and kernel in flash, but if the hardware won't suppor a 16mbit flash, then I'll do lb/filo and boot from CF over the standard ide channel. The board currently has a 49fl004 socketed flash. Plan on using a stripped down debian install, since that's the only one I can reliably shrink.
The 5536 on that board will support up to a 256MB boot ROM, and 2MB LPC ROMs are pretty accessible now.
Ok, the board has a plcc 32 rom socket on it, so it looks like I'm limited to 8mbit without constructive surgery and adding address lines.
Looks like a LB/Filo setup booting off parallel compact flash.
Any good sources for spare flash roms? Digikey?
Thanks, Mark
On Jan 2, 2008 9:15 PM, markw markw@wolfenet.org wrote:
Ok, the board has a plcc 32 rom socket on it, so it looks like I'm limited to 8mbit without constructive surgery and adding address lines.
I can't quite read the part number of the PMC flash device on any of the on-line pictures of the Kino board. My guess is that it is an LPC/FWH ROM, not a parallel ROM. ROMs on LPC have 4 muxed address/data lines. You don't need to worry about adding address wires, all memory/FWH reads/writes are 32-bit addressed.
Looks like a LB/Filo setup booting off parallel compact flash. Any good sources for spare flash roms? Digikey?
Search Mouser for "LPC", and look at the memory ICs category. I see a couple of 4 and 8Mb parts in stock. You can use the 16Mb parts, if you can find them to buy. I can't find any on-line, but a distributor may be able to get them (SST49LF016C {FWH} or SST49LF160C {LPC})
Make sure you purchase the correct version of ROM for how your board is strapped. Boot your board, and check the PRI_BOOT_LOC field to know where 5536 is booting from. (the PMC part in the pictures of the Kino board can work in either mode)
The bios on the board is a PMC 49FL004t-33jce. Found a data sheet for that, and it does use the LPC. I'm looking at the SST parts right now. Googling for PRI_BOOT_LOC brings me right back to the list. :) Looks like this is shown with flash rom? Guess it's time to fire up svn and grab some code. This stuff has come a long way since the 27cxxx chips. :)
Mark
Tom Sylla wrote:
On Jan 2, 2008 9:15 PM, markw markw@wolfenet.org wrote:
Ok, the board has a plcc 32 rom socket on it, so it looks like I'm limited to 8mbit without constructive surgery and adding address lines.
I can't quite read the part number of the PMC flash device on any of the on-line pictures of the Kino board. My guess is that it is an LPC/FWH ROM, not a parallel ROM. ROMs on LPC have 4 muxed address/data lines. You don't need to worry about adding address wires, all memory/FWH reads/writes are 32-bit addressed.
Looks like a LB/Filo setup booting off parallel compact flash. Any good sources for spare flash roms? Digikey?
Search Mouser for "LPC", and look at the memory ICs category. I see a couple of 4 and 8Mb parts in stock. You can use the 16Mb parts, if you can find them to buy. I can't find any on-line, but a distributor may be able to get them (SST49LF016C {FWH} or SST49LF160C {LPC})
Make sure you purchase the correct version of ROM for how your board is strapped. Boot your board, and check the PRI_BOOT_LOC field to know where 5536 is booting from. (the PMC part in the pictures of the Kino board can work in either mode)
markw wrote:
The board is a Kino LX800, AMD GEODE 500mhz, sata/pata, onboard amd video, onboard realtek 8139 ethernet.
Hi Mark,
This board should be able to meet your needs. The CPU and chipset are well supported in LinuxBIOS v2. mainboard/amd/db800 would be the place to start. We would be very interested in seeing some profiling of LB and if there are any places where we could optimize for speed. Please post any specific questions or results.
Marc