The TD RF Module SDK provides a complete Rapid Embedded Development Environment for the TD RF modules and reference designs.
The TD RF Module SDK contains all the Eclipse projects, static libraries, examples with source codes and auto-generated API documentation to develop for the TD RF modules and reference designs.
Further details on the TD RF Module SDK can be found at http://rfmodules.td-next.com/
We hope you enjoy using the TD RF Module SDK!
The TD next Team
The SDK source code and examples are no longer distributed with the TD RF Module SDK Tools zip file but are available through the https://github.com/Telecom-Design/TD_RF_Module_SDK Github repository once you register your Telecom Design Evaluation Board (EVB) by following the steps described on http://rfmodules.td-next.com/sdk/.
The stand-alone Eclipse Package which should be used to compile the source can be found here: https://s3-eu-west-1.amazonaws.com/assetstdnext/download/TD_RF_Modules_SDK_Tools-v6.0.0.zip
The following steps detail how to download the source code and import all projects into the Eclipse environment.
- Navigate to the
"C:\TD\TD_RF_Module_SDK-v6.0.0\eclipse"folder and double-click on the"eclipse.exe"icon - Open the
"File"menu and select the"Import..."item. - In the
"Import"dialog, unfold the"Git"folder by clicking on the"+"sign left to it, select the"Projects from Git"item and click on the"Next >"button - In the
"Import Projects from Git", select the"URI"icon ad click on the"Next >"button - Enter The Github repository URL
"https://github.com/Telecom-Design/TD_RF_Module_SDK.git"in the"URI"field - Enter your Github username and password in the
"User:"and"Password:"fields, respectively and click on the"Next >"button - Check the
"Master"branch box and click on the"Next >"button - Enter
"C:\TD\TD_RF_Module_SDK-v6.0.0\Github\TD_RF_Module_SDK"in the"Directory:"field and click on the"Next >"button - Check the
"Import existing projects"radio button and click on the"Next >"button - Click on the
"Finish"button. The Git import will take place, this may take a while
All the available libraries and examples should now be available in the Project Explorer panel.
By default, all projects are presented in Eclipse at the same level without particular organization except that they are sorted alphabetically.
In order to have a more logical organization, we must import an Eclipse "Working Set" that will provide a grouping of projects by categories.
To do so, launch Eclipse by navigating to the "C:\TD\TD_RF_Module_SDK-v6.0.0\eclipse" folder and
double-click on the "eclipse.exe" icon (if not already done) and:
- Open the
"File"menu and select the"Import..."item. - In the
"Import"dialog, unfold the"General"folder by clicking on the"+"sign left to it, select the"Working Sets"item and click on the"Next >"button - Enter
"C:\TD\TD_RF_Module_SDK-v6.0.0\Github\TD_RF_Module_SDK\TD_RF_Module_SDK.wst"in the"Browse..."field, check all working sets and click on the"Finish"button - Click on the small downwards arrow in the top-right corner of the
"Project Explorer"panel and select the"Select Working Sets..."item - In the
"Select Working Sets"dialog, click on the"Select All", then on the"OK"button - Click on the small downwards arrow in the top-right corner of the
"Project Explorer"panel again and select the"Top Level Elements > Working Sets"item
All the available libraries and examples should now be better organized in the Project Explorer panel.
With the exception of the binary-only static libraries in the "libtddrivers" and "libtdrf"
projects, all deliverables are presented in source form only, and must be compiled to obtain an
executable firmware. To compile properly you must add the gcc path into your Eclipse environment variables
by opening: Window -> Preferences -> C/C++ -> Environment -> Add...
Please add the PATH variable with the following value:
C:\TD\TD_RF_Module_SDK-v6.0.0\gnu\bin
Then if we take the "blink" project as an example, here are the steps required to compile it:
- In order to avoid unnecessary rebuilds of the common libraries, it is best to set the right
build configuration for all these libraries: unfold the
"Common_Libraries"working set in the Project Explorer panel on the left side, then select all the projects by clicking on the first one in the list, pressing the"SHIFT"key, then clicking on the last one in the list - Click on the small downwards arrow right next to the
"Hammer"icon in the top menu bar and select the right build configuration corresponding to your board:"TD1204","TD1205""TD1208"or"TD1508", and"Debug"for building an executable firmware with integrated symbols suitable for source code debugging, or"Release"for a stripped down firmware - Unfold the
"Core_Examples"working set in the Project Explorer panel on the left side, then select the"blink"project - Click again on the small downwards arrow right next to the
"Hammer"icon in the top menu bar and select the same build configuration as for the libraries above - Compilation of the
"blink"project and all the required dependencies will take place, which can be monitored in the"Console"tab of the bottom panel
The same procedure can be used for all the example projects when required.
Unlike some dedicated embedded Interactive Development Environments (IDEs), Eclipse does not come with fixed Flash/Debug commands or menu buttons: they need to be added explicitly on a project by project basis.
Fortunately, these Flash/Debug "Launchers" can be imported or duplicated to other projects easily:
- Open the
"File"menu and select the"Import..."item. - In the
"Import"dialog, unfold the"Run/Debug"folder by clicking on the"+"sign left to it, select the"Launch Configurations"item and click on the"Next >"button - Enter
"C:/TD/TD_RF_Module_SDK-v6.0.0/Github/TD_RF_Module_SDK/Eclipse Launchers"in the"Browse..."field, check the box in front of the"Eclipse Launchers"item and click on the"Finish"button - All the default Flash/Debug
"Launchers"will be added to the top menu"Bug"and"Green Circle with With Right Arrow and Briefcase"icons - If required, you can edit these
"Launchers"by choosing the "Debug Configurations..."or"External Tools Configurations..." entries in the menu obtained by the small downwards arrow right next to the corresponding"Bug"or"Green Circle with With Right Arrow and Briefcase"icon - In the dialog windows that opens, you can edit a given configuration directly and click on the
"Apply"and"Close"buttons, or you an duplicate it by right-clicking on it and selecting the"Duplicate"entry in the contextual menu that pops up
Then, to flash a firmware to the TD12xx/TD15xx board:
- Select the desired project in the Project Explorer panel on the left side
- Right-click on the project and select the
"Build Configurations > Set Active >"and the desired build configuration as explained above - Optionally click on the
"Hammer"icon in the top menu bar to build the project - Click on the the small downwards arrow right next to the
"Green Circle with With Right Arrow and Briefcase"icon and select"Flash Selected Project"in the contextual menu
Similarly, to debug a firmware on the TD12xx/TD15xx board:
- Select the desired project in the Project Explorer panel on the left side
- Right-click on the project and select the
"Build Configurations > Set Active >"and the desired build configuration as explained above, this must be a"Debug"one - If this is the first time you debug this project, you must edit/add a
"Launcher"by choosing the "Debug Configurations..."entry in the menu obtained by the small downwards arrow right next to the"Bug"` icon - In the dialog windows that opens, you can edit a given configuration directly (you only need to
change the
"Project:"and"C/C++ Application:"values) and click on the"Apply"and"Close"buttons, or you an duplicate an existing one by right-clicking on it and selecting the"Duplicate"entry in the contextual menu that pops up, then changing these same values - Click on the the small downwards arrow right next to the
"Bug"icon and select the"Debug TD12xx"or"Debug TD15xx"entry in the contextual menu that corresponds to your board - The first time you launch a debug session, Eclipse will prompt you if you want to switch to a new
"Debug Perspective"(a window panel organization purposed for debugging): click on"Yes" - The firmware will optionally be built and flashed to the module, the execution will stop early in the program execution, giving you an opportunity to single-step, continue, explore variables as expected from a source-level debugger
- When finished, you can cleanly disconnect from the running application by right-clicking on the
"Debug TD12xx"or"Debug TD15xx"entry in the tree under the "Debug" panel, select the"Terminate/Disconnect All"entry in the contextual menu, clicking on the"XX"icon at the top of this panel, then clinking on the"C/C++"button located at the top right of the main window to return to the normal C/C++ edit panel organization
- Add delay before enabling TCXO to manage part shortage
- Corrected non-random Sigfox channel upon startup
- Corrected wrong Sigfox sequence number when there is an overrun and the module reboots
- Wrong GPS position for GPGGA NMEA frame and add retries when starting up the GPS
- Take the checksum into account when parsing GPS frames
- Missing IRQ when there is simultaneous Sigfox transmission and a movement
- New library RF version 6.3.4
- Corrected a bug on Sigfox certification function in FCC mode
- Added TD1205P module
- Added Td_HallEffect module
- Up AT___PERSIST_SIZE to 220 bytes
- Added sigfox channel managment error
- Corrected of spectral quality in EZR FCC configuration
- Add generic Sigfox test mode
- Add CW test mode
- Add macro channel bitmask
- Macro channels Harmonization according to Sigfox requirement.
- Library certified by SIGFOX
- Corrected a bug that may create an irregular ramp down duration
- Corrected a bug that may not set LAN frequency after a Sigfox transmission
- Corrected a bug that may disable GPIO interrupts after a Sigfox transmission
- This version is a major update of TD RF Module SDK.
- This version is a major update of TD RF Module SDK.
- Corrected a bug that may crash the device after 21285 Sigfox transmissions
- Corrected drift in voltage measurement
- Split link time configuration into multiple files
- Added a link-time Flash layout mechanism
- Added stream support
- Added long long support
- Added support for TD1508 (FCC)
- Added support for reference design (both ETSI and FCC)
- This release is a minor update of TD RF Module SDK.
- Corrected a problem causing loss of SIGFOX sequence number after un upgrade from previous SDKs
- This release is a major update of TD RF Module SDK.
- Added the CAPSENSE module for capacitive touch buttons
- UART module now handles both LEUART and standard UART
- Bidirectional (down-link) communication
- Transparent (use sender's SIGFOX ID) or non-transparent (use proxy's SIGFOX ID) SIGFOX proxy
- Fast LAN mode: once synchronized, transmitter and receiver can exchange data at maximum speed
- New library for managing switches and LEDs
- Increased maximum number of AT extensions to 16
- Now handling the different EFM32 power modes
- Unified the RF and standard GPIO management
- Custom transmit (user callback function to write into FIFO) and receive (user callback function to read from FIFO and stop RX)
- Changed the TD LAN windowed listen period to variable up to 6.7 s instead of fixed 1 s, using the
LAN_PERIODandLAN_ADDRESS_SIZEconfiguration parameters
- Corresponds to UDM v2.3
- Now uses the UBlox 7 raw format instead of NMEA by default
- No longer use Sensor switch monitoring for accelerometer interrupts, have the driver handle it directly for efficiency's sake
- Added click monitoring
- Added power mode usage
- Added GPS autonomous computation handling
- Added ephemeris management
- Handles UART overflow gracefully
- Corrected a timing problem on first frame detected with new base station software upgrade (already corrected in v4.1.0)
- Do not set encoded voltage length if no length pointer provided to
TD_SENSOR_EncodeLocalVoltage()orTD_SENSOR_EncodeLocalTemperature()
- Skipped first meaningless accelerometer data values in callback
- Fixed a bug in AT$AR= (read accelerometer register)
- Initialized the first byte in Sensor position data frame
- Fixed non-volatile accelerometer IRQ flag
- This release is a hotfix of the TD RF Module SDK. Please upgrade all firmwares generated with the SDK 4.0.0 to SDK 4.1.0 as it contains an important fix for compatibility with the SIGFOX network
- Changed the definition of
T1S
- Added the function
TD_RTC_SignedTimeDiff()
- Changed the TD LAN windowed listen period to variable up to 6.7 s instead of fixed 1 s, using the
LAN_PERIODandLAN_ADDRESS_SIZEconfiguration parameters
- Corrected a timing problem on first frame detected with new base station software upgrade
- This release is a major update of TD RF Module SDK.
- Supports the TD1204 products with GPS and 3D accelerometer functions
- Supports modules with SIGFOX ID >= 0x10000 (still retaining compatibility with smaller 16 bit IDs)
- Now supports SIGFOX protocol V1 by default
- Battery level monitoring (with IRQs) available
- Optional printf int64 support
- Stdlib atoll support
- Added watchdog module
- Added the
AT COREmodule which implements basic "system" AT command - Added the
SPImodule to manage sharing of the SPI bus (multiple peripherals on the same SPI bus) - Added a link-time
OPTIONmechanism to customize the behavior and/or limits of binary-only objects/libraries - Added a fully configurable
TRAPsystem to handle System/User code faults - Added system dumps debugging tools
- Added a retransmission profile system
- Added a custom BootEvent
- Added queue handling for message transmission
- Added a forward option (optional gateway)
- Extension of the Device and Gateway APIs
- Extension of the set of Sensor Events
- First release
- First release
- Upon startup, if a parser extension module has no persistent data stored, its store function will be called immediately to fix it
- Correction on numeric parameter read in AT command (function AT_atoll) on value with leading spaces characters eg. "
123": the first digit was incorrectly dropped and result set to 23
- Corrections on "user variables" handling
- Modification of behavior in the IRQ handling. List of I/O that actually trigged interrupt (mask) must no longer be read by
GPIO_IntGet()but is directly passed to the to Hook callback registered for I/O interrupt handling
- A fully deterministic, guaranted main loop processing (including the
TD_USER_Loopfunction) can be trigged by calling theTD_WakeMainLoop()function, all others systems (while(flags) processing) must be removed.TD_WakeMainLoop()must be used in user interrupt handlers
- Major correction on low level function to allow calls in all possible context (background task, IRQs), with all special RTC cases handled
- Know limitation : a call to
TD_RTC_Delay()while in IRQ handling will result in an active wait (not energy efficient). However, calling a wait function likeTD_RTC_Delay()in IRQ context is a bad practice
- Adding a Timer is now possible in IRQ context
- Major rewrite of the SCHEDULER processing to remove some race, full strengthening on
TD_SCHEDULER_AppendIrq(),TD_SCHEDULER_Append(),TD_SCHEDULER_Remove()from anywhere in the user code, in any context
- atoi now handles correctly signed value
- Bulletproof handling of RF chip mode (sleep/Idle/Receive/Transmit) transitions
- Major rewrite of LAN functions, it is heavily recommended to not mix devices with a
libtdrflibrary older than v4.0.0 - Better error handling and reporting
- Extension of the bootloader to provide customization parameters: LED status pin location, optional update blink indication, RF channel selection, etc.
- First public release
New functionality contained in the TD RF Module SDK 3.0.0 include:
- The IDE is now based on the Eclipse ?Juno? SR2 release.
- The compilation tools are now based on GCC 4.5.1.
- Support for CMSIS v2.0 (Cortex Microcontroller Software Interface Standard), including DSPLib