Skip to content

Commit

Permalink
6.2.4 delivery for SDK 2.16.100 RFP final release
Browse files Browse the repository at this point in the history
  • Loading branch information
McuxCIBot authored and niconxp committed Sep 25, 2024
1 parent b38a480 commit fd8d2bc
Show file tree
Hide file tree
Showing 16 changed files with 3,064 additions and 2,674 deletions.
114 changes: 89 additions & 25 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,91 @@
#### 6.2.4: KW45/K32W1x/MCXW71/RX61x SDK 2.16.100

This release does not contain the changes from 6.2.3 release.

This release contains changes from 6.2.2 release.
Experimental Features only:
- Power down on application power domain : Some tests have shown some failure. Power consumption higher than Deep Sleep.
=> This feature is not fully supported in this release
- XTAL32K less board with FRO32K support : Some additional stress tests are under progress.
- FRO32K notifications callback is for debug only and shall not be used for production. User shall not execute long processing (such as PRINTF) as it is executed in ISR context.
Main Change:
- armgcc support for Cmake sdk2 support and VS code integration

Minor changes:
- [NBU]
- Optimize some critical sections on nbu firmware
- [Platform]
- Optimize ``PLATFORM_RemoteActiveReq()`` execution time.

#### 6.2.3: KW47 EAR1.0

Initial Connectivity Framework enablement for KW47 EAR1.0 support.

New features: OpenNBU feature : nbu_ble project is available and modify and build
Supported features:
- Deep sleep mode
Unsuported features:
- Power down mode
- FRO32K support (XTAL32K less boards)

Main changes:
- [NBU]
- LPTMR2 available and TimerManager initialization with Compile Macro: ``gPlatformUseLptmr_d``
- NBU can now have access to GPIOD
- SW RNG and SW SecLib ported to NBU (Software implementation only)
- [RNG]
- Obsoleted API removed : ``FWK_RNG_DEPRECATED_API``
- RNG can be built without SecLib for NBU, using ``gRngUseSecLib_d`` in fwk_config.h
- Some API updates:
- ``RNG_IsReseedneeded()`` renamed to ``RNG_IsReseedNeeded``,
- ``RNG_TriggerReseed()`` renamed to ``RNG_NotifyReseedNeeded()``,
- ``RNG_SetSeed()`` and ``RNG_SetExternalSeed()`` return status code.
- Optimized Linear Congruential modulus computation to reduce cycle count.

Minor changes:
- [NVM]
- Optimize ``NvIsRecordErased()`` procedure for faster garbage collection
- MISRA fix : Remove externs and weaks from NVM module - Make RNG and timer manager dependencies conditional
- [Platform]
- Allow the debugger to wakeup the KW47/MCXW72 target

#### 6.2.2: KW45/K32W1 MR6 SDK 2.16.000

##### Major changes
Experimental Features only:
- Power down on application power domain : Some tests have shown some failure. Power consumption higher than Deep Sleep.
=> This feature is not fully supported in this release
- XTAL32K less board with FRO32K support : Some additional stress tests are under progress.
- FRO32K notifications callback is for debug only and shall not be used for production. User shall not execute long processing (such as PRINTF) as it is executed in ISR context.

##### Changes
- [Board] Support for freedom board FRDM-MCX W7X
- [HWparams]
- Support for location of HWParameters and Application Factory Data IFR in IFR1.
- [RNG]: API updates
- New APIs RNG_SetSeed(), RNG_SetExternalSeed(), RNG_TriggerReseed(), RNG_IsReseedneeded() to manage seed on both core :
- When needed RNG_TriggerReseed() will be called and change the return status of RNG_IsReseedneeded(), the user will have to choose when calling RNG_SetSeed() or RNG_SetExternalSeed() in his application typically Idle
- [NVS] Wear statistics counters added
- Support for location of HWParameters and Application Factory Data IFR in IFR1
- Default is still to use HWparams in Flash to keep backward compatibility
- [RNG]: API updates:
- New APIS RNG_IsReseedneeded(), RNG_SetSeed() to provide See to PRNG on NBU/App core - See BluetoothLEHost_ProcessIdleTask() in app_conn.c
- New APIs RNG_SetExternalSeed() : User can provide external seed. Typically used on NBU firmrware for App core to set a seed to RNG.
RNG_TriggerReseed() : Not required on App core. Used on NBU only.
- [NVS] Wear statistics counters added - Fix nvs_file_stat() function
- [NVM] fix Nv_Shutdown() API
- [SecLib] New feature AES MMO supported for Zigbee

