FreeBSD on the AP121 (AR9330)

Ian Lepore ian at FreeBSD.org
Wed Mar 27 17:16:58 UTC 2013


On Wed, 2013-03-27 at 09:48 -0700, Adrian Chadd wrote:
> Hi,
> 
> So I have FreeBSD mostly booting on the AR9330 based SoCs.
> 
> The trouble? These ship with 16MB RAM and 4MB flash.
> 
> CPU platform: Atheros AR9330 rev 1
> CPU Frequency=400 MHz
> CPU DDR Frequency=400 MHz
> CPU AHB Frequency=200 MHz
> 
> ...
> 
> Copyright (c) 1992-2013 The FreeBSD Project.
> Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
>         The Regents of the University of California. All rights reserved.
> FreeBSD is a registered trademark of The FreeBSD Foundation.
> FreeBSD 10.0-CURRENT #15 r248780:248782M: Tue Mar 26 22:31:51 PDT 2013
>     adrian at marilyn:/home/adrian/work/freebsd/svn/obj/mipseb/mips.mips/usr/home/adrian/work/freebsd/svn/src/sys/AR9331
> mips
> gcc version 4.2.1 20070831 patched [FreeBSD]
> WARNING: WITNESS option enabled, expect reduced performance.
> Preloaded elf kernel "kernel" at 0x80538074.
> real memory  = 16777216 (16384K bytes)
> Physical memory chunk(s):
> 0x005d2000 - 0x00f90fff, 10219520 bytes (2495 pages)
> avail memory = 9768960 (9MB)
> 
> The kernel is 4.5MB in size uncompressed and takes up ~ 2.5MB of RAM
> just at startup. It's not going to be able to really do anything with
> our current userland without killing processes. I know it won't even
> be able to load the wlan/ath/bridge/switch modules.
> 
> So at this point I'm really, really looking for some help with cutting
> down both the kernel binary size and the kernel memory footprint. It's
> a bit ridiculous at this point.
> 
> The AR9330 is in a lot of the really cheap, really small APs that
> companies like TP-Link make in ridiculous quantities. I'd love to
> showcase FreeBSD + mesh on these, but there's just not enough space to
> run things.
> 
> So, who's up for it? I can send you hardware if you start making
> progress. Lots and lots of embedded hardware.

For starters you might try disabling WITNESS and other things you can't
afford in a slimmed-down kernel.  On the other hand, kernel bloat is
ongoing; here's a random datapoint in the form of an 8.2 versus -current
kernel built for an embedded arm using the same kernel config file (no
debugging options enabled):

  8.2    10.0
 ----    ----
 3.4M      4M  obj/arm.arm/usr/src/sys/TFLEX/kernel*
 2.6M    3.1M  obj/arm.arm/usr/src/sys/TFLEX/kernel.bin*
 1.4M    1.6M  obj/arm.arm/usr/src/sys/TFLEX/kernel.gz.tramp*

If the system isn't doing heavy IO, try "option NBUF=128" to seriously
slim down the amount of memory for buffers (by default it'll use 1/4 of
total ram up to 64MB).  It would be nice to know more about the
implications of tweaking this number, but when I asked on a mailing list
once I didn't get much useful info.

-- Ian




More information about the freebsd-embedded mailing list