Defines | Functions | Variables
Embedded Flash Service

Defines

#define EFC   EFC0
#define GPNVM_NUM_MAX   3
#define IFLASH_ADDR   IFLASH0_ADDR
#define IFLASH_LOCK_REGION_SIZE   IFLASH0_LOCK_REGION_SIZE
#define IFLASH_PAGE_SIZE   IFLASH0_PAGE_SIZE

Functions

static void compute_address (Efc *p_efc, uint16_t us_page, uint16_t us_offset, uint32_t *pul_addr)
 Compute the address of a flash by the given page and offset.
static void compute_lock_range (uint32_t ul_start, uint32_t ul_end, uint32_t *pul_actual_start, uint32_t *pul_actual_end)
 Compute the lock range associated with the given address range.
uint32_t flash_clear_gpnvm (uint32_t ul_gpnvm)
 Clear the given GPNVM bit.
uint32_t flash_enable_security_bit (void)
 Set security bit.
uint32_t flash_erase_all (uint32_t ul_address)
 Erase the entire flash.
uint32_t flash_get_descriptor (uint32_t ul_address, uint32_t *pul_flash_descriptor, uint32_t ul_size)
 Get flash descriptor.
uint32_t flash_get_page_count (const uint32_t *pul_flash_descriptor)
 Get flash total page count for the specified bank.
uint32_t flash_get_page_count_per_region (const uint32_t *pul_flash_descriptor)
 Get flash page count per region (plane) for the specified bank.
uint32_t flash_get_region_count (const uint32_t *pul_flash_descriptor)
 Get flash region (plane) count for the specified bank.
uint32_t flash_get_wait_state (uint32_t ul_address)
 Get flash wait state.
uint32_t flash_init (uint32_t ul_mode, uint32_t ul_fws)
 Initialize the flash service.
uint32_t flash_is_gpnvm_set (uint32_t ul_gpnvm)
 Check if the given GPNVM bit is set or not.
uint32_t flash_is_locked (uint32_t ul_start, uint32_t ul_end)
 Get the number of locked regions inside the given address range.
uint32_t flash_is_security_bit_enabled (void)
 Check if the security bit is set or not.
uint32_t flash_lock (uint32_t ul_start, uint32_t ul_end, uint32_t *pul_actual_start, uint32_t *pul_actual_end)
 Lock all the regions in the given address range. The actual lock range is reported through two output parameters.
uint32_t flash_read_unique_id (uint32_t *pul_data, uint32_t ul_size)
 Read the flash unique ID.
uint32_t flash_set_gpnvm (uint32_t ul_gpnvm)
 Set the given GPNVM bit.
uint32_t flash_set_wait_state (uint32_t ul_address, uint32_t ul_fws)
 Set flash wait state.
uint32_t flash_set_wait_state_adaptively (uint32_t ul_address)
 Set flash wait state.
uint32_t flash_unlock (uint32_t ul_start, uint32_t ul_end, uint32_t *pul_actual_start, uint32_t *pul_actual_end)
 Unlock all the regions in the given address range. The actual unlock range is reported through two output parameters.
uint32_t flash_write (uint32_t ul_address, const void *p_buffer, uint32_t ul_size, uint32_t ul_erase_flag)
 Write a data buffer on flash.
static void translate_address (Efc **pp_efc, uint32_t ul_addr, uint16_t *pus_page, uint16_t *pus_offset)
 Translate the given flash address to page and offset values.

Variables

static uint32_t gs_ul_page_buffer [IFLASH_PAGE_SIZE/sizeof(uint32_t)]

Detailed Description

The Embedded Flash service provides functions for internal flash operations.


Define Documentation

#define EFC   EFC0

Definition at line 83 of file flash_efc.cpp.

#define GPNVM_NUM_MAX   3

Definition at line 85 of file flash_efc.cpp.

#define IFLASH_ADDR   IFLASH0_ADDR

Definition at line 87 of file flash_efc.cpp.

#define IFLASH_LOCK_REGION_SIZE   IFLASH0_LOCK_REGION_SIZE

Definition at line 91 of file flash_efc.cpp.

#define IFLASH_PAGE_SIZE   IFLASH0_PAGE_SIZE

Definition at line 89 of file flash_efc.cpp.


Function Documentation

