Jump to content

Recommended Posts

I created an open-source RTOS called "NUFR" and I'm wanting to port it to the MSP430. So, first I'm advertising NUFR and second I'm soliciting advice for the port.

NUFR is a small but nevertheless full-featured RTOS. It is ideal for the 430, that's why I'm porting it there. It already runs on the Cortex M's. Here's some approximate resource consumption numbers on the M3 /M4:

- the NUFR kernel and services layers consume around 4-6k of flash. Basically, that's all the features turned on.

- RAM consumption:  Around 300 bytes of kernel and messaging overhead; Add for each task: TCB of around 50 bytes and task stack. ARM examples ran minimum of 150 bytes up to 500 bytes per task. Lots of variables to consider, mind you. Each semaphore is around 24 bytes.

And there's a networking stack (RNET) that runs on NUFR. RNET is UDP over IPv4 or IPv6. Current L2 support is for PPP. ICMP echo requests (pings) supported. NUFR supports two packet buffer management schemes, and can squeeze a networking stack into a small RAM footprint (mind you, there's a tradeoff between RAM consumption and CPU usage, and packet MTU has a large impact on small RAM footprint systems).

A key feature of NUFR is that it's mainly event driven (though doesn't have to be). This becomes important on larger codebases on battery-powered systems.

NUFR also does its best to stay out of the way. A lot of RTOSs don't do that. NUFR doesn't take ownership of the interrupt vector table or anything like that. You pick your favorite BSP, etc. and NUFR will work with it. NUFR is flexible, adaptable, and as straightforward as possible. It's documented too.

https://bitbucket.org/burnwood/raging-release/src/default/

That's my advertisement. Onto the solicitation for advice.

I'm looking for recommendations on compilers to support. My plan was to support msg430-gcc. Raging uses all free/open-source tools. But I'm looking to get an easy path on a 430 port, since I only have a few hours of 430 knowledge. What's the best toolchain? Development platform? Is there a software emulation I can run, like QEMU? I'm planning on supporting the 16-bit variant of the 430, is that sufficient for a first pass, and do a 20-bit version later? Which do you think is better to do first, the 16-bit or 20-bit--or can I do both easily?

I started the port, some of the 430 files are on Bitbucket. The port code is very early, hopefully there's enough for someone to tie all the pieces together.

Anyone want to help out with this?

Bernie

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×