Jump to content
43oh

Introducing CC1310, and discussing Energia support


Recommended Posts

Some information about TI's new IoT radio SoC product line is now trickling-out.  CC1310 is a sub-1GHz wireless SoC, and CC26xx units are for 2.4GHz PHYs.  Otherwise, these SoCs are basically identical.

 

CC1310 | Sub-1 GHz | Wireless Connectivity | Description & parametrics

CC2620 | RF4CE | Wireless Connectivity | Description & parametrics

 

The specs of the CC1310 are absolutely insane.  There's no question it is built on a 90nm fab, or maybe even 65nm.  It contains 3 MCUs: the main unit (Cortex M3) the radio controller (Cortex M0) and a sensor controller that is some sort of proprietary 16 bit.

 

I am interested in working on this platform, and I'm also interested in helping to port Energia to it.  What I can do is the firmware side of things.  I am not a Java programmer, nor do I want to be one.  So I'm putting-out this thread as a "call to arms" for anyone interested in a community-led effort to support the CC1310 with Energia.  

Link to post
Share on other sites

@@jpnorair - FYI, I have been thinking about this a bit the past few days, and I think a good approach would be to try and implement the Wiring core using Arduino 1.6+ with their 3rd party hardware support infrastructure.  No Java coding required.

 

As a side note, I have embarked this week on an unofficial port of the MSP430 to Arduino 1.6.1 using the new RedHat GCC (msp430-elf-gcc) compiler; this port is targeting the larger F5xxx/6xxx and FRxxxx series chips along with the larger of the G2xxx.  So this week I've got pretty cozy with creating and modifying the "platform.txt" and "boards.txt" files for 3rd party hardware support.

 

This is the guide I've been following - https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification

 

My current "platform.txt" looks like this at the moment:

~/Documents/Arduino/hardware/spirilis/msp430/platform.txt

name=TI MSP430 Energia-Arduino msp430-elf port
version=1.0.0

compiler.path=/opt/local/msp430-elf-gcc/bin/
compiler.c.cmd=msp430-elf-gcc
compiler.c.flags=-c -g -Os -ffunction-sections -fdata-sections -Wall -fno-exceptions
compiler.cpp.cmd=msp430-elf-g++
compiler.cpp.flags=-c -g -Os -ffunction-sections -fdata-sections -Wall -fno-exceptions -fno-rtti -fpermissive
compiler.c.elf.cmd=msp430-elf-g++
compiler.c.elf.flags=-Os -Wl,--gc-sections -minrt
compiler.ar.cmd=msp430-elf-ar
compiler.ar.flags=rcs
compiler.objcopy.cmd=msp430-elf-objcopy
compiler.size.cmd=msp430-elf-size

