Microchip® Advanced Software Framework

flashcdw.h File Reference

FLASHCDW driver for AVR32 UC3.

Copyright (c) 2009-2018 Microchip Technology Inc. and its subsidiaries.

#include <avr32/io.h>
#include <stddef.h>
#include "compiler.h"

Macros

#define AVR32_FLASHCDW_REGIONS
 Number of flash regions defined by the FLASHCDW. More...
 

Functions

Flash Properties
unsigned int flashcdw_get_flash_size (void)
 Gets the size of the whole flash array. More...
 
unsigned int flashcdw_get_page_count (void)
 Gets the total number of pages in the flash array. More...
 
unsigned int flashcdw_get_page_count_per_region (void)
 Gets the number of pages in each flash region. More...
 
unsigned int flashcdw_get_page_region (int page_number)
 Gets the region number of a page. More...
 
unsigned int flashcdw_get_region_first_page_number (unsigned int region)
 Gets the number of the first page of a region. More...
 
FLASHCDW Command Control
unsigned int flashcdw_get_command (void)
 Gets the last issued FLASHCDW command. More...
 
unsigned int flashcdw_get_page_number (void)
 Gets the current FLASHCDW page number. More...
 
void flashcdw_issue_command (unsigned int command, int page_number)
 Issues a FLASHCDW command. More...
 
FLASHCDW Global Commands
void flashcdw_no_operation (void)
 Issues a No Operation command to the FLASHCDW. More...
 
void flashcdw_erase_all (void)
 Issues an Erase All command to the FLASHCDW. More...
 
FLASHCDW Protection Mechanisms
bool flashcdw_is_security_bit_active (void)
 Tells whether the Security bit is active. More...
 
void flashcdw_activate_security_bit (void)
 Activates the Security bit. More...
 
unsigned int flashcdw_get_bootloader_protected_size (void)
 Gets the bootloader protected size. More...
 
unsigned int flashcdw_set_bootloader_protected_size (unsigned int bootprot_size)
 Sets the bootloader protected size. More...
 
bool flashcdw_is_external_privileged_fetch_locked (void)
 Tells whether external privileged fetch is locked. More...
 
void flashcdw_lock_external_privileged_fetch (bool lock)
 Locks or unlocks external privileged fetch. More...
 
bool flashcdw_is_jtag_user_protection_enabled (void)
 Tells whether the jtag user protection is enabled. More...
 
void flashcdw_enable_jtag_user_protection (void)
 Enable the jtag user protection feature (i.e. program (set to "0") the UPROT bit) More...
 
void flashcdw_disable_jtag_user_protection (void)
 Disable the jtag user protection feature (i.e. erase (set to "1") the UPROT bit) More...
 
bool flashcdw_is_secure_state_enabled (void)
 Tells whether the Secure State is enabled. More...
 
bool flashcdw_is_secure_state_debug_enabled (void)
 Tells whether the Secure State debug is enabled. More...
 
void flashcdw_enable_secure_state_no_debug (void)
 Enable the Secure State with the Secure State debug disabled. More...
 
void flashcdw_enable_secure_state_with_debug (void)
 Enable the Secure State with the Secure State debug enabled. More...
 
bool flashcdw_is_page_region_locked (int page_number)
 Tells whether the region of a page is locked. More...
 
bool flashcdw_is_region_locked (unsigned int region)
 Tells whether a region is locked. More...
 
void flashcdw_lock_page_region (int page_number, bool lock)
 Locks or unlocks the region of a page. More...
 
void flashcdw_lock_region (unsigned int region, bool lock)
 Locks or unlocks a region. More...
 
void flashcdw_lock_all_regions (bool lock)
 Locks or unlocks all regions. More...
 
Access to General-Purpose Fuses
bool flashcdw_read_gp_fuse_bit (unsigned int gp_fuse_bit)
 Reads a general-purpose fuse bit. More...
 
uint64_t flashcdw_read_gp_fuse_bitfield (unsigned int pos, unsigned int width)
 Reads a general-purpose fuse bit-field. More...
 
uint8_t flashcdw_read_gp_fuse_byte (unsigned int gp_fuse_byte)
 Reads a general-purpose fuse byte. More...
 
uint64_t flashcdw_read_all_gp_fuses (void)
 Reads all general-purpose fuses. More...
 
bool flashcdw_erase_gp_fuse_bit (unsigned int gp_fuse_bit, bool check)
 Erases a general-purpose fuse bit. More...
 
bool flashcdw_erase_gp_fuse_bitfield (unsigned int pos, unsigned int width, bool check)
 Erases a general-purpose fuse bit-field. More...
 
bool flashcdw_erase_gp_fuse_byte (unsigned int gp_fuse_byte, bool check)
 Erases a general-purpose fuse byte. More...
 
bool flashcdw_erase_all_gp_fuses (bool check)
 Erases all general-purpose fuses. More...
 
void flashcdw_write_gp_fuse_bit (unsigned int gp_fuse_bit, bool value)
 Writes a general-purpose fuse bit. More...
 
void flashcdw_write_gp_fuse_bitfield (unsigned int pos, unsigned int width, uint64_t value)
 Writes a general-purpose fuse bit-field. More...
 
void flashcdw_write_gp_fuse_byte (unsigned int gp_fuse_byte, uint8_t value)
 Writes a general-purpose fuse byte. More...
 