#### 6.2.2: RW61x RFP4
- [OTA]
- Add support for RW61x OTA with remap.
- Required modifications to prevent direct access to flash logical addresses when remap is active.
- Image trailers expected at different offset with remap enabled (see gPlatformMcuBootUseRemap_d in fwk_config.h)
- fixed image state assessment procedure when in RunCandidate.
#### 6.2.2: RW61x RFP4 SDK 2.16.000

- [Platform] Support Zigbee stack
- [OTA] Add support for RW61x OTA with remap feature.
- Required modifications to prevent direct access to flash logical addresses when remap is active.
- Image trailers expected at different offset with remap enabled (see gPlatformMcuBootUseRemap_d in fwk_config.h)
- fixed image state assessment procedure when in RunCandidate.
- [NVS] Wear statistics counters added
- [SecLib] New feature AES MMO supported for Zigbee
- [Misra] various fixes

#### 6.2.1: KW45/K32W1 MR5 SDK 2.15.000

Experimental Features only:
- Power down on application power domain : Some tests have shown some failure. This feature is not fully supported in this release
- XTAL32K less board with FRO32K support : Some additional stress tests are under progress. Timing variation of the timebase are beeing analysed
- XTAL32K less board with FRO32K support : Some additional stress tests are under progress. Timing variation of the timebase are being analyzed

##### Major changes
- [RNG]: API updates
Expand All @@ -37,11 +101,11 @@ Experimental Features only:
- Rename the framework platform folder from kw45_k32w1 to connected_mcu to support other platform from the same family
- fwk_platform_intflash
- Moved from fwk_platform files to the new fwk_platform_intflash files the internal flash dependant API
- [NBU]
- BOARD_LL_32MHz_WAKEUP_ADVANCE_HSLOT changed from 2 to 3 by default
- BOARD_RADIO_DOMAIN_WAKE_UP_DELAY changed from 0x10 to 0x0F
- [gcc linker]
- Exclude k32w1_nbu_ble_15_4_dyn.bin from .data section
- [NBU]
- BOARD_LL_32MHz_WAKEUP_ADVANCE_HSLOT changed from 2 to 3 by default
- BOARD_RADIO_DOMAIN_WAKE_UP_DELAY changed from 0x10 to 0x0F
- [gcc linker]
- Exclude k32w1_nbu_ble_15_4_dyn.bin from .data section

###### Minor Changes
- [Platform]
Expand Down Expand Up @@ -119,7 +183,7 @@ Experimental Features only:
- New PLATFORM_EnableEccFaultsAPI_d compile flag: Enable APIs for interception of ECC Fault in bus fault handler
- New gInterceptEccBusFaults_d compile flag: Provide FaultRecovery() demo code for bus fault handler to Intercept bus fault from Flash Ecc error
- [LOC]
- Incorrect behavior for set_dtest_page (DqTEST11 overriden)
- Incorrect behavior for set_dtest_page (DqTEST11 overridden)
- Fix SW1 button wake able on Localization board
- Fix yellow led not properly initialized
- Format localization pin_mux.c/h files
Expand All @@ -133,7 +197,7 @@ Experimental Features only:
- [OTA]
- Prevent bus fault in case of ECC error when reading back OTA_CFR update status (disable by default)
- [SecLib]
- Shared mutex for RNG and SecLib as they share same hardware ressource
- Shared mutex for RNG and SecLib as they share same hardware resource
- [Key storage]
- Fix to ignore the garbage at the end of buffers
- Detect when buffers are too small in KS_AddKey() functions
Expand All @@ -156,7 +220,7 @@ Experimental Features only:
- Flag is used to indicate NBU that Application domain goes to power down mode. Keep this flag to 0 if only Deep sleep is supported
- This flag will be set to 1 if Application domain goes to power down mode
- Re-introduce PWR_AllowDeviceToSleep()/PWR_DisallowDeviceToSleep(), PWR_IsDeviceAllowedToSleep() API
- Implement tick compensation mechanism for idle hook in a dedicated freertos utils file fwk_freertos_utils.[ch], new fnctions: FWK_PreIdleHookTickCompensation() and FWK_PostIdleHookTickCompensation
- Implement tick compensation mechanism for idle hook in a dedicated freertos utils file fwk_freertos_utils.[ch], new functions: FWK_PreIdleHookTickCompensation() and FWK_PostIdleHookTickCompensation
- Rework timestamping on K4W1
- PLATFORM_GetMaxTimeStamp() based on TSTMR
- Rename PLATFORM_GetTimestamp() to PLATFORM_GetTimeStamp()
Expand Down Expand Up @@ -186,11 +250,11 @@ Experimental Features only:
- Support Localization boards, Only BUTTON0 supported
- New compile flag BOARD_LOCALIZATION_REVISION_SUPPORT
- New pin_mux.[ch] files
- Offer the possibility to override CDAC and ISEL 32MHz settings before the initialization of the crystal in bord_platform.h
- Offer the possibility to override CDAC and ISEL 32MHz settings before the initialization of the crystal in board_platform.h
- new BOARD_32MHZ_XTAL_CDAC_VALUE, BOARD_32MHZ_XTAL_ISEL_VALUE
- BOARD_32MHZ_XTAL_TRIM_DEFAULT obsoleted
- [NVM file system]
- Look ahead in pending save queue - Avoid consuming sapce to save outdated record
- Look ahead in pending save queue - Avoid consuming space to save outdated record
- Fix NVM gNvDualImageSupport feature in NvIsRecordCopied
- [Inter Core]
- Change PLATFORM_NbuApiReq() API return parameters granularity from uint32 to uint8
Expand Down Expand Up @@ -240,7 +304,7 @@ Experimental Features only:
- Bug fixes:
- Move PWR LowPower callback to PLATFORM layers
- Fix wrong compensation of SysTicks
- Reinit system clocks when exiting power down mode: BOARD_ExitPowerDownCb(), restaure 96Mhz clock is set before going to low power
- Reinit system clocks when exiting power down mode: BOARD_ExitPowerDownCb(), restore 96MHz clock is set before going to low power
- Call Timermanager lowpower entry exit callbacks from PLATFORM_EnterLowPower()
- Update PLATFORM_ShutdownRadio() function to force NBU for Deep power down mode
- K32W1:
Expand Down Expand Up @@ -358,4 +422,4 @@ Experimental Features only:
- [linker script] update SMU2 shared memory region layout with NBU: increase sqram_btblebuf_size to support 24 connections. Shared memory region moved to the end
- [SecLib] SecLib_DeriveBluetoothSKD() API update to support if EdgeLock key shall be regenerated

