Table of Contents
Early Samples Migration Guide
Introduction
IMPORTANT: This guide is only applicable to customer who received early samples of MSPM0 and will migrate their existing application to production samples.
The purpose of this document is to highlight:
- Compatibility breaks between MSPM0 SDK version supporting early samples and MSPM0 SDK 1.00.00.xx which supports production samples.
- Considerations when developing on early samples and production samples in the same system.
Customers using early samples are highly encouraged to migrate their applications to a MSPM0 SDK version supporting production samples. MSPM0 SDK support for experimental samples will not be supported long-term.
The section below describes the recommended tool versions which support production samples and provides migration guidelines for applications using DriverLib and SysConfig configuration files.
The guide assumes users are working in a Windows environment. However, the concepts discussed in this guide are also applicable to Linux and MacOS.
Which samples are supported by my current MSPM0 SDK?
- If your MSPM0 SDK has a *_eng* suffix in the version number, the SDK supports early samples.
- If your MSPM0 SDK does not have a *_eng* suffix in the version number, the SDK supports production samples.
How to determine MSPM0 sample versions
You have production samples if:
- You were able to order samples directly from ti.com and didn’t need to contact a TI sales office.
You have early samples if:
- You did not order samples directly from ti.com and to order samples through a TI sales office.
Customers can also determine sample version by reading the VERSION bit fields (31-28) in the DEVICEID Register which is part of Device Factory Constant memory region (Located in address 0x41C40000). If VERSION bit fields is:
- 0x0, then is an early sample device
- 0x1, then is a production sample device
Important Documents
- MSPM0L130x, MSPM0L134x, MSPM0L110x specific
- MSPM0G and MSPM0L Families: Functional Differences With Early Samples. Please request your TI sales office access to this document.
- MSPM0Lx Technical Reference Manual
- MSPM0L134x, MSPM0L130x datasheet
- MSPM0L110x datasheet
- MSPM0G350x,MSPM0G310x,MSPM0G150x,MSPM0G110x, specific
- MSPM0G and MSPM0L Families: Functional Differences With Early Samples. Please request your TI sales office access to this document.
- MSPM0Gx Technical Reference Manual
- MSPM0G350x datasheet
- MSPM0G310x datasheet
- MSPM0G150x datasheet
- MSPM0G110x datasheet
Tools Considerations
The table below lists the MSPM0 production compatible versions for use with production sample
Product | Version |
---|---|
MSPM0 SDK | 1.00 or later |
SysConfig | 1.15.0_2826 or later |
CCS Eclipse | 12.2.0 or later |
CCS Theia | 1.0 or later |
IAR Embedded workbench for ARM | 9.32.1 or later |
Keil MDK-Arm with uVision | 5.38a or later |
Code Composer Studio (CCS)
The following Code Composer Studio versions support production samples for MSPM0 devices:
- Code Composer Studio 12.2.0 or later
- Code Composer Studio Theia 1.0 or later
IMPORTANT: For customers planning to work with early samples and production samples, it is highly recommended to have dedicated CCS installation under a different install path than the default installation path. For example, the CCS installation for production samples can be C:\ti\production
.
IAR Embedded workbench for ARM
IAR Embedded workbench for ARM 9.32 or later supports production samples for MSPM0 devices.
IMPORTANT: For customers planning to work with early samples and production samples, it is highly recommended to have dedicated IAR installation under a different install path than the default installation path. For example, the IAR installation for production samples can be C:\Program Files\IAR Systems\production
. For instructions to select a SysConfig in IAR please refer to Enabling SysConfig in IAR in the SysConfig guide.
Keil MDK-Arm with uVision
For production sample development, Keil MDK-Arm with uVision v5.38a or later, with ARM Clang compiler v6.16 or later is still recommended and users are required to install the latest TexasInstruments.MSPM0L_DFP pack or TexasInstruments.MSPM0G_DFP pack as described in MSPM0 SDK KEIL Quick Start Guide
IMPORTANT: For customers planning to work with early samples and production samples, it is highly recommended to have dedicated Keil installation under a different install path than the default installation path. For example, the Keil installation for production samples can be C:\Keil_v5\production
. For instructions to select a SysConfig version in Keil please refer to Enabling SysConfig in Keil in the SysConfig guide.
DriverLib Changes
This sections summarized the APIs, defines, and enums which have been updated or removed in Driverlib. Customers can reference this section to determine the appropriate action needed to resolve compilation errors during the migration.
Each subsection name below makes reference to the header and/or source file name which are located under <MSP_SDK_REPO_INSTALL_DIR>\source\ti\driverlib
or <MSP_SDK_REPO_INSTALL_DIR>\source\ti\driverlib\m0p\sysctl\mspm0g
.
The following scheme has been used to in the Driverlib sections:
- Text in red indicates the early sample Driverlib API/Enum/Define that is no longer available in MSPM0 SDK 1.00.00.xx
- Bold text is used to identify a renamed or new input argument in an API in MSPM0 SDK 1.00.00.xx
dl_sysctl_mspm0g
Defines
Define Group | Removed | Added | Update related to |
---|---|---|---|
DL_SYSCTL_INTERRUPT | DL_SYSCTL_INTERRUPT_BOR_LEVEL | DL_SYSCTL_INTERRUPT_SRAM_SEC | PMCU_ENH_02 |
DL_SYSCTL_INTERRUPT_FLASH_DED | |||
DL_SYSCTL_INTERRUPT_LFCLK_FAIL |
Enums
Enum Name | Removed | Added | Update related to |
---|---|---|---|
DL_SYSCTL_IIDX | DL_SYSCTL_IIDX_BOR_LEVEL | DL_SYSCTL_IIDX_SRAM_SEC | PMCU_ENH_02 |
DL_SYSCTL_IIDX_FLASH_DED | |||
DL_SYSCTL_IIDX_LFCLK_FAIL |
APIs
Removed
- DL_SYSCTL_setSRAMWriteProtection
- Please refer to the following new API:
- DL_SYSCTL_setSRAMBoundaryAddress
- Please refer to the following new API:
- DL_SYSCTL_getSRAMWriteProtection
- Please refer to the following new API:
- DL_SYSCTL_getSRAMBoundaryAddress
- Please refer to the following new API:
- DL_SYSCTL_useLowerFlashBank
- Current MSPM0G production sample devices don’t support multiple flash banks.
- DL_SYSCTL_useUpperFlashBank
- Current MSPM0G production sample devices don’t support multiple flash banks.
- DL_SYSCTL_setUpperFlashBank
- Current MSPM0G production sample devices don’t support multiple flash banks.
Updated
- DL_SYSCTL_setLFCLKSourceEXLF
- API prototype changed from DL_SYSCTL_setLFCLKSourceEXLF(bool enableMonitor) to DL_SYSCTL_setLFCLKSourceEXLF(void)
dl_sysctl_mspm0l
Defines
Define Group | Removed | Added | Update related to |
---|---|---|---|
DL_SYSCTL_INTERRUPT | DL_SYSCTL_INTERRUPT_BOR_LEVEL | PMCU_ENH_02 |
NOTE: This interrupt is the only “Power Interrupt” for the M0L, so the entire section has been removed. You can no longer powerSysInterrupts or pmcuInterruptPriority for the MSPM0L device
Enums
Enum Name | Removed | Added | Update related to |
---|---|---|---|
DL_SYSCTL_IIDX | DL_SYSCTL_IIDX_BOR_LEVEL | PMCU_ENH_02 |
APIs
Removed
- DL_SYSCTL_setSRAMWriteProtection
- Please refer to the following new API:
- DL_SYSCTL_setSRAMBoundaryAddress
- Please refer to the following new API:
- DL_SYSCTL_getSRAMWriteProtection
- Please refer to the following new API:
- DL_SYSCTL_getSRAMBoundaryAddress
- Please refer to the following new API:
- DL_SYSCTL_useLowerFlashBank
- Current MSPM0L production sample devices don’t support multiple flash banks.
dl_crc
Enums
- Enum DL_CRC_ENDIANESS was renamed to DL_CRC_INPUT_ENDIANESS due to CRC_ENH_01
APIs
Removed
- DL_CRC_saveConfiguration
- Removed due to early sample device bug fix CRC_01
- DL_CRC_restoreConfiguration
- Removed due to early sample device bug fix CRC_01
Updated
- DL_CRC_init
- Updated API to support “output byte swap” configuration
- Production version of the SDK API has new input parameter DL_CRC_init(CRC_Regs *crc, DL_CRC_POLYNOMIAL poly, DL_CRC_BIT bitOrd, DL_CRC_INPUT_ENDIANESS inEndianness, DL_CRC_OUTPUT_BYTESWAP outByteSwap)
- Updated API to support “output byte swap” configuration
dl_dma
Enums
Enum name | From | To | Update related to |
---|---|---|---|
DL_DMA_TRANSFER_MODE | DL_DMA_REPEAT_SINGLE_TRANSFER_MODE | DL_DMA_FULL_CH_REPEAT_SINGLE_TRANSFER_MODE | DMA_ENH_01 and DMA_ENH_02 |
DL_DMA_REPEAT_BLOCK_TRANSFER_MODE | DL_DMA_FULL_CH_REPEAT_BLOCK_TRANSFER_MODE | ||
DL_DMA_EXTENDED_MODE | DL_DMA_FILL_MODE | DL_DMA_FULL_CH_FILL_MODE | |
DL_DMA_TABLE_MODE | DL_DMA_FULL_CH_TABLE_MODE |
Struct
The following struct members were added:
Struct name | Added | Update related to |
---|---|---|
DL_DMA_Config | DL_DMA_TRIGGER_TYPE triggerType | Configure whether the DMA selects an internal or external channel as the DMA trigger. DMA_ENH_06 |
APIs
Updated
- DL_DMA_setTrigger
- Updated API to support simple cascading of DMA channels configuration (DMA_ENH_06).
- Production version of the SDK API has new input parameter DL_DMA_setTrigger(DMA_Regs *dma, uint8_t channelNum, uint8_t trigger, DL_DMA_TRIGGER_TYPE triggerType)
- Updated API to support simple cascading of DMA channels configuration (DMA_ENH_06).
dl_i2c
Enums
Enum Name | Removed | Added | Update related to |
---|---|---|---|
DL_I2C_IIDX | DL_I2C_IIDX_CONTROLLER_CLOCK_TIMEOUT | DL_I2C_IIDX_TIMEOUT_A | I2C_ENH_05 |
DL_I2C_IIDX_TIMEOUT_B |
Defines
Define Group | Removed | Added | Update related to |
---|---|---|---|
DL_I2C_INTERRUPT | DL_I2C_INTERRUPT_CONTROLLER_CLOCK_TIMEOUT | DL_I2C_INTERRUPT_TIMEOUT_A | I2C_ENH_05 |
DL_I2C_INTERRUPT_TIMEOUT_B |
APIs
Removed
- DL_I2C_getClockLowTimeoutCounterPreload
- Please refer to the following new APIs:
- DL_I2C_getTimeoutACount
- DL_I2C_getTimeoutBCount
- Please refer to the following new APIs:
- DL_I2C_setClockLowTimeoutCounterPreload
- Please refer to the following new APIs:
- DL_I2C_setTimeoutACount
- DL_I2C_setTimeoutBCount
- Please refer to the following new APIs:
- DL_I2C_getClockLowTimeoutCounter
- Please refer to the following new API:
- DL_I2C_getCurrentTimeoutACounter
- DL_I2C_getCurrentTimeoutBCounter
- Please refer to the following new API:
dl_mathacl
Enum Name | Removed | Recommendation |
---|---|---|
DL_MATHACL_OP_TYPE | DL_MATHACL_OP_TYPE_ARCTAN | Use DL_MATHACL_OP_TYPE_ARCTAN2 |
DL_MATHACL_OP_TYPE_MPY | Use DL_MATHACL_OP_TYPE_MPY32 |
dl_opa
APIs
Removed
- DL_OPA_isSoftwareBusy
- Bit field BUSY was removed from OPA.STAT register
dl_rtc
APIs
Updated
- DL_RTC_setTemperatureCompensation
- Function prototype changed from DL_RTC_setTemperatureCompensation(RTC_Regs *rtc, DL_RTC_TEMP_CALIBRATION offsetDirection, uint32_t offsetValue) to void DL_RTC_setTemperatureCompensation(RTC_Regs *rtc, DL_RTC_TEMP_CALIBRATION_SIGN offsetDirection, uint32_t offsetValue)
- DL_RTC_TEMP_CALIBRATION_SIGN_DOWN was renamed to DL_RTC_TEMP_CALIBRATION_DOWN1PPM
- DL_RTC_TEMP_CALIBRATION_SIGN_UP was renamed to DL_RTC_TEMP_CALIBRATION_UP1PPM
- Function prototype changed from DL_RTC_setTemperatureCompensation(RTC_Regs *rtc, DL_RTC_TEMP_CALIBRATION offsetDirection, uint32_t offsetValue) to void DL_RTC_setTemperatureCompensation(RTC_Regs *rtc, DL_RTC_TEMP_CALIBRATION_SIGN offsetDirection, uint32_t offsetValue)
dl_spi
Struct
The following struct members were added:
Struct name | Added | Purpose |
---|---|---|
DL_SPI_Config | DL_SPI_DATA_SIZE dataSize | Specify the size of the data transfer |
DL_SPI_CHIP_SELECT chipSelectPin | Specify the pin to use for chip select. Used in Controller or Peripheral modes with Motorola formats. |
Enums
Enum Name | Removed | Added | Update related to |
---|---|---|---|
DL_SPI_PARITY | DL_SPI_PARITY_BIT0_EVEN | DL_SPI_PARITY_EVEN | |
DL_SPI_PARITY_BIT0_ODD | DL_SPI_PARITY_ODD | ||
DL_SPI_PARITY_BIT1_EVEN | |||
DL_SPI_PARITY_BIT1_ODD |
APIs
Removed
- DL_SPI_setControllerChipSelect
- Please refer to the following new API:
- DL_SPI_setChipSelect
- Please refer to the following new API:
- DL_SPI_getControllerChipSelect
- Please refer to the following new API:
- DL_SPI_getChipSelect
- Please refer to the following new API:
Updated
- DL_SPI_setDataSize
- Function prototype changed from DL_SPI_setDataSize(SPI_Regs *spi, uint32_t dataSize) to DL_SPI_setDataSize( SPI_Regs *spi, DL_SPI_DATA_SIZE dataSize)
- DL_SPI_getDataSize
- Function prototype changed from uint32_t DL_SPI_getDataSize(SPI_Regs *spi) to DL_SPI_DATA_SIZE DL_SPI_getDataSize(SPI_Regs *spi)
dl_timera
APIs
Removed
- DL_TimerA_configPipelineUpdate
- Please refer to the following new API:
- DL_TimerA_setCaptCompUpdateMethod
- Please refer to the following new API:
- DL_TimerA_getPipelineUpdateMode
- Please refer to the following new API:
- DL_TimerA_getCaptCompUpdateMethod
- Please refer to the following new API:
- DL_TimerA_setCaptureCompareValuePipeline
- PCC register has been removed in production sample. Capture compare update mode is now configured via DL_TimerA_setCaptCompUpdateMethod and DL_TimerA_setLoadValue
dl_timerg
Defines
Updated
- DL_TIMERG_INTERRUPT_DIR_CHANGE_EVENT renamed to DL_TIMERG_INTERRUPT_DC_EVENT
APIs
Updated
- DL_Timer_setCaptureCompareAction
- actionsMask argument no longer accepts DL_TIMER_CC_DBEXACT or DL_TIMER_CC_DBENACT masks since DBEXACT and DBENACT bitfields in CCACT_01 register have been removed.
Removed
- DL_TimerG_configPipelineUpdate
- Please refer to the following new API:
- DL_TimerG_setCaptCompUpdateMethod
- Please refer to the following new API:
- DL_TimerG_getPipelineUpdateMode
- Please refer to the following new API:
- DL_TimerG_getCaptCompUpdateMethod
- Please refer to the following new API:
- DL_TimerA_setCaptureCompareValuePipeline
- PCC register has been removed in production sample. Capture compare update mode is now configured via DL_TimerG_setCaptCompUpdateMethod and DL_TimerG_setLoadValue
dl_timerh
All DL_TimerH APIs have been removed. Since all TimerH instances in the devices were removed and some TIMG instances were updated to be 32-bit timers with no prescale support. Please refer to the MSPM0G and MSPM0L Families: Functional Differences With Early Samples document for additional updates regarding this device level change.
SysConfig Code Generation/GUI Changes
This section shows the differences in the early sample and production sample versions of SysConfig as it relates to the GUI itself and the resulting code generation. Each row shows a code change that reflects an update to the SDK or a change to SysConfig.
Each section’s changes are described in the DriverLib section of the Migration guide and are linked in the title of the section for reference.
System Modules
DMA
Early SysConfig Settings | Production SysConfig Settings |
---|---|
|
SYSCTL
Early SysConfig Settings | Production SysConfig Settings |
---|---|
Interrupts Removed | |
Interrupts Removed |
Communications
I2C
Early SysConfig Settings | Production SysConfig Settings |
---|---|
|
|
|
SPI
Early SysConfig Settings | Production SysConfig Settings |
---|---|
Data Integrity
CRC
Early SysConfig Settings | Production SysConfig Settings |
---|---|
CRC Init Changes |
CRC Init Changes |
<Application_File>.syscfg comparison
This section highlights the differences between early sample and production sample .syscfg files and how to modify old .syscfg files to be compatible with production samples. Every project contains a .syscfg file that contains all the SysConfig configuration settings that are set via the GUI, and migrating to the latest SDK and SysConfig resulted in changes to certain parameters and functions. Each row reflects a change in the SysConfig GUI/SDK that resulted in a change to parameters. Rather than going through the GUI to make these changes, a user can directly modify this file via text editor to migrate the configuration settings to the latest version.
System Modules
DMA
Early SysConfig Settings | Production SysConfig Settings |
---|---|
SysCtl
Early SysConfig Settings | Production SysConfig Settings |
---|---|
G Device Defines |
Settings Deleted |
L Device Defines |
Settings Deleted |
Communications
I2C
Early SysConfig Settings | Production SysConfig Settings |
---|---|
Data Integrity
CRC
Early SysConfig Settings | Production SysConfig Settings |
---|---|
N/A | Optional. if not wanted, just remove line |