void flashcdw_write_all_gp_fuses (uint64_t value)
 Writes all general-purpose fuses. More...
 
void flashcdw_set_gp_fuse_bit (unsigned int gp_fuse_bit, bool value)
 Sets a general-purpose fuse bit with the appropriate erase and write operations. More...
 
void flashcdw_set_gp_fuse_bitfield (unsigned int pos, unsigned int width, uint64_t value)
 Sets a general-purpose fuse bit-field with the appropriate erase and write operations. More...
 
void flashcdw_set_gp_fuse_byte (unsigned int gp_fuse_byte, uint8_t value)
 Sets a general-purpose fuse byte with the appropriate erase and write operations. More...
 
void flashcdw_set_all_gp_fuses (uint64_t value)
 Sets all general-purpose fuses with the appropriate erase and write operations. More...
 

FLASHCDW Control

#define flash_set_bus_freq(cpu_f_hz)   flashcdw_set_flash_waitstate_and_readmode(cpu_f_hz)
 Alias on the flashcdw_set_flash_waitstate_and_readmode() function. More...
 
unsigned int flashcdw_get_wait_state (void)
 Gets the number of wait states of flash read accesses. More...
 
void flashcdw_set_wait_state (unsigned int wait_state)
 Sets the number of wait states of flash read accesses. More...
 
void flashcdw_set_flash_waitstate_and_readmode (unsigned long cpu_f_hz)
 Depending on the CPU frequency, set the wait states of flash read accesses and enable or disable the High speed read mode. More...
 
bool flashcdw_is_ready_int_enabled (void)
 Tells whether the Flash Ready interrupt is enabled. More...
 
void flashcdw_enable_ready_int (bool enable)
 Enables or disables the Flash Ready interrupt. More...
 
bool flashcdw_is_lock_error_int_enabled (void)
 Tells whether the Lock Error interrupt is enabled. More...
 
void flashcdw_enable_lock_error_int (bool enable)
 Enables or disables the Lock Error interrupt. More...
 
bool flashcdw_is_prog_error_int_enabled (void)
 Tells whether the Programming Error interrupt is enabled. More...
 
void flashcdw_enable_prog_error_int (bool enable)
 Enables or disables the Programming Error interrupt. More...
 

FLASHCDW Status

void(*volatile flashcdw_wait_until_ready )(void)
 Pointer to the function used by the driver when it needs to wait until the FLASHCDW is ready to run a new command. More...
 
bool flashcdw_is_ready (void)
 Tells whether the FLASHCDW is ready to run a new command. More...
 
void flashcdw_default_wait_until_ready (void)
 Waits actively until the FLASHCDW is ready to run a new command. More...
 
bool flashcdw_is_lock_error (void)
 Tells whether a Lock Error has occurred during the last function called that issued one or more FLASHCDW commands. More...
 
bool flashcdw_is_programming_error (void)
 Tells whether a Programming Error has occurred during the last function called that issued one or more FLASHCDW commands. More...
 
bool flashcdw_is_high_speed_enabled (void)
 Tells whether the High-speed read mode is enabled. More...
 

Access to Flash Pages

#define flashcdw_memset(dst, src, src_width, nbytes, erase)   TPASTE2(flashcdw_memset, src_width)((dst), (src), (nbytes), (erase))
 Copies nbytes bytes to the flash destination pointed to by dst from the repeated src big-endian source pattern. More...
 
void flashcdw_clear_page_buffer (void)
 Clears the page buffer. More...
 
bool flashcdw_is_page_erased (void)
 Tells whether the page to which the last Quick Page Read or Quick Page Read User Page command was applied was erased. More...
 
bool flashcdw_quick_page_read (int page_number)
 Applies the Quick Page Read command to a page. More...
 
bool flashcdw_erase_page (int page_number, bool check)
 Erases a page. More...
 
bool flashcdw_erase_all_pages (bool check)
 Erases all pages within the flash array. More...
 
void flashcdw_write_page (int page_number)
 Writes a page from the page buffer. More...
 
bool flashcdw_quick_user_page_read (void)
 Issues a Quick Page Read User Page command to the FLASHCDW. More...
 
bool flashcdw_erase_user_page (bool check)
 Erases the User page. More...
 
void flashcdw_write_user_page (void)
 Writes the User page from the page buffer. More...
 
volatile void * flashcdw_memset8 (volatile void *dst, uint8_t src, size_t nbytes, bool erase)
 Copies nbytes bytes to the flash destination pointed to by dst from the repeated src source byte. More...
 
volatile void * flashcdw_memset16 (volatile void *dst, uint16_t src, size_t nbytes, bool erase)
 Copies nbytes bytes to the flash destination pointed to by dst from the repeated src big-endian source half-word. More...
 
volatile void * flashcdw_memset32 (volatile void *dst, uint32_t src, size_t nbytes, bool erase)
 Copies nbytes bytes to the flash destination pointed to by dst from the repeated src big-endian source word. More...
 
volatile void * flashcdw_memset64 (volatile void *dst, uint64_t src, size_t nbytes, bool erase)
 Copies nbytes bytes to the flash destination pointed to by dst from the repeated src big-endian source double-word. More...
 
volatile void * flashcdw_memcpy (volatile void *dst, const void *src, size_t nbytes, bool erase)
 Copies nbytes bytes to the flash destination pointed to by dst from the source pointed to by src. More...