Flash example for s32k116

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Flash example for s32k116

ソリューションへジャンプ
2,090件の閲覧回数
AbhiMR
Contributor II

Hi NXP ,

             In ld file i need to define section as below,

MEMORY
{
/* Flash */
m_interrupts (RX) : ORIGIN = 0x00000000, LENGTH = 0x000000C0
m_flash_config (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000010
m_text (RX) : ORIGIN = 0x00000410, LENGTH = 0x0001F7E0
m_layout1  (RX) : ORIGIN = 0x0001FBF0, LENGTH = 0x00000400
m_layout2  (RX) : ORIGIN = 0x0001FFF0, LENGTH = 0x00000000

}

 

after which I started using flashdriver.c and .h file .

FLASH_DRV_Init()

/* For erase */

ret = FLASH_DRV_EraseSector(&flashSSDConfig, u32Address, BLOCK_SIZE);
DEV_ASSERT(STATUS_SUCCESS == ret);

 

/* Write data which are of 4 bytes minimum */
ret = FLASH_DRV_Program(&flashSSDConfig, u32Address, MAL_MEM_FLASH_SECTOR_SIZE, u16Data);
DEV_ASSERT(STATUS_SUCCESS == ret);

/* read */

memcpy(store  , linkarray, size );

 

In my code it will work only few time and not consistent with memcpy.

what will be the way to write properly , what are all we need to do config intially ?

Do we have any read function other than memcpy ?

 

Could you please help with better example for this usage ?

0 件の賞賛
返信
1 解決策
1,966件の閲覧回数
danielmartynek
NXP TechSupport
NXP TechSupport

Hello @AbhiMR,

If you generated the SDK code in S32DS 3.4 with SDK 4.0.3 installed, you would get this structure

/* Flash user configuration 0 */
const flash_user_config_t Flash_InitConfig0 =
{
.PFlashBase = 0x0U,
.PFlashSize = 0x20000U,
.DFlashBase = 0x10000000U,
.EERAMBase = 0x14000000U,
.CallBack = NULL_CALLBACK
};

in .../board/peripherals_flash_FTFC.c

Not this:

const flash_user_config_t Flash_InitConfig =
{
/*.PFlashBase = 0x0001FBF0U,
.PFlashSize = 0x0001FBF0U,
.DFlashBase = 0x1FFFFC00U,
.EERAMBase = 0x20000000U,
.CallBack = NULL_CALLBACK
*/
.PFlashBase = 0,
.PFlashSize = 0x20000U,
.DFlashBase = 0x0001FFF0U,
.EERAMBase = 0x20000000U,
.CallBack = NULL_CALLBACK
};

 

You need to:

  1. Install S32DS 3.4
  2. Install SDK 4.0.3
  3. Create flash_partitioning_s32k116 from example
  4. Generate the SDK configuration:

     

danielmartynek_1-1734953451248.png

 

Regards,

Daniel

 

 

元の投稿で解決策を見る

0 件の賞賛
返信
5 返答(返信)
2,068件の閲覧回数
danielmartynek
NXP TechSupport
NXP TechSupport

Hi @AbhiMR,

I'm not sure I understand the issue here.

You can refer to the S32K1xx RTD drivers.

There is Ftfc_Mem_InFls_Ip_Read() in Ftfc_Mem_InFls_Ip.c

The flash can be read through a pointer, simply like this:

  for(uint32_t i = 0; i < size; i++){
    read_buffer[i] = *((volatile uint8_t *)(address + i));
  }

Check the memory with the debugger after each write.

 

Regards,

Daniel

0 件の賞賛
返信
2,048件の閲覧回数
AbhiMR
Contributor II
extern const flash_user_config_t Flash_InitConfig0;
/* Flash user configuration 0 */
const flash_user_config_t Flash_InitConfig =
{
/*.PFlashBase = 0x0001FBF0U,
.PFlashSize = 0x0001FBF0U,
.DFlashBase = 0x1FFFFC00U,
.EERAMBase = 0x20000000U,
.CallBack = NULL_CALLBACK
*/
.PFlashBase = 0,
.PFlashSize = 0x20000U,
.DFlashBase = 0x0001FFF0U,
.EERAMBase = 0x20000000U,
.CallBack = NULL_CALLBACK
};
How to configure this? I f I change, erase will fail. Can you please provide me an example I can be able to read write above designed layout. Or how i can customise and use in s32k116 please let me know?

Basically i need to do read, write and earse operation on this
m_layout1 (RX) : ORIGIN = 0x0001FBF0, LENGTH = 0x00000400
m_layout2 (RX) : ORIGIN = 0x0001FFF0, LENGTH = 0x00000000
0 件の賞賛
返信
2,044件の閲覧回数
danielmartynek
NXP TechSupport
NXP TechSupport

Hello @AbhiMR,

Where did you get the Flash_InitConfig and the flashdriver.c and .h files? It does not mach the S32K116 memory map (S32K1xx_Memory_Map.xlsx attached to the Reference Manual).

Please use either the S32DS 3.4 IDE with the SDK drivers, or preferably the S32DS3.5 IDE with the  RTD drivers.

There is a GUI that allows you to configure the structures such as Flash_InitConfig.

 

Regards,

Daniel

0 件の賞賛
返信
2,014件の閲覧回数
AbhiMR
Contributor II

/* * Copyright 2020 NXP * All rights reserved. * * NXP Confidential. This software is owned or controlled by NXP and may only be * used strictly in accordance with the applicable license terms. By expressly * accepting such terms or by downloading, installing, activating and/or otherwise * using the software, you are agreeing that you have read, and that you agree to * comply with and are bound by, such license terms. If you do not agree to be * bound by the applicable license terms, then you may not retain, install, * activate or otherwise use the software. The production use license in * Section 2.3 is expressly granted for this software. */ /* ################################################################### ** Filename : main.c ** Project : flash_partitioning_s32k116 ** Processor : s32k116 ** Abstract : ** Main module. ** This module contains user's application code. ** Settings : ** Contents : ** No public methods ** ** ###################################################################*/ /*! ** @file main.c ** @brief ** Main module. ** This module contains user's application code. */ /*! ** @addtogroup main_module main module documentation ** @{ */ /* MODULE main */ /* Including necessary configuration files. */ #include "sdk_project_config.h" #include "interrupt_manager.h" volatile int exit_code = 0; /* User includes */ /* Declare a FLASH config struct which initialized by FlashInit, and will be used by all flash operations */ flash_ssd_config_t flashSSDConfig; /* Data source for program operation */ #define BUFFER_SIZE 0x100u /* Size of data source */ uint8_t sourceBuffer[BUFFER_SIZE]; /* Function declarations */ void CCIF_Handler(void); /* If target is flash, insert this macro to locate callback function into RAM */ START_FUNCTION_DECLARATION_RAMSECTION void CCIF_Callback(void) END_FUNCTION_DECLARATION_RAMSECTION /*! \brief The main function for the project. \details The startup initialization sequence is the following: * - startup asm routine * - main() */ int main(void) { /* Write your local variable definition here */ status_t ret; /* Store the driver APIs return code */ uint32_t address; uint32_t size; uint32_t failAddr; uint32_t i; flash_callback_t pCallBack; #if (FEATURE_FLS_HAS_PROGRAM_PHRASE_CMD == 1u) #ifndef FLASH_TARGET uint8_t unsecure_key[FTFx_PHRASE_SIZE] = {0xFFu, 0xFFu, 0xFFu, 0xFFu, 0xFEu, 0xFFu, 0xFFu, 0xFFu}; #endif #else /* FEATURE_FLASH_HAS_PROGRAM_LONGWORD_CMD */ uint8_t unsecure_key[FTFx_LONGWORD_SIZE] = {0xFEu, 0xFFu, 0xFFu, 0xFFu}; #endif /* FEATURE_FLS_HAS_PROGRAM_PHRASE_CMD */ /* Write your code here */ /* Initialize and configure clocks * - see clock manager component for details */ CLOCK_SYS_Init(g_clockManConfigsArr, CLOCK_MANAGER_CONFIG_CNT, g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT); CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_AGREEMENT); /* Init source data */ for (i = 0u; i < BUFFER_SIZE; i++) { sourceBuffer[i] = i; } /* Disable cache to ensure that all flash operations will take effect instantly, * this is device dependent */ #ifndef FLASH_TARGET #ifdef S32K11x_SERIES MSCM->OCMDR[0u] |= MSCM_OCMDR_OCM1(0x3u); MSCM->OCMDR[1u] |= MSCM_OCMDR_OCM1(0x3u); #endif /* S32K11x_SERIES */ #endif /* FLASH_TARGET */ /* Install interrupt for Flash Command Complete event */ INT_SYS_InstallHandler(FTFC_IRQn, CCIF_Handler, (isr_t*) 0); INT_SYS_EnableIRQ(FTFC_IRQn); /* Enable global interrupt */ INT_SYS_EnableIRQGlobal(); /* Always initialize the driver before calling other functions */ ret = FLASH_DRV_Init(&Flash_InitConfig0, &flashSSDConfig); DEV_ASSERT(STATUS_SUCCESS == ret); /* Erase a sector in DFlash */ address = flashSSDConfig.DFlashBase; size = FEATURE_FLS_DF_BLOCK_SECTOR_SIZE; ret = FLASH_DRV_EraseSector(&flashSSDConfig, address, size); DEV_ASSERT(STATUS_SUCCESS == ret); /* Verify the erase operation at margin level value of 1, user read */ ret = FLASH_DRV_VerifySection(&flashSSDConfig, address, size / FTFx_PHRASE_SIZE, 1u); DEV_ASSERT(STATUS_SUCCESS == ret); /* Write some data to the erased DFlash sector */ address = flashSSDConfig.DFlashBase; size = BUFFER_SIZE; ret = FLASH_DRV_Program(&flashSSDConfig, address, size, sourceBuffer); DEV_ASSERT(STATUS_SUCCESS == ret); /* Verify the program operation at margin level value of 1, user margin */ ret = FLASH_DRV_ProgramCheck(&flashSSDConfig, address, size, sourceBuffer, &failAddr, 1u); DEV_ASSERT(STATUS_SUCCESS == ret); /* Remove warning for unused variable */ (void)ret; for(;;) { if(exit_code != 0) { break; } } return exit_code; }

 

 

Its hitting Device assert. 

In this I want to explore how to use dflash 

0 件の賞賛
返信
1,967件の閲覧回数
danielmartynek
NXP TechSupport
NXP TechSupport

Hello @AbhiMR,

If you generated the SDK code in S32DS 3.4 with SDK 4.0.3 installed, you would get this structure

/* Flash user configuration 0 */
const flash_user_config_t Flash_InitConfig0 =
{
.PFlashBase = 0x0U,
.PFlashSize = 0x20000U,
.DFlashBase = 0x10000000U,
.EERAMBase = 0x14000000U,
.CallBack = NULL_CALLBACK
};

in .../board/peripherals_flash_FTFC.c

Not this:

const flash_user_config_t Flash_InitConfig =
{
/*.PFlashBase = 0x0001FBF0U,
.PFlashSize = 0x0001FBF0U,
.DFlashBase = 0x1FFFFC00U,
.EERAMBase = 0x20000000U,
.CallBack = NULL_CALLBACK
*/
.PFlashBase = 0,
.PFlashSize = 0x20000U,
.DFlashBase = 0x0001FFF0U,
.EERAMBase = 0x20000000U,
.CallBack = NULL_CALLBACK
};

 

You need to:

  1. Install S32DS 3.4
  2. Install SDK 4.0.3
  3. Create flash_partitioning_s32k116 from example
  4. Generate the SDK configuration:

     

danielmartynek_1-1734953451248.png

 

Regards,

Daniel

 

 

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2014928%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Es32k116%E3%81%AE%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E4%BE%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2014928%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%20NXP%20%2C%3C%2FP%3E%3CP%3Eld%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E3%81%AF%E3%80%81%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E8%A8%98%E6%86%B6%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%2F*%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5*%2F%3CBR%20%2F%3Em_interrupts(RX)%3A%E5%8E%9F%E7%82%B9%3D0x00000000%E3%80%81%E9%95%B7%E3%81%95%3D0x000000C0%3CBR%20%2F%3Em_flash_config(RX)%3A%E5%8E%9F%E7%82%B9%3D0x00000400%E3%80%81%E9%95%B7%E3%81%95%3D0x00000010%3CBR%20%2F%3Em_text(RX)%3A%E5%8E%9F%E7%82%B9%3D0x00000410%E3%80%81%E9%95%B7%E3%81%95%3D0x0001F7E0%3CBR%20%2F%3Em_layout1(RX)%3A%E5%8E%9F%E7%82%B9%3D0x0001FBF0%E3%80%81%E9%95%B7%E3%81%95%3D0x00000400%3CBR%20%2F%3Em_layout2(RX)%3A%E5%8E%9F%E7%82%B9%3D0x0001FFF0%E3%80%81%E9%95%B7%E3%81%95%3D0x00000000%3C%2FP%3E%3CP%3E%7D%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E3%81%9D%E3%81%AE%E5%BE%8C%E3%80%81flashdriver.c%E3%82%92%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%81%BE%E3%81%97%E3%81%9F%E3%81%A8%20.h%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%80%82%3C%2FP%3E%3CP%3EFLASH_DRV_Init()%3C%2FP%3E%3CP%3E%2F*%20%E6%B6%88%E5%8E%BB%E7%94%A8%20*%2F%3C%2FP%3E%3CP%3Eret%20%3D%20FLASH_DRV_EraseSector(%26amp%3BflashSSDConfig%2C%20u32Address%2C%20BLOCK_SIZE)%3B%3CBR%20%2F%3EDEV_ASSERT(STATUS_SUCCESS%20%3D%3D%20ret)%3B%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%2F*%20%E6%9C%80%E5%B0%8F%204%20%E3%83%90%E3%82%A4%E3%83%88%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%80%20*%2F%3CBR%20%2F%3Eret%20%3D%20FLASH_DRV_Program(%26amp%3BflashSSDConfig%2C%20u32Address%2C%20MAL_MEM_FLASH_SECTOR_SIZE%2C%20u16Data)%3B%3CBR%20%2F%3EDEV_ASSERT(STATUS_SUCCESS%20%3D%3D%20ret)%3B%3C%2FP%3E%3CP%3E%2F*%E8%AA%AD%E3%82%80*%2F%3C%2FP%3E%3CP%3Ememcpy(%E3%82%B9%E3%83%88%E3%82%A2%E3%80%81%E3%83%AA%E3%83%B3%E3%82%AF%E9%85%8D%E5%88%97%E3%80%81%E3%82%B5%E3%82%A4%E3%82%BA)%3B%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E7%A7%81%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E3%81%AF%E3%80%81%E3%81%9D%E3%82%8C%E3%81%AF%E3%81%BB%E3%82%93%E3%81%AE%E5%B0%91%E3%81%97%E3%81%AE%E6%99%82%E9%96%93%E3%81%A0%E3%81%91%E5%8B%95%E4%BD%9C%E3%81%97%E3%80%81memcpy%E3%81%A8%E4%B8%80%E8%B2%AB%E6%80%A7%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%3CP%3E%E9%81%A9%E5%88%87%E3%81%AB%E6%9B%B8%E3%81%8F%E6%96%B9%E6%B3%95%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%E3%80%81%E6%9C%80%E5%88%9D%E3%81%AB%E6%A7%8B%E6%88%90%E3%82%92%E8%A1%8C%E3%81%86%E3%81%9F%E3%82%81%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AA%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3CP%3Ememcpy%E4%BB%A5%E5%A4%96%E3%81%AE%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E6%A9%9F%E8%83%BD%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E3%81%93%E3%81%AE%E4%BD%BF%E7%94%A8%E6%B3%95%E3%81%AE%E3%82%88%E3%82%8A%E8%89%AF%E3%81%84%E4%BE%8B%E3%82%92%E6%89%8B%E4%BC%9D%E3%81%A3%E3%81%A6%E3%82%82%E3%82%89%E3%81%88%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2018575%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3As32k116%E3%81%AE%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E4%BE%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2018575%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%20%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F242862%22%20target%3D%22_blank%22%3E%40AbhiMR%3C%2FA%3E%E3%80%81%3C%2FP%3E%0A%3CP%3ES32DS%203.4%20%E3%81%A7%20SDK%20%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%20SDK%204.0.3%20%E3%81%A7%E7%94%9F%E6%88%90%E3%81%97%E3%81%9F%E5%A0%B4%E5%90%88%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E3%81%93%E3%81%AE%E6%A7%8B%E9%80%A0%E3%81%8C%E5%BE%97%E3%82%89%E3%82%8C%E3%81%BE%E3%81%99%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3E%2F*%20Flash%20user%20configuration%200%20*%2F%0Aconst%20flash_user_config_t%20Flash_InitConfig0%20%3D%0A%7B%0A.PFlashBase%20%3D%200x0U%2C%0A.PFlashSize%20%3D%200x20000U%2C%0A.DFlashBase%20%3D%200x10000000U%2C%0A.EERAMBase%20%3D%200x14000000U%2C%0A.CallBack%20%3D%20NULL_CALLBACK%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E...%2Fboard%2Fperipherals_flash_FTFC.c%20%E3%81%A7%3C%2FP%3E%0A%3CP%3E%E3%81%93%E3%82%8C%E3%81%A7%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%3A%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3Econst%20flash_user_config_t%20Flash_InitConfig%20%3D%0A%7B%0A%2F*.PFlashBase%20%3D%200x0001FBF0U%2C%0A.PFlashSize%20%3D%200x0001FBF0U%2C%0A.DFlashBase%20%3D%200x1FFFFC00U%2C%0A.EERAMBase%20%3D%200x20000000U%2C%0A.CallBack%20%3D%20NULL_CALLBACK%0A*%2F%0A.PFlashBase%20%3D%200%2C%0A.PFlashSize%20%3D%200x20000U%2C%0A.DFlashBase%20%3D%200x0001FFF0U%2C%0A.EERAMBase%20%3D%200x20000000U%2C%0A.CallBack%20%3D%20NULL_CALLBACK%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E6%AC%A1%E3%81%AE%E3%81%93%E3%81%A8%E3%82%92%E8%A1%8C%E3%81%86%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3EInstall%20S32DS%203.4%3C%2FLI%3E%0A%3CLI%3ESDK%204.0.3%20%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%3C%2FLI%3E%0A%3CLI%3E%E4%BE%8B%E3%81%8B%E3%82%89flash_partitioning_s32k116%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%3C%2FLI%3E%0A%3CLI%3ESDK%20%E8%A8%AD%E5%AE%9A%E3%82%92%E7%94%9F%E6%88%90%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%0A%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22danielmartynek_1-1734953451248.png%22%20style%3D%22width%3A%20566px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22danielmartynek_1-1734953451248.png%22%20style%3D%22width%3A%20566px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F317071i33790B800D73E016%2Fimage-dimensions%2F566x281%3Fv%3Dv2%22%20width%3D%22566%22%20height%3D%22281%22%20role%3D%22button%22%20title%3D%22danielmartynek_1-1734953451248.png%22%20alt%3D%22danielmartynek_1-1734953451248.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3EDaniel%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2017336%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3As32k116%E3%81%AE%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E4%BE%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2017336%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%2F*%20*%20Copyright%202020%20NXP%20*%20%E7%84%A1%E6%96%AD%E8%A4%87%E5%86%99%E3%83%BB%E8%BB%A2%E8%BC%89%E3%82%92%E7%A6%81%E3%81%98%E3%81%BE%E3%81%99%E3%80%82*%20*%20NXP%E7%A4%BE%E5%A4%96%E7%A7%98%E3%80%82%E3%81%93%E3%81%AE%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AFNXP%E3%81%8C%E6%89%80%E6%9C%89%E3%81%BE%E3%81%9F%E3%81%AF%E7%AE%A1%E7%90%86%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%80%81%E9%81%A9%E7%94%A8%E3%81%95%E3%82%8C%E3%82%8B%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E6%9D%A1%E9%A0%85%E3%81%AB%E5%8E%B3%E5%AF%86%E3%81%AB%E5%BE%93%E3%81%A3%E3%81%A6%E3%81%AE%E3%81%BF%E4%BD%BF%E7%94%A8%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%E3%81%8B%E3%81%8B%E3%82%8B%E6%9D%A1%E4%BB%B6%E3%82%92%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AB%E5%90%8C%E6%84%8F%E3%81%99%E3%82%8B%E3%81%8B%E3%80%81%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%80%81%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%80%81%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E5%8C%96%E3%80%81%E3%81%8A%E3%82%88%E3%81%B3%2F%E3%81%BE%E3%81%9F%E3%81%AF%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AE%E6%96%B9%E6%B3%95%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81%E3%81%8A%E5%AE%A2%E6%A7%98%E3%81%AF%E3%80%81%E3%81%8B%E3%81%8B%E3%82%8B%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E6%9D%A1%E4%BB%B6%E3%82%92%E8%AA%AD%E3%81%BF%E3%80%81%E5%BD%93%E8%A9%B2%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E6%9D%A1%E4%BB%B6%E3%82%92%E9%81%B5%E5%AE%88%E3%81%97%E3%80%81%E3%81%93%E3%82%8C%E3%81%AB%E6%8B%98%E6%9D%9F%E3%81%95%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E5%90%8C%E6%84%8F%E3%81%99%E3%82%8B%E3%82%82%E3%81%AE%E3%81%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E9%81%A9%E7%94%A8%E3%81%95%E3%82%8C%E3%82%8B%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E6%9D%A1%E9%A0%85%E3%81%AB%E6%8B%98%E6%9D%9F%E3%81%95%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E5%90%8C%E6%84%8F%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%92%E4%BF%9D%E6%8C%81%E3%80%81%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%80%81%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E5%8C%96%E3%80%81%E3%81%BE%E3%81%9F%E3%81%AF%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AE%E6%96%B9%E6%B3%95%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82*%20%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%202.3%20%E3%81%AE%E3%83%97%E3%83%AD%E3%83%80%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E4%BD%BF%E7%94%A8%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AF%E3%80%81%E3%81%93%E3%81%AE%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AB%E4%BB%98%E4%B8%8E%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82*%2F%20%2F*%20%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%20**%20Filename%20%3A%20main.c%20**%20Project%20%3A%20flash_partitioning_s32k116%20**%20Processor%20%3A%20s32k116%20**%20Abstract%20%3A%20**%20Main%20module.%20**%20This%20module%20contains%20user's%20application%20code.%20**%20Settings%20%3A%20**%20Contents%20%3A%20**%20No%20public%20methods%20**%20**%20%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23*%2F%20%2F*!**%20main.c%20%40file**%20%40brief%20**%20%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%80%82**%20%E3%81%93%E3%81%AE%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AB%E3%81%AF%E3%80%81%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82*%2F%20%2F*!**%20%40addtogroup%20main_module%20%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AE%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%20**%20%40%7B%20*%2F%20%2F*%20MODULE%20main%20*%2F%20%2F*%20%E5%BF%85%E8%A6%81%E3%81%AA%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%90%AB%E3%81%BF%E3%81%BE%E3%81%99%E3%80%82*%2F%20%23include%20%22sdk_project_config.h%22%20%23include%20%22interrupt_manager.h%22%20%E6%8F%AE%E7%99%BA%E6%80%A7%20int%20exit_code%20%3D%200%3B%2F*%20%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%A4%E3%83%B3%E3%82%AF%E3%83%AB%E3%83%BC%E3%83%89%20*%2F%20%2F*%20FlashInit%20%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%95%E3%82%8C%E3%80%81%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E6%93%8D%E4%BD%9C%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%82%8B%20FLASH%20%E8%A8%AD%E5%AE%9A%E6%A7%8B%E9%80%A0%E4%BD%93%E3%82%92%E5%AE%A3%E8%A8%80%E3%81%97%E3%81%BE%E3%81%99%20*%2F%20flash_ssd_config_t%20flashSSDConfig%3B%2F*%20%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E6%93%8D%E4%BD%9C%E7%94%A8%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BD%E3%83%BC%E3%82%B9%20*%2F%20%23define%20BUFFER_SIZE%200x100u%20%2F*%20%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%20*%2F%20uint8_t%20sourceBuffer%5BBUFFER_SIZE%5D%3B%2F*%20%E9%96%A2%E6%95%B0%E3%81%AE%E5%AE%A3%E8%A8%80%20*%2F%20void%20CCIF_Handler(void)%3B%2F*%20%E3%82%BF%E3%83%BC%E3%82%B2%E3%83%83%E3%83%88%E3%81%8C%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%AE%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81%E3%81%93%E3%81%AE%E3%83%9E%E3%82%AF%E3%83%AD%E3%82%92%E6%8C%BF%E5%85%A5%E3%81%97%E3%81%A6%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E9%96%A2%E6%95%B0%E3%82%92RAM%E3%81%AB%E4%BD%8D%E7%BD%AE%E7%89%B9%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%20*%2F%20START_FUNCTION_DECLARATION_RAMSECTION%20void%20CCIF_Callback(void)%20END_FUNCTION_DECLARATION_RAMSECTION%20%2F*!%5Cbrief%20%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%20main%20%E9%96%A2%E6%95%B0%E3%80%82%5Cdetails%20%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E5%88%9D%E6%9C%9F%E5%8C%96%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9%E3%81%AF%E6%AC%A1%E3%81%AE%E3%81%A8%E3%81%8A%E3%82%8A%E3%81%A7%E3%81%99%3A%20*%20-%20%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%20asm%20%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3%20*%20-%20main()%20*%2F%20int%20main(void)%20%7B%20%2F*%20%E3%81%93%E3%81%93%E3%81%AB%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E5%A4%89%E6%95%B0%E3%81%AE%E5%AE%9A%E7%BE%A9%E3%82%92%E8%A8%98%E5%85%A5%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%20*%2F%20status_t%20ret%3B%20%2F*%20%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%20API%20%E3%81%AE%E3%83%AA%E3%82%BF%E3%83%BC%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%97%E3%81%BE%E3%81%99%20*%2F%20uint32_t%20address%3B%20uint32_t%20size%3B%20uint32_t%20failAddr%3B%20uint32_t%20i%3B%20flash_callback_t%20pCallBack%3B%20%23if%20(FEATURE_FLS_HAS_PROGRAM_PHRASE_CMD%20%3D%3D%201u)%20%23ifndef%20FLASH_TARGET%20uint8_t%20unsecure_key%5BFTFx_PHRASE_SIZE%5D%20%3D%20%7B0xFFu%2C%200xFFu%E3%80%810xFFu%E3%80%810xFFu%E3%80%810xFEu%E3%80%810xFFu%E3%80%810xFFu%E3%80%810xFFu%7D%3B%23endif%20%23else%20%2F*%20FEATURE_FLASH_HAS_PROGRAM_LONGWORD_CMD%20*%2F%20uint8_t%20unsecure_key%5BFTFx_LONGWORD_SIZE%5D%20%3D%20%7B0xFEu%2C%200xFFu%2C%200xFFu%2C%200xFFu%7D%3B%23endif%20%2F*%20FEATURE_FLS_HAS_PROGRAM_PHRASE_CMD%20*%2F%20%2F*%20%E3%81%93%E3%81%93%E3%81%AB%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%20*%2F%20%2F*%20%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%A8%E8%A8%AD%E5%AE%9A%20*%20-%20%E8%A9%B3%E7%B4%B0%E3%81%AF%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%82%92%E5%8F%82%E7%85%A7%20*%2F%20CLOCK_SYS_Init(g_clockManConfigsArr%2C%20CLOCK_MANAGER_CONFIG_CNT%2C%20g_clockManCallbacksArr%2C%20CLOCK_MANAGER_CALLBACK_CNT)%3BCLOCK_SYS_UpdateConfiguration(0U%2C%20CLOCK_MANAGER_POLICY_AGREEMENT)%3B%2F*%20%E3%82%BD%E3%83%BC%E3%82%B9%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96%20*%2F%20for%20(i%20%3D%200u%3B%20i%20%26lt%3B%20BUFFER_SIZE%3B%20i%2B%2B)%20%7B%20sourceBuffer%5Bi%5D%20%3D%20i%3B%20%7D%20%2F*%20%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%82%92%E7%84%A1%E5%8A%B9%E3%81%AB%E3%81%97%E3%81%A6%E3%80%81%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E6%93%8D%E4%BD%9C%E3%81%8C%E5%8D%B3%E5%BA%A7%E3%81%AB%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%AA%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%BE%E3%81%99%E3%80%82*%20%E3%81%93%E3%82%8C%E3%81%AF%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%AB%E4%BE%9D%E5%AD%98%E3%81%97%E3%81%BE%E3%81%99%20*%2F%20%23ifndef%20FLASH_TARGET%20%23ifdef%20S32K11x_SERIES%20MSCM-%26gt%3BOCMDR%5B0u%5D%20%7C%3D%20MSCM_OCMDR_OCM1(0x3u)%3BMSCM-%26gt%3BOCMDR%5B1u%5D%20%7C%3D%20MSCM_OCMDR_OCM1(0x3u)%3B%23endif%20%2F*%20S32K11x_SERIES%20*%2F%20%23endif%20%2F*%20FLASH_TARGET%20*%2F%20%2F*%20%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E5%AE%8C%E4%BA%86%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%20*%2F%20INT_SYS_InstallHandler(FTFC_IRQn%2C%20CCIF_Handler%2C%20(isr_t*)%200)%3BINT_SYS_EnableIRQ(FTFC_IRQn)%3B%2F*%E3%82%A8%E3%83%8D%E3%83%BC%E3%83%96%E3%83%AB%20%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%20*%2F%20INT_SYS_EnableIRQGlobal()%3B%2F*%20%E4%BB%96%E3%81%AE%E9%96%A2%E6%95%B0%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E5%89%8D%E3%81%AB%E3%80%81%E5%B8%B8%E3%81%AB%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%82%92%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%97%E3%81%BE%E3%81%99%20*%2F%20ret%20%3D%20FLASH_DRV_Init(%26amp%3BFlash_InitConfig0%2C%20%26amp%3BflashSSDConfig)%3BDEV_ASSERT(STATUS_SUCCESS%20%3D%3D%20ret)%3B%2F*%20DFlash%E3%81%AE%E3%82%BB%E3%82%AF%E3%82%BF%E3%82%92%E6%B6%88%E5%8E%BB%20*%2F%20address%20%3D%20flashSSDConfig.DFlashBase%3B%E3%82%B5%E3%82%A4%E3%82%BA%3D%20FEATURE_FLS_DF_BLOCK_SECTOR_SIZE%3Bret%20%3D%20FLASH_DRV_EraseSector(%26amp%3BflashSSDConfig%2C%20%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%2C%20%E3%82%B5%E3%82%A4%E3%82%BA)%3BDEV_ASSERT(STATUS_SUCCESS%20%3D%3D%20ret)%3B%2F*%20%E3%83%9E%E3%83%BC%E3%82%B8%E3%83%B3%E3%83%AC%E3%83%99%E3%83%AB%E5%80%A4%201%20%E3%81%A7%E6%B6%88%E5%8E%BB%E6%93%8D%E4%BD%9C%E3%82%92%E6%A4%9C%E8%A8%BC%E3%81%97%E3%80%81%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%8C%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%81%BE%E3%81%99%20*%2F%20ret%20%3D%20FLASH_DRV_VerifySection(%26amp%3BflashSSDConfig%2C%20address%2C%20size%20%2F%20FTFx_PHRASE_SIZE%2C%201u)%3BDEV_ASSERT(STATUS_SUCCESS%20%3D%3D%20ret)%3B%2F*%20%E6%B6%88%E5%8E%BB%E3%81%95%E3%82%8C%E3%81%9FDFlash%E3%82%BB%E3%82%AF%E3%82%BF%E3%81%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%80%20*%2F%20address%20%3D%20flashSSDConfig.DFlashBase%3B%E3%82%B5%E3%82%A4%E3%82%BA%3D%20BUFFER_SIZE%3Bret%20%3D%20FLASH_DRV_Program(%26amp%3BflashSSDConfig%2C%20%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%2C%20%E3%82%B5%E3%82%A4%E3%82%BA%2C%20%E3%82%BD%E3%83%BC%E3%82%B9%E3%83%90%E3%83%83%E3%83%95%E3%82%A1)%3BDEV_ASSERT(STATUS_SUCCESS%20%3D%3D%20ret)%3B%2F*%20%E3%83%9E%E3%83%BC%E3%82%B8%E3%83%B3%E3%83%AC%E3%83%99%E3%83%AB%E5%80%A4%201%E3%80%81%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%9E%E3%83%BC%E3%82%B8%E3%83%B3%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E5%8B%95%E4%BD%9C%E3%82%92%E6%A4%9C%E8%A8%BC%20*%2F%20ret%20%3D%20FLASH_DRV_ProgramCheck(%26amp%3BflashSSDConfig%2C%20address%2C%20size%2C%20sourceBuffer%2C%20%26amp%3BfailAddr%2C%201u)%3BDEV_ASSERT(STATUS_SUCCESS%20%3D%3D%20ret)%3B%2F*%20%E6%9C%AA%E4%BD%BF%E7%94%A8%E3%81%AE%E5%A4%89%E6%95%B0%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E8%AD%A6%E5%91%8A%E3%82%92%E5%89%8A%E9%99%A4%20*%2F%20(void)ret%3Bfor(%3B%3B)%7B%20if(exit_code%20!%3D%200)%20%7B%20break%3B%20%7D%20%7Dexit_code%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%7D%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CP%3E%E3%81%9D%E3%81%AE%E3%83%92%E3%83%83%E3%83%88%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%AF%E3%82%A2%E3%82%B5%E3%83%BC%E3%83%88%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E3%81%93%E3%81%93%E3%81%A7%E3%81%AF%E3%80%81dflash%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%E3%82%92%E6%8E%A2%E3%82%8A%E3%81%9F%E3%81%84%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2017240%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3As32k116%E3%81%AE%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E4%BE%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2017240%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%20%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F242862%22%20target%3D%22_blank%22%3E%40AbhiMR%3C%2FA%3E%E3%80%81%3C%2FP%3E%0A%3CP%3EFlash_InitConfig%E3%81%A8flashdriver.c%E3%81%AF%E3%81%A9%E3%81%93%E3%81%A7%E6%89%8B%E3%81%AB%E5%85%A5%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8B%3F%E3%81%A8%20.h%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%80%82S32K116%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%9E%E3%83%83%E3%83%97(%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB%E3%81%AB%E6%B7%BB%E4%BB%98%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8BS32K1xx_Memory_Map.xlsx)%E3%81%AF%E3%83%9E%E3%83%83%E3%82%AF%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%0A%3CP%3ES32DS%203.4%20IDE%20%E3%81%A8%20SDK%20%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%80%81%E3%81%BE%E3%81%9F%E3%81%AF%E3%81%A7%E3%81%8D%E3%82%8C%E3%81%B0%20S32DS3.5%20IDE%20%E3%81%A8%20RTD%20%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%0A%3CP%3EFlash_InitConfig%E3%81%AA%E3%81%A9%E3%81%AE%E6%A7%8B%E9%80%A0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%A7%E3%81%8D%E3%82%8BGUI%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3EDaniel%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2017228%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3As32k116%E3%81%AE%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E4%BE%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2017228%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Eextern%20const%20flash_user_config_t%20Flash_InitConfig0%3B%3CBR%20%2F%3E%2F*%20Flash%20%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E8%A8%AD%E5%AE%9A%200%20*%2F%3CBR%20%2F%3E%E5%AE%9A%E6%95%B0%20flash_user_config_t%20Flash_InitConfig%20%3D%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%2F*.PFlashBase%20%3D%200x0001FBF0U%E3%80%81%3CBR%20%2F%3E.PFlashSize%20%3D%200x0001FBF0U%E3%80%81%3CBR%20%2F%3E.DFlashBase%20%3D%200x1FFFFC00U%E3%80%81%3CBR%20%2F%3E.EERAM%E3%83%90%E3%82%B9%3D%200x20000000U%E3%80%81%3CBR%20%2F%3E.%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%20%3D%20NULL_CALLBACK%3CBR%20%2F%3E*%2F%3CBR%20%2F%3E.PFlashBase%20%3D%200%20%E3%81%AE%E5%A0%B4%E5%90%88%E3%80%81%3CBR%20%2F%3E.PFlashSize%20%3D%200x20000U%E3%80%81%3CBR%20%2F%3E.DFlashBase%20%3D%200x0001FFF0U%E3%80%81%3CBR%20%2F%3E.EERAM%E3%83%90%E3%82%B9%3D%200x20000000U%E3%80%81%3CBR%20%2F%3E.%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%20%3D%20NULL_CALLBACK%3CBR%20%2F%3E%7D%3B%3CBR%20%2F%3E%E3%81%93%E3%82%8C%E3%82%92%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E6%A7%8B%E6%88%90%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%3F%E3%82%82%E3%81%97%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%9F%E3%82%89%E3%80%81%E6%B6%88%E5%8E%BB%E3%81%AF%E5%A4%B1%E6%95%97%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E7%A7%81%E3%81%8C%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%81%95%E3%82%8C%E3%81%9F%E3%83%AC%E3%82%A4%E3%82%A2%E3%82%A6%E3%83%88%E3%81%AE%E4%B8%8A%E3%81%AB%E8%AA%AD%E3%81%BF%E6%9B%B8%E3%81%8D%E3%81%A7%E3%81%8D%E3%82%8B%E4%BE%8B%E3%82%92%E6%95%99%E3%81%88%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%E3%81%BE%E3%81%9F%E3%81%AF%E3%80%81s32k116%E3%81%A7%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E3%81%97%E3%81%A6%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%82%92%E6%95%99%E3%81%88%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AB%E7%A7%81%E3%81%AF%E3%81%93%E3%82%8C%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%80%81%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E3%80%81%E3%81%8A%E3%82%88%E3%81%B3%E8%80%B3%E3%81%AE%E6%93%8D%E4%BD%9C%E3%82%92%E8%A1%8C%E3%81%86%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%3CBR%20%2F%3Em_layout1(RX)%3A%E5%8E%9F%E7%82%B9%3D0x0001FBF0%E3%80%81%E9%95%B7%E3%81%95%3D0x00000400%3CBR%20%2F%3Em_layout2(RX)%3A%E5%8E%9F%E7%82%B9%3D0x0001FFF0%E3%80%81%E9%95%B7%E3%81%95%3D0x00000000%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2015388%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3As32k116%E3%81%AE%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E4%BE%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2015388%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%20%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F242862%22%20target%3D%22_blank%22%3E%40AbhiMR%3C%2FA%3E%E3%80%81%3C%2FP%3E%0A%3CP%3E%E3%81%93%E3%81%93%E3%81%A7%E3%81%AE%E5%95%8F%E9%A1%8C%E3%82%92%E7%90%86%E8%A7%A3%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%81%AF%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%0A%3CP%3ES32K1xx%20RTD%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%82%92%E5%8F%82%E7%85%A7%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSTRONG%3EFtfc_Mem_InFls_Ip.c%3C%2FSTRONG%3E%E3%81%AB%E3%81%AF%3CSTRONG%3EFtfc_Mem_InFls_Ip_Read()%3C%2FSTRONG%3E%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%3C%2FP%3E%0A%3CP%3E%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%AF%E3%80%81%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF%E3%82%92%E4%BB%8B%E3%81%97%E3%81%A6%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3E%20%20for(uint32_t%20i%20%3D%200%3B%20i%20%26lt%3B%20size%3B%20i%2B%2B)%7B%0A%20%20%20%20read_buffer%5Bi%5D%20%3D%20*((volatile%20uint8_t%20*)(address%20%2B%20i))%3B%0A%20%20%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%E5%90%84%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E5%BE%8C%E3%81%AB%E3%83%87%E3%83%90%E3%83%83%E3%82%AC%E3%83%BC%E3%81%A7%E3%83%A1%E3%83%A2%E3%83%AA%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3EDaniel%3C%2FP%3E%3C%2FLINGO-BODY%3E