nuttx, menu, loader, running from flash

Craig Comstock craig_comstock at
Thu May 7 14:54:02 UTC 2015

Craig Comstock <craig_comstock <at>> writes:

> Hi,
> I'm trying to get nuttx running on my C139 compal_e86(88?) phone. I have
been reading some emails and loader scripts but am a bit unexperienced with
this area of software. I've managed to use the "menu" app with flashing
successfully but so far am unable to get nuttx to run either due to the
compal loader not letting me load more than 128k into highram or the flash
setup not being quite right in terms of loader scripts.
> I think what I would like is this (based loosely on LINKAGE.txt in
> - keep compal loader at 0x0
> - put something custom at 0x2000, either the menu app or a simple 2nd
stage loader
> - put nuttx at 0x10000
> The "menu" app option ( would
require me to modify that code a bit so that I wasn't copying nuttx into
highram but instead just running it "in-place" in flash. So maybe two header
options: "highram:APPNAME" and "flash:APPNAME"? I suppose I could try
running nuttx in highram as menu currently intends, by copying it from flash
to ram but that seems sort of "wrong" if nuttx is my main goal.
> The "other" option would be to write some simple loader for 0x2000 which
did whatever setup might be required (none?) and simply jump to 0x10000.
That way the ideas in LINKAGE.txt about safety and what-not are preserved.
If I need to flash a new nuttx image I don't have to worry about ruining
page 0 and compal loader and bricking the phone.
> Another option would be to replace the compal loader but I'd rather get to
nuttx sooner than later and don't see much immediate advantage to an
entirely custom bootloader. 
> If I preserve the compal loader then all the normal osmocom-bb
functionality is preserved in terms of being able to load layer1, rssi if
you want to in highram while nuttx could be living in flash for booting into
"normally" to use as a consumer-style device.
> I think I prefer the "other" option I mention above to keep things fairly
simple. Do you think I can just use the from compal_e88, modify
slightly for e86 (bigger IRAM I think is the only change) and simply put a
jump at 0x2000 to 0x10000? Would that take care of exception vectors, setup
and all the other stuff I don't currently understand about bringing things "up"?
> Just FYI, I am working off the latest nuttx code and not nuttx-bb since
nuttx-bb seems pretty out of date. Not sure what folks want to do with that.
> Thanks,
> Craig

I modified the menu firmware to simply jump to 0x10000. Flashed the
compal_loader + menu + nuttx using a slightly modified from
compal_e88 (put start of FLASH at 0x10000) and it kind of worked. Got an
exception printout from nuttx code complaining about unregistered IRQ so I
think I'm on my way. I'll probably have a good patch submitted to nuttx
pretty soon that others could play with if they wish.

More information about the baseband-devel mailing list