my IXP4xx-related and other patches
khc at pm.waw.pl
Mon Dec 20 17:30:03 EST 2010
I've been working a bit on IXP4xx support lately and it seems I'm at the
point I can now boot Barebox on a Goramo Multilink routers
(IXP425-based). It requires several patches (will post them shortly) and
NPE microcode files from Intel (or from elsewhere, the regular non-VLAN
microcode v. 2.4 is needed, i.e., same as with Linux).
The binary microcode must be appended to Barebox at correct offsets for
the NPE driver to find it, details are in board support file
#define BAREBOX_START 0x00000
#define BAREBOX_LENGTH 0x34000
#define NPE_A_START (BAREBOX_START + BAREBOX_LENGTH)
#define NPE_A_LENGTH 0x05000
#define NPE_B_START (NPE_A_START + NPE_A_LENGTH)
#define NPE_B_LENGTH 0x03000
#define NPE_C_START (NPE_B_START + NPE_B_LENGTH)
#define NPE_C_LENGTH 0x04000
#define NPE_ENV0_START (NPE_C_START + NPE_C_LENGTH)
#define NPE_ENV0_LENGTH 0x20000
when passed to Linux:
Creating XXX MTD partitions on "IXP4XX-Flash.0":
0x000000000000-0x000000034000 : "barebox"
0x000000034000-0x000000039000 : "NPE-A"
0x000000039000-0x00000003c000 : "NPE-B"
0x00000003c000-0x000000040000 : "NPE-C"
0x000000040000-0x000000060000 : "env0"
User-available flash area starts at 0x60000.
All this IXP4xx code is big-endian only. Too much work with LE (NPE
coprocessors would need buffer byte swapping, flash (EXP bus) would need
16-bit word swapping etc). Big-endian Barebox can load both LE and BE
Linux anyway ("bootz" only at the moment).
It should be easily applicable to other IXP42x-based platforms.
More information about the barebox