nuttx, menu, loader, running from flash

Craig Comstock craig_comstock at
Wed May 6 12:02:20 UTC 2015

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 osmocom-bb/.../compal_e88)

- 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.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the baseband-devel mailing list