#### 6.0.11: KW45/K32W1 PRC3.1
#### 6.0.11: KW45/K32W1 PRC3.1
4 changes: 0 additions & 4 deletions Common/devices/rw61x/gcc/RW61x_flash.ld
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,6 @@ fw_ble_cand_start = fw_ble_act_start + ble_fw_size;
fw_15d5_act_start = fw_ble_cand_start + ble_fw_size;
fw_15d4_cand_start = fw_15d5_act_start + z154_fw_size;

PROVIDE(fw_cpu1 = fw_wifi_act_start);
PROVIDE(fw_cpu2_ble = fw_ble_act_start);
PROVIDE(fw_cpu2_combo = fw_15d5_act_start);

m_app_start = m_boot_flash_conf_sector_end + 1;
m_app_stated_size = (fw_storage_start - m_app_start - m_flash_sector_size);
m_app_end = m_app_start + m_app_stated_size - 1;
Expand Down
16 changes: 14 additions & 2 deletions FSCI/Source/FsciCommands.c
Original file line number Diff line number Diff line change
Expand Up @@ -1119,6 +1119,8 @@ bool_t FSCI_ReadNbuVer(clientPacket_t *pData, uint32_t fsciInterface)

do
{
uint8_t tag_lg;

/* Pointer on NbuInfo structure received from NBU :
* potentially to be released when used */

Expand All @@ -1137,24 +1139,34 @@ bool_t FSCI_ReadNbuVer(clientPacket_t *pData, uint32_t fsciInterface)
FSCI_Error((uint8_t)gFsciOutOfMessages_c, fsciInterface);
break;
}

nbu_info.repo_tag[MAX_TAG_SZ - 1] = '\0';
uint8_t tag_lg = (uint8_t)strlen(&nbu_info.repo_tag[0]);
size = 0;

FLib_MemCpy(&pPkt->structured.payload[0], &nbu_info, 3);
size += 3;

pPkt->structured.payload[size] = MAX_SHA_SZ;
size++;

FLib_MemCpy(&pPkt->structured.payload[size], &nbu_info.repo_digest, MAX_SHA_SZ);
size += MAX_SHA_SZ;

tag_lg = (uint8_t)strlen(&nbu_info.repo_tag[0]);
pPkt->structured.payload[size] = tag_lg;
size++;
if (tag_lg > 0)
{
FLib_MemCpy(&pPkt->structured.payload[size], &nbu_info.repo_tag, tag_lg);
}
size += tag_lg;

