After a couple of years of prevarication, I have finally got around to producing a U-Boot for the Pogo V4 that I'm vaguely happy with.
It is similar to the ALARM version, in that it is based on the stock 1.1.4 sources, but it goes a little further.
Background and Philosophy
What I want is a U-Boot that will reliably load Debian and support the SATA interface in that environment. This mandated using the Pogoplug "open source" U-Boot, and lead me to the conclusion that (for my prejudices and preconceptions) that I need to load the kernel and the initramfs from the on-board flash.
If, for whatever reason, the load fails, I don't want the U-Boot side to do anything special. In those cases, I reckon I want to be involved with fixing the problem (i.e. no automatic loading of any other images). And, because only one of my two devices has the serial port header attached, that means I need netconsole to poke around if things go wrong.
This U-Boot does that: it supports netconsole, USB and IDE/SATA, as well as (obviously) pulling the images from NAND.
Using It
There is a compressed tar file at Box.net / uboot.pogoV4-USB-SATA-Net.tzf. Download that, and untar it (tar xvzf ...) and look at the installer.
Because this is based on the stock U-Boot, it requires blparam to set/get environment variables, not fw_printenv. Basically, the installer tends to assume it's running on the standard Pogoplug OS, but will work in other environments as long as it can find a blparam, a flash_erase and a nandwrite.
Netconsole
The Netconsole setup is similar to that of later U-Boot versions, in that you enable it by setting the variable ncip to the IP address of the console machine, and change the variables stdin, stderr, and stdout.
HOWEVER, the network interface takes a little too long to come up, so the usual trick of putting a ping test in the preboot doesn't work: the interface isn't up, the ping fails, and nothing works. Fortunately, the usb start commands take long enough to execute that the network is usable when it finishes, so the following set of variables works like a charm:
(Note that I don't use the serverip variable for this address, because I want to have a separate console from a tftp server; the address I show -- 198.19.81.98 -- is technically reserved for network testing, so should never be used in production. Since I only want the console occasionally, I just add the address to whatever convenient Linux box that may be to hand, using the ifconfig eth0:0 198.19.81.98 syntax).
Building It
At this link Box.net / uboot-pogo-114.patch there is a patch file that should patch against the Pogoplug source at Pogoplug / Opensource / pogomv-u-boot.tar.bz2.
I built it on a Linux Mint (= Ubuntu, = Debian) PC host, following the instructions Here to get an emdebian cross-compiler.
Once compiled, you will have a uboot.bin (which you can tftp and run with the go command) and a couple of files that are suitable for booting (from flash and serial). These are named someting like u-boot-pogomv_200rd_nand.bin and u-boot-pogomv_200rd_uart.bin. The ..._nand.bin file is padded to a multiple of 128KB by:
It is similar to the ALARM version, in that it is based on the stock 1.1.4 sources, but it goes a little further.
Background and Philosophy
What I want is a U-Boot that will reliably load Debian and support the SATA interface in that environment. This mandated using the Pogoplug "open source" U-Boot, and lead me to the conclusion that (for my prejudices and preconceptions) that I need to load the kernel and the initramfs from the on-board flash.
If, for whatever reason, the load fails, I don't want the U-Boot side to do anything special. In those cases, I reckon I want to be involved with fixing the problem (i.e. no automatic loading of any other images). And, because only one of my two devices has the serial port header attached, that means I need netconsole to poke around if things go wrong.
This U-Boot does that: it supports netconsole, USB and IDE/SATA, as well as (obviously) pulling the images from NAND.
Using It
There is a compressed tar file at Box.net / uboot.pogoV4-USB-SATA-Net.tzf. Download that, and untar it (tar xvzf ...) and look at the installer.
Because this is based on the stock U-Boot, it requires blparam to set/get environment variables, not fw_printenv. Basically, the installer tends to assume it's running on the standard Pogoplug OS, but will work in other environments as long as it can find a blparam, a flash_erase and a nandwrite.
Netconsole
The Netconsole setup is similar to that of later U-Boot versions, in that you enable it by setting the variable ncip to the IP address of the console machine, and change the variables stdin, stderr, and stdout.
HOWEVER, the network interface takes a little too long to come up, so the usual trick of putting a ping test in the preboot doesn't work: the interface isn't up, the ping fails, and nothing works. Fortunately, the usb start commands take long enough to execute that the network is usable when it finishes, so the following set of variables works like a charm:
consoleip=198.19.81.98 do_netconsole=run if_netconsole start_netconsole if_netconsole=ping $consoleip start_netconsole=setenv ncip $consoleip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version preboot=usb start; run do_netconsole
(Note that I don't use the serverip variable for this address, because I want to have a separate console from a tftp server; the address I show -- 198.19.81.98 -- is technically reserved for network testing, so should never be used in production. Since I only want the console occasionally, I just add the address to whatever convenient Linux box that may be to hand, using the ifconfig eth0:0 198.19.81.98 syntax).
Building It
At this link Box.net / uboot-pogo-114.patch there is a patch file that should patch against the Pogoplug source at Pogoplug / Opensource / pogomv-u-boot.tar.bz2.
I built it on a Linux Mint (= Ubuntu, = Debian) PC host, following the instructions Here to get an emdebian cross-compiler.
Once compiled, you will have a uboot.bin (which you can tftp and run with the go command) and a couple of files that are suitable for booting (from flash and serial). These are named someting like u-boot-pogomv_200rd_nand.bin and u-boot-pogomv_200rd_uart.bin. The ..._nand.bin file is padded to a multiple of 128KB by:
dd if=u-boot-pogomv_200rd_nand.bin bs=128k conv=sync of=u-boot-pogoV4-USB-SATA-Net.kwb