static void compute_address ( Efc *  p_efc,
uint16_t  us_page,
uint16_t  us_offset,
uint32_t *  pul_addr 
) [static]

Compute the address of a flash by the given page and offset.

Parameters:
p_efcPointer to an EFC instance.
us_pagePage number.
us_offsetByte offset inside page.
pul_addrComputed address (optional).

Definition at line 145 of file flash_efc.cpp.

static void compute_lock_range ( uint32_t  ul_start,
uint32_t  ul_end,
uint32_t *  pul_actual_start,
uint32_t *  pul_actual_end 
) [static]

Compute the lock range associated with the given address range.

Parameters:
ul_startStart address of lock range.
ul_endEnd address of lock range.
pul_actual_startActual start address of lock range.
pul_actual_endActual end address of lock range.

Definition at line 179 of file flash_efc.cpp.

uint32_t flash_clear_gpnvm ( uint32_t  ul_gpnvm)

Clear the given GPNVM bit.

Parameters:
ul_gpnvmGPNVM bit index.
Returns:
0 if successful; otherwise returns an error code.

Definition at line 747 of file flash_efc.cpp.

uint32_t flash_enable_security_bit ( void  )

Set security bit.

Returns:
0 if successful; otherwise returns an error code.

Definition at line 797 of file flash_efc.cpp.

uint32_t flash_erase_all ( uint32_t  ul_address)

Erase the entire flash.

Note:
Only the flash bank including ul_address will be erased. If there are two flash banks, we need to call this function twice with each bank start address.
Parameters:
ul_addressFlash bank start address.
Returns:
0 if successful; otherwise returns an error code.

Definition at line 371 of file flash_efc.cpp.

uint32_t flash_get_descriptor ( uint32_t  ul_address,
uint32_t *  pul_flash_descriptor,
uint32_t  ul_size 
)

Get flash descriptor.

Parameters:
ul_addressFlash bank start address.
pul_flash_descriptorPointer to a data buffer to store flash descriptor.
ul_sizeData buffer size in DWORD.
Returns:
The actual descriptor length.

Definition at line 288 of file flash_efc.cpp.

uint32_t flash_get_page_count ( const uint32_t *  pul_flash_descriptor)

Get flash total page count for the specified bank.

Note:
The flash descriptor must be fetched from flash_get_descriptor function first.
Parameters:
pul_flash_descriptorPointer to a flash descriptor.
Returns:
The flash total page count.

Definition at line 325 of file flash_efc.cpp.

uint32_t flash_get_page_count_per_region ( const uint32_t *  pul_flash_descriptor)

Get flash page count per region (plane) for the specified bank.

Note:
The flash descriptor must be fetched from flash_get_descriptor function first.
Parameters:
pul_flash_descriptorPointer to a flash descriptor.
Returns:
The flash page count per region (plane).

Definition at line 340 of file flash_efc.cpp.

uint32_t flash_get_region_count ( const uint32_t *  pul_flash_descriptor)

Get flash region (plane) count for the specified bank.

Note:
The flash descriptor must be fetched from flash_get_descriptor function first.
Parameters:
pul_flash_descriptorPointer to a flash descriptor.
Returns:
The flash region (plane) count.

Definition at line 355 of file flash_efc.cpp.

uint32_t flash_get_wait_state ( uint32_t  ul_address)

Get flash wait state.

Parameters:
ul_addressFlash bank start address.
Returns:
The number of wait states in cycle (no shift).

Definition at line 271 of file flash_efc.cpp.

uint32_t flash_init ( uint32_t  ul_mode,
uint32_t  ul_fws 
)

Initialize the flash service.

Parameters:
ul_modeFLASH_ACCESS_MODE_128 or FLASH_ACCESS_MODE_64.
ul_fwsThe number of wait states in cycle (no shift).
Returns:
0 if successful; otherwise returns an error code.

Definition at line 205 of file flash_efc.cpp.

uint32_t flash_is_gpnvm_set ( uint32_t  ul_gpnvm)

Check if the given GPNVM bit is set or not.

Parameters:
ul_gpnvmGPNVM bit index.
Return values:
1If the given GPNVM bit is currently set.
0If the given GPNVM bit is currently cleared.

Definition at line 772 of file flash_efc.cpp.

uint32_t flash_is_locked ( uint32_t  ul_start,
uint32_t  ul_end 
)

Get the number of locked regions inside the given address range.

