Flesh out a geom_map setup, so the kernel can be squeezed _onto_ the device.

The default flash layout gives only 1 megabyte for the kernel, gzipped.
The uboot firmware running on this device only supports gzip, not lzma, so
we actually _do_ have to try and slim the kernel down a bit.

But, since I can't actually do that at the present, I'm opting to:

* extend the kernel from 1mb to 2mb;
* have rootfs fill the rest of that, save 64k;
* eventually I'll hide a 64k config partition at the end, between the
  end of rootfs and the ART (radio configuration data.)

The uboot firmware doesn't care about the partition layout. It just
expects the kernel application image to sit at 0xbf020000 (right after
the 128k uboot image.) The uboot header isn't actually read either -
it's "faked" from a "tplink" flash image header. So as long as the
map configuration here matches what is being written out via the
tplink firmware generator, everything is a-ok.
This commit is contained in:
Adrian Chadd 2011-11-24 04:39:01 +00:00
parent 5c85f74c64
commit 35d1603e8a
2 changed files with 61 additions and 6 deletions

View File

@ -20,11 +20,12 @@ options MSDOSFS
options GEOM_PART_BSD
options GEOM_PART_MBR
# Just make sure the thing boots off of the first attached SCSI device for now!
#options ROOTDEVNAME=\"ufs:da0a\"
# Or an MDROOT for testing.
options MD_ROOT
options MD_ROOT_SIZE=5120
# uzip - to boot natively from flash
device geom_uzip
options GEOM_UZIP
options ROOTDEVNAME=\"ufs:/dev/md0.uzip\"
# Used for the static uboot partition map
device geom_map
# Boot off of the rootfs, as defined in the geom_map setup.
options ROOTDEVNAME=\"ufs:map/rootfs.uzip\"

View File

@ -17,3 +17,57 @@ hint.arge.1.phymask=0x0
# Where the ART is
hint.ath.0.eepromaddr=0x1fff1000
#
# Define a slightly custom flash layout.
# The default flash layout:
#
# 128k: uboot
# 1024k: kernel
# 4096k: rootfs
# 2880k: unknown
# 64k: ART
#
# from printenv:
# bootargs=console=ttyS0,115200 root=31:02 rootfstype=jffs2 init=/sbin/init
# mtdparts=ar9100-nor0:128k(u-boot),1024k(kernel),4096k(rootfs),64k(art)
# This isn't a lot of space!
# So:
# 128k: uboot
# 2048k: kernel
# 5888k: rootfs
# (todo: 64k: config)
# 64k: ART
hint.map.0.at="flash/spi0"
hint.map.0.start=0x00000000
hint.map.0.end=0x000200000
hint.map.0.name="uboot"
hint.map.0.readonly=1
hint.map.1.at="flash/spi0"
hint.map.1.start=0x00020000
hint.map.1.end=0x00220000
hint.map.1.name="kernel"
hint.map.1.readonly=1
hint.map.2.at="flash/spi0"
hint.map.2.start=0x00220000
#hint.map.2.end=0x007e0000
hint.map.2.end=0x007f0000
hint.map.2.name="rootfs"
hint.map.2.readonly=1
#hint.map.3.at="flash/spi0"
#hint.map.3.start=0x007e0000
#hint.map.3.end=0x007f0000
#hint.map.3.name="cfg"
#hint.map.3.readonly=1
hint.map.4.at="flash/spi0"
hint.map.4.start=0x007f0000
hint.map.4.end=0x00800000
hint.map.4.name="art"
hint.map.4.readonly=1