FLib_MemCpy(&pPkt->structured.payload[size], &nbu_info.versionBuildNo, 1);
size += 1;

pPkt->structured.header.len = (uint8_t)size;

/* A new buffer was allocated. Fill with aditional information */
/* A new buffer was allocated. Fill with additional information */
pPkt->structured.header.opGroup = gFSCI_CnfOpcodeGroup_c;
pPkt->structured.header.opCode = mFsciGetNbuVersion_c;
FSCI_transmitFormatedPacket(pPkt, fsciInterface);
Expand Down
2 changes: 1 addition & 1 deletion ModuleInfo/ModuleInfo.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
/*! \cond DOXY_SKIP_TAG */
#define gFwkVerMajor_c 6
#define gFwkVerMinor_c 2
#define gFwkVerPatch_c 2
#define gFwkVerPatch_c 4
#define gFwkBuildNo_c 0
#define gFwkModuleId_c 0xA3
/*! \endcond */
Expand Down
9 changes: 5 additions & 4 deletions SecLib/SecLib.c
Original file line number Diff line number Diff line change
Expand Up @@ -861,7 +861,8 @@ uint32_t AES_128_CBC_Decrypt_And_Depad(
const uint8_t *pInput, uint32_t inputLen, uint8_t *pInitVector, const uint8_t *pKey, uint8_t *pOutput)
{
uint32_t newLen = inputLen;
#if (defined(FSL_FEATURE_SOC_LTC_COUNT) && (FSL_FEATURE_SOC_LTC_COUNT > 0))
#if (defined(FSL_FEATURE_SOC_LTC_COUNT) && (FSL_FEATURE_SOC_LTC_COUNT > 0)) && (defined(LTC_KEY_REGISTER_READABLE)) && \
(LTC_KEY_REGISTER_READABLE == 1)
SECLIB_MUTEX_LOCK();
(void)LTC_AES_DecryptCbc(LTC0, pInput, pOutput, inputLen, pInitVector, pKey, AES_BLOCK_SIZE, kLTC_DecryptKey);
SECLIB_MUTEX_UNLOCK();
Expand Down Expand Up @@ -2219,7 +2220,7 @@ static ecdhPublicKey_t mReversedPublicKey;
static ecdhPrivateKey_t mReversedPrivateKey;
#endif /* mDbgRevertKeys_d */

/* ECDH Sample Data Bluetooth specificaton V5.0 :
/* ECDH Sample Data Bluetooth specification V5.0 :
7.1.2.1 P-256 Data Set 1
Private A: 3f49f6d4 a3c55f38 74c9b3e3 d2103f50 4aff607b eb40b799 5899b8a6 cd3c1abd
Private B: 55188b3d 32f6bb9a 900afcfb eed4e72a 59cb9ac2 f19d7cfb 6b4fdd49 f47fc5fd
Expand Down Expand Up @@ -2258,9 +2259,9 @@ secResultType_t ECDH_P256_GenerateKeys(ecdhPublicKey_t *pOutPublicKey, ecdhPriva
{
#if mDbgRevertKeys_d
if (gSecEcp256Success_c !=
ECP256_GenerateNewKeys(&mReversedPublicKey, &mReversedPrivateKey, pMultiplicationBuffer))
ECP256_GenerateKeyPair(&mReversedPublicKey, &mReversedPrivateKey, pMultiplicationBuffer))
#else /* !mDbgRevertKeys_d */
if (gSecEcp256Success_c != ECP256_GenerateNewKeys(pOutPublicKey, pOutPrivateKey, pMultiplicationBuffer))
if (gSecEcp256Success_c != ECP256_GenerateKeyPair(pOutPublicKey, pOutPrivateKey, pMultiplicationBuffer))
#endif /* mDbgRevertKeys_d */
{
result = gSecError_c;
Expand Down
2 changes: 1 addition & 1 deletion SecLib/SecLib_ecp256.h
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ secEcdsaStatus_t ECDSA_VerifyMessageSignature(const uint8_t pSignature[SEC_ECP2
* \remarks
*
********************************************************************************** */
secEcp256Status_t ECP256_GenerateNewKeys(ecp256Point_t *pOutPublicKey,
secEcp256Status_t ECP256_GenerateKeyPair(ecp256Point_t *pOutPublicKey,
big_int256_t * pOutPrivateKey,
void * pMultiplicationBuffer);

Expand Down
Binary file modified SecLib/lib_crypto_m33.a
Binary file not shown.
Loading

0 comments on commit fd8d2bc

Please sign in to comment.