Arrow / Mbed OS DAPLink Reset
Embed: (wiki syntax)

« Back to documentation index

FMC Exported Functions

FMC Exported Functions
[FMC Driver]

Functions

__STATIC_INLINE uint32_t FMC_ReadCID (void)
 Read company ID.
__STATIC_INLINE uint32_t FMC_ReadPID (void)
 Read product ID.
__STATIC_INLINE uint32_t FMC_ReadUID (uint8_t u8Index)
 Read Unique ID.
__STATIC_INLINE uint32_t FMC_ReadUCID (uint32_t u32Index)
 To read UCID.
__STATIC_INLINE void FMC_SetVectorPageAddr (uint32_t u32PageAddr)
 Set vector mapping address.
__STATIC_INLINE uint32_t FMC_GetVECMAP (void)
 Get current vector mapping address.
void FMC_Close (void)
 Disable FMC ISP function.
int32_t FMC_Erase (uint32_t u32PageAddr)
 Execute FMC_ISPCMD_PAGE_ERASE command to erase a flash page.
int32_t FMC_Erase_SPROM (void)
 Execute FMC_ISPCMD_PAGE_ERASE command to erase SPROM.
int32_t FMC_Erase_Block (uint32_t u32BlockAddr)
 Execute FMC_ISPCMD_BLOCK_ERASE command to erase a flash block.
int32_t FMC_Erase_Bank (uint32_t u32BankAddr)
 Execute FMC_ISPCMD_BANK_ERASE command to erase a flash block.
int32_t FMC_GetBootSource (void)
 Get the current boot source.
void FMC_Open (void)
 Enable FMC ISP function.
uint32_t FMC_Read (uint32_t u32Addr)
 Execute FMC_ISPCMD_READ command to read a word from flash.
int32_t FMC_Read_64 (uint32_t u32addr, uint32_t *u32data0, uint32_t *u32data1)
 Execute FMC_ISPCMD_READ_64 command to read a double-word from flash.
uint32_t FMC_ReadDataFlashBaseAddr (void)
 Get the base address of Data Flash if enabled.
void FMC_SetBootSource (int32_t i32BootSrc)
 Set boot source from LDROM or APROM after next software reset.
void FMC_Write (uint32_t u32Addr, uint32_t u32Data)
 Execute ISP FMC_ISPCMD_PROGRAM to program a word to flash.
int32_t FMC_Write8Bytes (uint32_t u32addr, uint32_t u32data0, uint32_t u32data1)
 Execute ISP FMC_ISPCMD_PROGRAM_64 to program a double-word to flash.
int32_t FMC_WriteMultiple (uint32_t u32Addr, uint32_t pu32Buf[], uint32_t u32Len)
 Program Multi-Word data into specified address of flash.
int32_t FMC_Write_OTP (uint32_t otp_num, uint32_t low_word, uint32_t high_word)
 Program a 64-bits data to the specified OTP.
int32_t FMC_Read_OTP (uint32_t otp_num, uint32_t *low_word, uint32_t *high_word)
 Read the 64-bits data from the specified OTP.
int32_t FMC_Lock_OTP (uint32_t otp_num)
 Lock the specified OTP.
int32_t FMC_Is_OTP_Locked (uint32_t otp_num)
 Check the OTP is locked or not.
int32_t FMC_ReadConfig (uint32_t u32Config[], uint32_t u32Count)
 Execute FMC_ISPCMD_READ command to read User Configuration.
int32_t FMC_WriteConfig (uint32_t u32Config[], uint32_t u32Count)
 Execute ISP commands to erase then write User Configuration.
uint32_t FMC_GetChkSum (uint32_t u32addr, uint32_t u32count)
 Run CRC32 checksum calculation and get result.
uint32_t FMC_CheckAllOne (uint32_t u32addr, uint32_t u32count)
 Run flash all one verification and get result.
int32_t FMC_SetSPKey (uint32_t key[3], uint32_t kpmax, uint32_t kemax, const int32_t lock_CONFIG, const int32_t lock_SPROM)
 Setup security key.