# Compile C files
recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -mmcu={build.mcu} -DF_CPU_DEFAULT={build.f_cpu} -m{build.optlarge} {build.extra_flags} -DARDUINO={runtime.ide.version} -DENERGIA={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DMSP430_MEMORY_{build.optlarge} {includes} "{source_file}" -o "{object_file}"
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mmcu={build.mcu} -o "{build.path}/{build.project_name}.elf" -u main {object_files} "{build.path}/{archive_file}" "-L{build.path}" -T "{build.ldscript}" -lm {build.optlibs}

# Compile C++ files
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -mmcu={build.mcu} -DF_CPU_DEFAULT={build.f_cpu} -m{build.optlarge} {build.extra_flags} -DARDUINO={runtime.ide.version} -DENERGIA={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DMSP430_MEMORY_{build.optlarge} {includes} "{source_file}" -o "{object_file}"

# Compile ASM files
recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -mmcu={build.mcu} -DF_CPU_DEFAULT={build.f_cpu} -m{build.optlarge} {build.extra_flags} -DARDUINO={runtime.ide.version} -DENERGIA={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DMSP430_MEMORY_{build.optlarge} {includes} "{source_file}" -o "{object_file}"

# Create AR archive
recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} "{build.path}/{archive_file}" "{object_file}"

# Find ELF code size
recipe.objcopy.nodebug.pattern="{compiler.path}{compiler.objcopy.cmd}" -g "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.nodebug.elf"
recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.nodebug.elf"
recipe.size.regex=Total\s+([0-9]+).*

# Tools definition

tools.mspdebug.cmd.path=/usr/local/bin/mspdebug
tools.mspdebug.upload.params.verbose=-v
tools.mspdebug.upload.params.quiet=
tools.mspdebug.upload.pattern="{cmd.path}" {upload.verbose} {upload.protocol} "prog {build.path}/{build.project_name}.elf"

tools.mspdebug.bootloader.pattern="{cmd.path}" --allow-fw-update tilib "md 0x1000"

(I don't have a good name for my port so I'm calling it Energia-on-Arduino for now.)

 

Boards.txt:


# TI MSP430 - Energia-to-Arduino 1.6 port

##############################################################
lpmsp430f5529.name=LaunchPad w/ msp430f5529 (16MHz / 16-bit ptr)
lpmsp430f5529.upload.tool=mspdebug
lpmsp430f5529.upload.protocol=tilib
lpmsp430f5529.upload.maximum_size=48128
lpmsp430f5529.build.mcu=msp430f5529
lpmsp430f5529.build.f_cpu=16000000L
lpmsp430f5529.build.core=msp430
lpmsp430f5529.build.variant=launchpad_f5529
lpmsp430f5529.build.ldscript=msp430f5529.ld
lpmsp430f5529.build.extra_flags=
lpmsp430f5529.build.optlarge=small
lpmsp430f5529.build.optlibs=

##############################################################
lpmsp430f5529_25.name=LaunchPad w/ msp430f5529 (25MHz / 16-bit ptr)
lpmsp430f5529_25.upload.tool=mspdebug
lpmsp430f5529_25.upload.protocol=tilib
lpmsp430f5529_25.upload.maximum_size=48128
lpmsp430f5529_25.build.mcu=msp430f5529
lpmsp430f5529_25.build.f_cpu=25000000L
lpmsp430f5529_25.build.core=msp430
lpmsp430f5529_25.build.variant=launchpad_f5529
lpmsp430f5529_25.build.ldscript=msp430f5529.ld
lpmsp430f5529_25.build.extra_flags=
lpmsp430f5529_25.build.optlarge=small
lpmsp430f5529_25.build.optlibs=

So with whatever tools TI provides, assuming they can be fully run from the CLI, this "platform.txt" layout should give you a place to start.  What dev boards/tools do you have in mind (and/or have already purchased)?  Curious what your plans are :)

Link to post
Share on other sites

Thanks for the advice.  Right now, I still have no CC1310 hardware, so I'm just brainstorming.

 

One great announcement for me is Energia MT.  It runs as threads on TI-RTOS (or SYS-BIOS, same thing).  So I should be able to port most of that effort to my RTOS, which has much better features (and API) for keeping the apps low-power.

Link to post
Share on other sites
  • 2 weeks later...

Hi @@jpnorair and @@spirilis,

 

We are also behind this SOC. We were in fact looking for a Cortex-Mx solution for the new generation of panStamps so TI's announcement is quite timely.

 

As @@spirilis says, we'd rather go with an integration on Arduino 1.6. Unlike Energia, Arduino 1.6 isolates every architecture and platform from the rest, giving you full freedom to maintain your own cores and libraries. Moreover, Arduino 1.6 allows creating custom menus and handle multiple compilers and bootloaders without having to touch a single line of Java code. On the downside, It's almost impossible to make your custom platfoms part of the official Arduino distro so you usually end by releasing your sources in form of a patch, to be installed on top of an exsiting Arduino install. This is a good point about Energia IMO.

 

@@jpnorair, I'm not interested in exploring the multi-tasking possibilities provided by this MCU but for the rest we could cooperate to develop the cores for Energia and Arduino if you want.

 

I've myself not requested TI about one of their beta boards yet. I'm just guessing that TI will release the platform anytime soon.

 

Regards,

 

Daniel.

Link to post
Share on other sites

I'm not interested in exploring the multi-tasking possibilities provided by this MCU but for the rest we could cooperate to develop the cores for Energia and Arduino if you want.

That is OK.  I am happy to collaborate in any way that makes sense.  It sounds like there is still plenty of overlap.  So, PanStamp is now added to my mailing list on this topic.  :)

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...