NameDateSize

..15-Jun-202441

nslu2_buttons.cH A D28-Apr-20085.2 KiB

nslu2_iic.cH A D28-Jun-20087 KiB

nslu2_leds.cH A D28-Apr-20087 KiB

nslu2_machdep.cH A D01-Jul-201124.2 KiB

nslu2_mainbus.cH A D17-Oct-20122.1 KiB

nslu2_pci.cH A D04-Apr-20118.4 KiB

nslu2_start.SH A D30-Jan-20115 KiB

nslu2reg.hH A D28-Apr-20083.3 KiB

READMEH A D22-Nov-20095.1 KiB

README

1$NetBSD: README,v 1.6 2007/01/17 16:00:20 imp Exp $
2
3NetBSD for the Linksys NSLU2 (a.k.a. "Slug")
4~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
6The NSLU2 (Network Storage Link for USB 2.0 Disk Drives) is a small, cheap
7NAS device consisting of an Intel IXP420 (Xscale) CPU, a 10/100mbit Ethernet
8port, and two USB 2.0 ports. It has 32MB of SDRAM and 8MB of Flash memory,
9and runs RedBoot/Linux out of the box.
10
11It is eminently hackable.
12
13The guys over at http://www.nslu2-linux.org/ have done a good job of
14documenting just about every aspect of the hardware and original firmware.
15They also provide a custom "Unslung" Linux distribution to replace the
16original hobbled kernel/userland.
17
18Because of the amount of documentation available, and the fact that Slugs
19are available so cheaply (I paid just over UKP 50 for mine, brand new) I
20decided to buy one and port NetBSD to it.
21
22This is the result of that effort.
23
24Note: The Slug's IXP420 CPU runs in big-endian mode, so when building a
25cross toolchain you must pass "-m evbarm -a armeb" to build.sh.
26
27
28
29Current status
30==============
31
32The following bits of Slug hardware are not (yet?) supported:
33
34 - Flash ROM
35   You can write gzboot kernels (when support is added) to Flash using
36   RedBoot, so all is not lost.
37
38 - Buzzer
39   In the absence of a decent API to expose the onboard buzzer to userland,
40   this is not yet supported. I envisage using timer1 to generate an
41   interrupt at the required rate (1-2 kHz). The handler will toggle the
42   buzzer GPIO pin. Obviously timer1 will be configured only when necessary
43   as a 1-2 kHz interrupt rate will sap a fair bit of CPU horsepower.
44
45Everything else is fully supported, including the power/reset buttons and
46disk activity/status LEDs.
47
48Non-hardware items on the TODO list include:
49
50 - gzboot support.
51   The Slug's 8MB of Flash is split into 5 segments:
52
53    1 0x50000000-0x5003ffff: RedBoot (with some additional bits at the end).
54    2 0x50040000-0x5005ffff: Sysconf (used by the Linksys firmware).
55    3 0x50060000-0x5015ffff: Self-extracting compressed kernel image.
56    4 0x50160000-0x507dffff: Compressed ramdisk image.
57    5 0x507e0000-0x507fffff: SerComm Flash trailer.
58
59   Segments 1, 2, and 5 should be considered immutable. Segments 3 and 4
60   have a 16-byte header, the first 4 bytes of which describe the length
61   of the image contained in that segment (not including the header).
62
63   On power-up, RedBoot copies the image in segment 3 into SDRAM at 0x01d00000,
64   and the image in segment 4 into SDRAM at 0x01000000. RedBoot then jumps to
65   0x01d00000. This is just a regular ARM Linux compressed kernel bootloader.
66
67   So, we need to create a version of gzboot linked not at Flash address
68   0x50060000, but at 0x01d00000 instead. The only downside is that it looks
69   like the combined size of gzboot plus compressed kernel cannot exceed 1MB.
70
71   To support an md(4) root filesystem, we will need to modify gzboot to
72   decompress the ramdisk image from segment 4 and copy it to the correct
73   place in the decompressed kernel image.
74
75 - Move the kernel link address closer to the start of SDRAM. We waste a
76   little under 2MB with the current setup.
77
78
79
80Getting NetBSD onto the NSLU2
81=============================
82
83Thanks to the efforts of the guys over at www.nslu2-linux.org, hacking the
84Slug is a pretty easy proposition, but some soldering skills are essential.
85For a first-time install of NetBSD (at least until someone comes up with a
86nice easy binary install image) you will almost certainly require access to
87the serial console. This means firing up your trusty soldering iron and
88hooking up a MAX3232 chip to your Slug. While your soldering iron is hot,
89you should seriously consider de-restricting your Slug's CPU core clock
90speed (133MHz stock, 266MHz de-restricted) by removing a single surface-
91mount resistor. Full instructions for both these mods are on the above
92website.
93
94Once you have console access you can interrupt RedBoot's auto-boot process
95using CTRL-C. You are now in a position to download a NetBSD kernel into
96SDRAM.
97
98You will have to configure a TFTP server on a machine hooked up to the same
99Ethernet segment as the Slug. This machine's Ethernet interface must also
100be configured to have an address in the 192.168.0.0/24 subnet since the
101Slug's Ethernet *always* defaults to 192.168.0.1 when running RedBoot.
102There seems to be no way to alter this, so the best course of action will
103probably be to set up an alias on the server's interface. 192.168.0.2 is
104a good choice.
105
106Assuming you've done all that and have dropped a suitable kernel image
107into the TFTP directory, the following commands will load and run the
108kernel.
109
110redboot> ip_address -h 192.168.0.2
111redboot> load -r -b 0x200000 netbsd.bin
112redboot> go
113
114At this point you should mount a root filesystem from a USB disk device.
115The ethernet is now supported, so you may also be able to use a NFS root.
116USB Ethernet devices can also be used for a NFS root.
117
118Note that the kernel will always report the CPU core clock speed as 266MHz
119even if your Slug's CPU clock is running at a stock 133MHz.
120
121
122Burning a NetBSD kernel into Flash
123==================================
124
125TBD (waiting for gzboot support).
126
127