int32_t FMC_CompareSPKey (uint32_t key[3])
 Execute security key comparison.

Function Documentation

uint32_t FMC_CheckAllOne ( uint32_t  u32addr,
uint32_t  u32count 
)

Run flash all one verification and get result.

Parameters:
[in]u32addrStarting flash address. It must be a page aligned address.
[in]u32countByte count of flash to be calculated. It must be multiple of 512 bytes.
Return values:
READ_ALLONE_YESThe contents of verified flash area are 0xFFFFFFFF.
READ_ALLONE_NOTSome contents of verified flash area are not 0xFFFFFFFF.
READ_ALLONE_CMD_FAILUnexpected error occurred.

Definition at line 644 of file m480_fmc.c.

void FMC_Close ( void   )

Disable FMC ISP function.

Returns:
None

Definition at line 54 of file m480_fmc.c.

int32_t FMC_CompareSPKey ( uint32_t  key[3] )

Execute security key comparison.

Parameters:
[in]keyKey 0~2 to be compared.
Return values:
0Key matched.
-1Forbidden. Times of key comparison mismatch reach the maximum count.
-2Key mismatched.
-3No security key lock. Key comparison is not required.

Definition at line 763 of file m480_fmc.c.

int32_t FMC_Erase ( uint32_t  u32PageAddr )

Execute FMC_ISPCMD_PAGE_ERASE command to erase a flash page.

The page size is 4096 bytes.

Parameters:
[in]u32PageAddrAddress of the flash page to be erased. It must be a 4096 bytes aligned address.
Returns:
ISP page erase success or not.
Return values:
0Success
-1Erase failed

Definition at line 68 of file m480_fmc.c.

int32_t FMC_Erase_Bank ( uint32_t  u32BankAddr )

Execute FMC_ISPCMD_BANK_ERASE command to erase a flash block.

Parameters:
[in]u32BankAddrBase address of the flash bank to be erased.
Returns:
ISP page erase success or not.
Return values:
0Success
-1Erase failed

Definition at line 149 of file m480_fmc.c.

int32_t FMC_Erase_Block ( uint32_t  u32BlockAddr )

Execute FMC_ISPCMD_BLOCK_ERASE command to erase a flash block.

The block size is 4 pages.

Parameters:
[in]u32BlockAddrAddress of the flash block to be erased. It must be a 4 pages aligned address.
Returns:
ISP page erase success or not.
Return values:
0Success
-1Erase failed

Definition at line 125 of file m480_fmc.c.

int32_t FMC_Erase_SPROM ( void   )

Execute FMC_ISPCMD_PAGE_ERASE command to erase SPROM.

The page size is 4096 bytes.

Returns:
SPROM page erase success or not.
Return values:
0Success
-1Erase failed

Definition at line 99 of file m480_fmc.c.

int32_t FMC_GetBootSource ( void   )

Get the current boot source.

Returns:
The current boot source.
Return values:
0Is boot from APROM.
1Is boot from LDROM.

Definition at line 172 of file m480_fmc.c.

uint32_t FMC_GetChkSum ( uint32_t  u32addr,
uint32_t  u32count 
)

Run CRC32 checksum calculation and get result.

Parameters:
[in]u32addrStarting flash address. It must be a page aligned address.
[in]u32countByte count of flash to be calculated. It must be multiple of 512 bytes.
Returns:
Success or not.
Return values:
0Success.
0xFFFFFFFFInvalid parameter.

Definition at line 609 of file m480_fmc.c.

__STATIC_INLINE uint32_t FMC_GetVECMAP ( void   )

Get current vector mapping address.

Parameters:
None
Returns:
The current vector mapping address.

To get VECMAP value which is the page address for remapping to vector page (0x0).

Note:
VECMAP only valid when new IAP function is enabled. (CBS = 10'b or 00'b)

Definition at line 161 of file m480_fmc.h.

int32_t FMC_Is_OTP_Locked ( uint32_t  otp_num )

Check the OTP is locked or not.

Parameters:
[in]otp_numThe OTP number.
Return values:
1OTP is locked.
0OTP is not locked.
-1Failed to read OTP lock bits.
-2Invalid OTP number.

