RIOT preview for TI cc3200

Hello dear RIOTers,

I’ve pushed a cc3200 (http://www.ti.com/product/cc3200) RIOT basic port here:

https://github.com/attdona/RIOT

SimpleLink Wi-Fi CC3200 LaunchPad is the working board (http://www.ti.com/tool/cc3200-launchxl).

This is my first contribution to RIOT, so it would be great if you could me feedback.

greetings Attilio

Quick start

make BOARD=cc3200-launchxl

for flashing you have to use the cc3200prog binary from Energia (http://energia.nu/):

export ENERGIA_ROOT=<energia root dir, default: /opt/energia-0101E0016> export PORT=<USB com port, default: /dev/ttyUSB1>

make BOARD=cc3200-launchxl flash

For flashing use the jumper setting described here: http://energia.nu/cc3200guide/

Nice work Attilio. I was just starting to explore into this board from TI and this is going to be helpful.

Did you create a pull request for this port ?

Meanwhile, a point that points you can look into.

For flashing/debugging CC3200, you can use openocd as well as cc3200.cfg configuration file is already available. You can put that in the board/dist. I am not sure but I think cc3200prog binary may be license limited. More over it will be helpful even for debugging :slight_smile:

Thanks and Regards,

Rakendra

Hi Rakendra,

Before creating a PR I need just some confirmation, the most important is that driverlib from TI is license compatible with RIOT (cpu/cc32000/driverlib and cpu/cc3200/inc files used as HAL for the drivers).

I suppose there is no problem but it is better to have a confirmation from RIOT community leaders.

Under cc3200-launchxl/dist there is already a debug.sh using openocd that should work as a debugging tools:

make BOARD=cc3200-launchxl debug

For flashing I don’t know how to flash the external SD card with openocd, do you or someone else know how to flash with openocd or in some other ways?

Greetings Attilio

ps. for Arvind: if cc3200 TI driverlib is RIOT license compatible, the equivalent driverlib for msp320 could be a good starting point for your chip?

Hi Attillio,

I have faced this issue while porting RIOT-OS to Stellaris Launchpad board from TI. (boards/ek-lm4f120xl)

For the driverlib you can take the look at the https://github.com/RIOT-OS/RIOT/tree/master/cpu/stellaris_common folder.

I think this may provide some insight.

I will let others also weigh their opinion on this, but driverlib has lot of TI license code which may not acceptable since it has a clause for limited usage. But you can use the header files which are under /inc folder which have BSD license.

Thanks and Regards,

Rakendra

Hey Attilio,

Thanks a lot for your effort on getting this board supported!

I need just some confirmation, the most important is that driverlib from TI is license compatible with RIOT (cpu/cc32000/driverlib and cpu/cc3200/inc files used as HAL for the drivers).

I just took a quick look, but it seems like "driverlib" is TI's own hardware abstraction C code.

Our philosphy here was always to not use vendor-supplied HAL code and instead rewrite hardware support from scratch.

While that requires a little more effort for a new port in the beginning, we usually end up with a lot cleaner, smaller, more-to-the point code that can more easily be shared between platforms.

(The license used by driverlib looks fine actually.)

Kaspar

Ciao Kaspar,

I agree with RIOT philosophy, so a rewrite could be a nice thing, but I also think that this is not a top priority now, at least for me …

If someone else wants to contribute it would be great!

One more thing to consider is that cc3200 has:

  • 256 Kb of RAM

  • an external SD serial flash card memory where to flash the image

  • an internal ROM memory burned into the chip that hosts the bootloader and the driverlib “ROM version” (directly from factory) So from version ES1.33 it seems possible to link to the ROM version of driverlib for resource optimizations (so could be a waste to throw away the driverlib API?)

I have not tested this setup yet, but I think could be a trail to do.

Attilio

Hej,

IMHO that is exactly what we do! @kaspar: in this particular case (as for the LM4F120 launchpad board) it makes very much sense to use the provided hardware abstraction to implement RIOTs periph interfaces, as the code used by this HAL layer is burned into read-only ROM directly on the CPU and thus does not use any additional memory… Cheers, Hauke

Ok,

just for sharing a little roadmap I’m starting to work on the wifi module integration.

I need a little bit of time for this task, I think some weeks.

Could make sense create a PR after the completion of this task?

Let me know!

greetings Attilio

ps. For shell echoing I needed to apply the following patch to shell/shell.c (I think this affect all systems that use newlib)

@@ -256,6 +256,9 @@ static int readline(char *buf, size_t size) else { *line_buf_ptr++ = c; _putchar©; +#ifdef MODULE_NEWLIB

  • fflush(stdout); +#endif } } }

Hi Attilio,

nice! Looking forward to see you PR :wink: .

Best, Peter

Dear RIOTers

I’m proud to announce that I have just completed a working version for cc3200 chip on launchpad board.

There are a mqtt client and an httpserver demo, ported from TI SDK original examples, under RIOT/examples directory (for sure not the right place but I don’t know a better place for the cc3200 specific examples app)

Now I’m going to create the PR …

Attilio