Parameters:
ul_startStart address of range
ul_endEnd address of range.
Returns:
The number of locked regions inside the given address range.

Definition at line 662 of file flash_efc.cpp.

uint32_t flash_is_security_bit_enabled ( void  )

Check if the security bit is set or not.

Return values:
1If the security bit is currently set.
0If the security bit is currently cleared.

Definition at line 808 of file flash_efc.cpp.

uint32_t flash_lock ( uint32_t  ul_start,
uint32_t  ul_end,
uint32_t *  pul_actual_start,
uint32_t *  pul_actual_end 
)

Lock all the regions in the given address range. The actual lock range is reported through two output parameters.

Parameters:
ul_startStart address of lock range.
ul_endEnd address of lock range.
pul_actual_startStart address of the actual lock range (optional).
pul_actual_endEnd address of the actual lock range (optional).
Returns:
0 if successful, otherwise returns an error code.

Definition at line 569 of file flash_efc.cpp.

uint32_t flash_read_unique_id ( uint32_t *  pul_data,
uint32_t  ul_size 
)

Read the flash unique ID.

Parameters:
pul_dataPointer to a data buffer to store 128-bit unique ID.
ul_sizeData buffer size in DWORD.
Returns:
0 if successful; otherwise returns an error code.

Definition at line 821 of file flash_efc.cpp.

uint32_t flash_set_gpnvm ( uint32_t  ul_gpnvm)

Set the given GPNVM bit.

Parameters:
ul_gpnvmGPNVM bit index.
Returns:
0 if successful; otherwise returns an error code.

Definition at line 723 of file flash_efc.cpp.

uint32_t flash_set_wait_state ( uint32_t  ul_address,
uint32_t  ul_fws 
)

Set flash wait state.

Parameters:
ul_addressFlash bank start address.
ul_fwsThe number of wait states in cycle (no shift).
Returns:
0 if successful; otherwise returns an error code.

Definition at line 224 of file flash_efc.cpp.

uint32_t flash_set_wait_state_adaptively ( uint32_t  ul_address)

Set flash wait state.

Parameters:
ul_addressFlash bank start address.
ul_fwsThe number of wait states in cycle (no shift).
Returns:
0 if successful; otherwise returns an error code.

Definition at line 242 of file flash_efc.cpp.

uint32_t flash_unlock ( uint32_t  ul_start,
uint32_t  ul_end,
uint32_t *  pul_actual_start,
uint32_t *  pul_actual_end 
)

Unlock all the regions in the given address range. The actual unlock range is reported through two output parameters.

Parameters:
ul_startStart address of unlock range.
ul_endEnd address of unlock range.
pul_actual_startStart address of the actual unlock range (optional).
pul_actual_endEnd address of the actual unlock range (optional).
Returns:
0 if successful, otherwise returns an error code.

Definition at line 618 of file flash_efc.cpp.

uint32_t flash_write ( uint32_t  ul_address,
const void *  p_buffer,
uint32_t  ul_size,
uint32_t  ul_erase_flag 
)

Write a data buffer on flash.

Note:
This function works in polling mode, and thus only returns when the data has been effectively written.
For dual bank flash, this function doesn't support cross write from bank 0 to bank 1. In this case, flash_write must be called twice (ie for each bank).
Parameters:
ul_addressWrite address.
p_bufferData buffer.
ul_sizeSize of data buffer in bytes.
ul_erase_flagFlag to set if erase first.
Returns:
0 if successful, otherwise returns an error code.

Definition at line 482 of file flash_efc.cpp.

static void translate_address ( Efc **  pp_efc,
uint32_t  ul_addr,
uint16_t *  pus_page,
uint16_t *  pus_offset 
) [static]

Translate the given flash address to page and offset values.

Note:
pus_page and pus_offset must not be null in order to store the corresponding values.
Parameters:
pp_efcPointer to an EFC pointer.
ul_addrAddress to translate.
pus_pageThe first page accessed.
pus_offsetByte offset in the first page.

Definition at line 106 of file flash_efc.cpp.


Variable Documentation

uint32_t gs_ul_page_buffer[IFLASH_PAGE_SIZE/sizeof(uint32_t)] [static]

Definition at line 94 of file flash_efc.cpp.



lizi_arduino
Author(s): RoboTiCan
autogenerated on Wed Aug 26 2015 12:24:23