Definition at line 529 of file m480_fmc.c.

int32_t FMC_Lock_OTP ( uint32_t  otp_num )

Lock the specified OTP.

Parameters:
[in]otp_numThe OTP number.
Return values:
0Success
-1Failed to write OTP lock bits.
-2Invalid OTP number.

Definition at line 496 of file m480_fmc.c.

void FMC_Open ( void   )

Enable FMC ISP function.

Returns:
None

Definition at line 188 of file m480_fmc.c.

uint32_t FMC_Read ( uint32_t  u32Addr )

Execute FMC_ISPCMD_READ command to read a word from flash.

Parameters:
[in]u32AddrAddress of the flash location to be read. It must be a word aligned address.
Returns:
The word data read from specified flash address.

Definition at line 200 of file m480_fmc.c.

int32_t FMC_Read_64 ( uint32_t  u32addr,
uint32_t *  u32data0,
uint32_t *  u32data1 
)

Execute FMC_ISPCMD_READ_64 command to read a double-word from flash.

Parameters:
[in]u32addrAddress of the flash location to be read. It must be a double-word aligned address.
[out]u32data0Place holder of word 0 read from flash address u32addr.
[out]u32data1Place holder of word 0 read from flash address u32addr+4.
Returns:
0 Success
-1 Failed

Definition at line 221 of file m480_fmc.c.

int32_t FMC_Read_OTP ( uint32_t  otp_num,
uint32_t *  low_word,
uint32_t *  high_word 
)

Read the 64-bits data from the specified OTP.

Parameters:
[in]otp_numThe OTP number.
[in]low_wordLow word of the 64-bits data.
[in]high_wordLow word of the 64-bits data.
Return values:
0Success
-1Read failed.
-2Invalid OTP number.

Definition at line 461 of file m480_fmc.c.

__STATIC_INLINE uint32_t FMC_ReadCID ( void   )

Read company ID.

Parameters:
None
Returns:
The company ID (32-bit)

The company ID of Nuvoton is fixed to be 0xDA

Definition at line 172 of file m480_fmc.h.

int32_t FMC_ReadConfig ( uint32_t  u32Config[],
uint32_t  u32Count 
)

Execute FMC_ISPCMD_READ command to read User Configuration.

Parameters:
[out]u32ConfigA two-word array. u32Config[0] holds CONFIG0, while u32Config[1] holds CONFIG1.
[in]u32CountAvailable word count in u32Config.
Returns:
Success or not.
Return values:
0Success.
-1Invalid parameter.

Definition at line 566 of file m480_fmc.c.

uint32_t FMC_ReadDataFlashBaseAddr ( void   )

Get the base address of Data Flash if enabled.

Return values:
Thebase address of Data Flash

Definition at line 247 of file m480_fmc.c.

__STATIC_INLINE uint32_t FMC_ReadPID ( void   )

Read product ID.

Parameters:
None
Returns:
The product ID (32-bit)

This function is used to read product ID.

Definition at line 192 of file m480_fmc.h.

__STATIC_INLINE uint32_t FMC_ReadUCID ( uint32_t  u32Index )

To read UCID.

Parameters:
[in]u32IndexIndex of the UCID to read. u32Index must be 0, 1, 2, or 3.
Returns:
The UCID of specified index

This function is used to read unique chip ID (UCID).

Definition at line 233 of file m480_fmc.h.

__STATIC_INLINE uint32_t FMC_ReadUID ( uint8_t  u8Index )

Read Unique ID.

Parameters:
[in]u8IndexUID index. 0 = UID[31:0], 1 = UID[63:32], 2 = UID[95:64]
Returns:
The 32-bit unique ID data of specified UID index.

To read out 96-bit Unique ID.

Definition at line 212 of file m480_fmc.h.

void FMC_SetBootSource ( int32_t  i32BootSrc )

Set boot source from LDROM or APROM after next software reset.

Parameters:
[in]i32BootSrc1: Boot from LDROM 0: Boot from APROM
Returns:
None

