nxp-kw36-Flash配置

nxp-flexnvm_eeprom用例配置8kram

 

flash_security_state_t securityStatus = kFLASH_SecurityStateNotSecure; /* Return protection status */
status_t result; /* Return code from each flash driver function */

/* Init hardware */
BOARD_InitPins();
BOARD_BootClockRUN();
BOARD_InitDebugConsole();

/* Clean up Flash driver Structure*/
memset(&s_flashDriver, 0, sizeof(flash_config_t));

/* print welcome message */
PRINTF("\r\n FlexNVM EEprom Example Start \r\n");

  if (SIM->FCFG2 & SIM_FCFG2_PFLSH_MASK)
    {
        PRINTF("\r\n Current device doesn't support FlexNVM feature \r\n");
        app_finalize();
    }

 /* Setup flash driver structure for device and initialize variables. */
    result = FLASH_Init(&s_flashDriver);
    if (kStatus_FLASH_Success != result)
    {
        error_trap();
    }

    /* Check security status. */
    result = FLASH_GetSecurityState(&s_flashDriver, &securityStatus);
    if (kStatus_FLASH_Success != result)
    {
        error_trap();
    }
    /* Print security status. */
    switch (securityStatus)
    {
        case kFLASH_SecurityStateNotSecure:
            PRINTF("\r\n Flash is UNSECURE!");
            break;
        case kFLASH_SecurityStateBackdoorEnabled:
            PRINTF("\r\n Flash is SECURE, BACKDOOR is ENABLED!");
            break;
        case kFLASH_SecurityStateBackdoorDisabled:
            PRINTF("\r\n Flash is SECURE, BACKDOOR is DISABLED!");
            break;
        default:
            break;
    }
    PRINTF("\r\n");

按照NXP用例先使用FLASH_Init初始化,DFlash-256K,PFlash-256K,EEPROM,32Byte.

 

上图在project->Attributes->C/C++ Build->MCU settings中,这里配置划分了PFLASH和ELEX_NVM已经各种RAM空间,应该类似stm32link文件将来做自检可以用到。

 

这里面如果要把用例配置成EEPROM-8K需要重新配置一下。

在上面的代码后面添加

#define EEPROM_DATA_SET_SIZE_CODE 0x31
#define FLEXNVM_PARTITION_CODE 0x04
#define  EEPROM_DATA_SIZE 0x2000

FLASH_GetProperty(&s_flashDriver, kFLASH_PropertyEepromTotalSize, &eepromTotalSize);
if(EEPROM_DATA_SIZE != eepromTotalSize)
{
       if(kStatus_FLASH_Success != FLASH_EraseAll(&s_flashDriver,FOUR_CHAR_CODE('k', 'f', 'e', 'k')));/* 擦除flash*/
       {
//                擦除失败
        }
}

FLASH_ProgramPartition(&s_flashDriver, kFLASH_PartitionFlexramLoadOptionLoadedWithValidEepromData,
                                            EEPROM_DATA_SET_SIZE_CODE, FLEXNVM_PARTITION_CODE);
NVIC_SystemReset();/*复位*/

这里面0x31(EEPROM_DATA_SET_SIZE_CODE)和0x04(FLEXNVM_PARTITION_CODE )根据参考手册29.4.11.16 Program Partition command章节

FLASH_ProgramPartition函数里面会调用Flash commands此命令在参考手册29.4.9.2 FLASH_ProgramPartition中介绍用到0x80(Program the FlexNVM Partition Code and EEPROM Data Set Size into the data flash IFR. format all EEPROM backup  d ata sectors allocated for EEPROM,initialize the FlexRAM.)

FLASH_EraseAll该函数执行的时候需要看下当前配置情况,如果配置的8KB我们需要的则可以不执行。而查看EEPROM大小可以使用FLASH_GetProperty(&s_flashDriver, kFLASH_PropertyEepromTotalSize, &eepromTotalSize);函数此函数还能查看很多其他内存空间大小。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值