Stellaris and Tiva-C controllers

Related: hacks, STM32

This page should contain projects, ideas, observations, and resources relating to the TI Stellaris (M3) and Tiva (M4F) line of ARM controllers and tools.

Hardware

Tiva-C Launchpads are available from TI if their site happens to work and shipping works for you. Last experience was daytime courier only. No notice and no messages or phone number delivered. But no shipping fee either.

I haven't noticed any open designs or loose chips available so far. TI has generally been considered very good with samples.

Toolchain

I use the lm4tools flasher. There's also a gdb gateway (lmicdiusb) I don't think I've tried yet.

I'm trying the Debian bare metal ARM GCC port. It seems to be just perfect. It appears to work fine with STM32.

In dwelch's Stellaris Launchpad repo there are some neat example and test projects. I tried them and kept some logs. The packaged GCC works perfectly here. You can also use an LLVM frontend, it seems.

I have tried Emdebian ARM toolchains before as well as some similar package in (x)Ubuntu at Tarlab. There may be a lot of paths and options to set, but it works despite being for Linux EABI and not "none". I've built most stellarisware demos successfully.

There are a lot of older documents pointing to summon-arm-toolchain or various other non-integrated install. If that approach seems acceptable, you might also follow them.

On other platforms you may have additional compiler choices, but these tools should be more or less available anywhere.

Another approach could be Mecrisp Forth.

See also Energia.

Firmware development

One tricky feature with vendor libraries (and any outside code) is that it may come with limitations on e.g. how you can license your own code. It is important to pay attention to this. Some licenses will prevent you from limiting the freedom of your software. Some licenses will prevent you from having freedom with your software.

Few of us are lawyers and there is no guarantee of the result in any case. If you are publishing source (which is nice), its ancestry will be particularly in the open. If you intend to hide your code, its use may still be limited. Ethically and morally, even if not practically.

A good vendor provides all the documentation and examples for their parts they possibly can in order to help sell the parts and establish mindshare with developers. Companies and individuals are both good targets. Students and hobbyists are just future customers in potentia.

Sadly, ARM seems to be a particularly unpleasant area when it comes to both documentation and examples.

Before using or recommending, examine Stellarisware licensing. Rumour is, that parts of the Stellarisware driver library are BSDL, which would be agreeable. Other parts will be unusable. The made up license in particular contains an exclude clause with wording "or similar", which could mean absolutely anything is a breach. (Never assume that legal or corporate decisions involve common sense!)

Finding or making a fork of only these parts would be very handy.

There is some talk about CMSIS licensing as well. Which parts of that are freely usable is something to look up. There are almost certainly traps.

Another approach at libopenstm32. GNU GPL, version 3 or later may not sit well with some people, of course.

Projects and links