This function is used to switch APROM boot or LDROM boot. User need to call FMC_SetBootSource to select boot source first, then use CPU reset or System Reset Request to reset system.

Definition at line 262 of file m480_fmc.c.

int32_t FMC_SetSPKey ( uint32_t  key[3],
uint32_t  kpmax,
uint32_t  kemax,
const int32_t  lock_CONFIG,
const int32_t  lock_SPROM 
)

Setup security key.

Parameters:
[in]keyKey 0~2 to be setup.
[in]kpmaxMaximum unmatched power-on counting number.
[in]kemaxMaximum unmatched counting number.
[in]lock_CONFIG1: Security key lock CONFIG to write-protect. 0: Don't lock CONFIG.
[in]lock_SPROM1: Security key lock SPROM to write-protect. 0: Don't lock SPROM.
Return values:
0Success.
-1Key is locked. Cannot overwrite the current key.
-2Failed to erase flash.
-3Failed to program key.
-4Key lock function failed.
-5CONFIG lock function failed.
-6SPROM lock function failed.
-7KPMAX function failed.
-8KEMAX function failed.

Definition at line 692 of file m480_fmc.c.

__STATIC_INLINE void FMC_SetVectorPageAddr ( uint32_t  u32PageAddr )

Set vector mapping address.

Parameters:
[in]u32PageAddrThe page address to remap to address 0x0. The address must be page alignment.
Returns:
To set VECMAP to remap specified page address to 0x0.

This function is used to set VECMAP to map specified page to vector page (0x0).

Note:
VECMAP only valid when new IAP function is enabled. (CBS = 10'b or 00'b)

Definition at line 255 of file m480_fmc.h.

void FMC_Write ( uint32_t  u32Addr,
uint32_t  u32Data 
)

Execute ISP FMC_ISPCMD_PROGRAM to program a word to flash.

Parameters:
[in]u32AddrAddress of the flash location to be programmed. It must be a word aligned address.
[in]u32DataThe word data to be programmed.
Returns:
None

Definition at line 278 of file m480_fmc.c.

int32_t FMC_Write8Bytes ( uint32_t  u32addr,
uint32_t  u32data0,
uint32_t  u32data1 
)

Execute ISP FMC_ISPCMD_PROGRAM_64 to program a double-word to flash.

Parameters:
[in]u32addrAddress of the flash location to be programmed. It must be a double-word aligned address.
[in]u32data0The word data to be programmed to flash address u32addr.
[in]u32data1The word data to be programmed to flash address u32addr+4.
Returns:
0 Success
-1 Failed

Definition at line 297 of file m480_fmc.c.

int32_t FMC_Write_OTP ( uint32_t  otp_num,
uint32_t  low_word,
uint32_t  high_word 
)

Program a 64-bits data to the specified OTP.

Parameters:
[in]otp_numThe OTP number.
[in]low_wordLow word of the 64-bits data.
[in]high_wordLow word of the 64-bits data.
Return values:
0Success
-1Program failed.
-2Invalid OTP number.

Definition at line 413 of file m480_fmc.c.

int32_t FMC_WriteConfig ( uint32_t  u32Config[],
uint32_t  u32Count 
)

Execute ISP commands to erase then write User Configuration.

Parameters:
[in]u32ConfigA two-word array. u32Config[0] holds CONFIG0, while u32Config[1] holds CONFIG1.
[in]u32CountAlways be 2 in this BSP.
Returns:
Success or not.
Return values:
0Success.
-1Invalid parameter.

Definition at line 590 of file m480_fmc.c.

int32_t FMC_WriteMultiple ( uint32_t  u32Addr,
uint32_t  pu32Buf[],
uint32_t  u32Len 
)

Program Multi-Word data into specified address of flash.

Parameters:
[in]u32AddrStart flash address in APROM where the data chunk to be programmed into. This address must be 8-bytes aligned to flash address.
[in]pu32BufBuffer that carry the data chunk.
[in]u32LenLength of the data chunk in bytes.
Return values:
>=0Number of data bytes were programmed.
Returns:
-1 Invalid address.

Definition at line 326 of file m480_fmc.c.