00001
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 #ifndef _FLASHC_H_
00049 #define _FLASHC_H_
00050
00051 #include <avr32/io.h>
00052 #include <stddef.h>
00053 #include "compiler.h"
00054
00055
00057 #define AVR32_FLASHC_REGIONS (AVR32_FLASHC_FLASH_SIZE /\
00058 (AVR32_FLASHC_PAGES_PR_REGION * AVR32_FLASHC_PAGE_SIZE))
00059
00060
00063
00064
00069 extern unsigned int flashc_get_flash_size(void);
00070
00075 extern unsigned int flashc_get_page_count(void);
00076
00081 extern unsigned int flashc_get_page_count_per_region(void);
00082
00092 extern unsigned int flashc_get_page_region(int page_number);
00093
00100 extern unsigned int flashc_get_region_first_page_number(unsigned int region);
00101
00103
00104
00107
00108
00113 extern unsigned int flashc_get_wait_state(void);
00114
00120 extern void flashc_set_wait_state(unsigned int wait_state);
00121
00126 extern Bool flashc_is_ready_int_enabled(void);
00127
00133 extern void flashc_enable_ready_int(Bool enable);
00134
00139 extern Bool flashc_is_lock_error_int_enabled(void);
00140
00146 extern void flashc_enable_lock_error_int(Bool enable);
00147
00152 extern Bool flashc_is_prog_error_int_enabled(void);
00153
00159 extern void flashc_enable_prog_error_int(Bool enable);
00160
00162
00163
00166
00167
00172 extern Bool flashc_is_ready(void);
00173
00178 extern void flashc_default_wait_until_ready(void);
00179
00184 extern void (*volatile flashc_wait_until_ready)(void);
00185
00192 extern Bool flashc_is_lock_error(void);
00193
00200 extern Bool flashc_is_programming_error(void);
00201
00203
00204
00207
00208
00213 extern unsigned int flashc_get_command(void);
00214
00219 extern unsigned int flashc_get_page_number(void);
00220
00240 extern void flashc_issue_command(unsigned int command, int page_number);
00241
00243
00244
00247
00248
00254 extern void flashc_no_operation(void);
00255
00272 extern void flashc_erase_all(void);
00273
00275
00276
00279
00280
00285 extern Bool flashc_is_security_bit_active(void);
00286
00292 extern void flashc_activate_security_bit(void);
00293
00298 extern unsigned int flashc_get_bootloader_protected_size(void);
00299
00314 extern unsigned int flashc_set_bootloader_protected_size(unsigned int bootprot_size);
00315
00320 extern Bool flashc_is_external_privileged_fetch_locked(void);
00321
00331 extern void flashc_lock_external_privileged_fetch(Bool lock);
00332
00342 extern Bool flashc_is_page_region_locked(int page_number);
00343
00350 extern Bool flashc_is_region_locked(unsigned int region);
00351
00364 extern void flashc_lock_page_region(int page_number, Bool lock);
00365
00374 extern void flashc_lock_region(unsigned int region, Bool lock);
00375
00383 extern void flashc_lock_all_regions(Bool lock);
00384
00386
00387
00390
00391
00402 extern Bool flashc_read_gp_fuse_bit(unsigned int gp_fuse_bit);
00403
00417 extern U64 flashc_read_gp_fuse_bitfield(unsigned int pos, unsigned int width);
00418
00429 extern U8 flashc_read_gp_fuse_byte(unsigned int gp_fuse_byte);
00430
00439 extern U64 flashc_read_all_gp_fuses(void);
00440
00461 extern Bool flashc_erase_gp_fuse_bit(unsigned int gp_fuse_bit, Bool check);
00462
00486 extern Bool flashc_erase_gp_fuse_bitfield(unsigned int pos, unsigned int width, Bool check);
00487
00507 extern Bool flashc_erase_gp_fuse_byte(unsigned int gp_fuse_byte, Bool check);
00508
00527 extern Bool flashc_erase_all_gp_fuses(Bool check);
00528
00546 extern void flashc_write_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value);
00547
00568 extern void flashc_write_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value);
00569
00586 extern void flashc_write_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value);
00587
00603 extern void flashc_write_all_gp_fuses(U64 value);
00604
00621 extern void flashc_set_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value);
00622
00642 extern void flashc_set_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value);
00643
00659 extern void flashc_set_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value);
00660
00675 extern void flashc_set_all_gp_fuses(U64 value);
00676
00678
00679
00682
00683
00694 extern void flashc_clear_page_buffer(void);
00695
00702 extern Bool flashc_is_page_erased(void);
00703
00716 extern Bool flashc_quick_page_read(int page_number);
00717
00737 extern Bool flashc_erase_page(int page_number, Bool check);
00738
00754 extern Bool flashc_erase_all_pages(Bool check);
00755
00773 extern void flashc_write_page(int page_number);
00774
00782 extern Bool flashc_quick_user_page_read(void);
00783
00796 extern Bool flashc_erase_user_page(Bool check);
00797
00807 extern void flashc_write_user_page(void);
00808
00836 extern volatile void *flashc_memset8(volatile void *dst, U8 src, size_t nbytes, Bool erase);
00837
00865 extern volatile void *flashc_memset16(volatile void *dst, U16 src, size_t nbytes, Bool erase);
00866
00894 extern volatile void *flashc_memset32(volatile void *dst, U32 src, size_t nbytes, Bool erase);
00895
00923 extern volatile void *flashc_memset64(volatile void *dst, U64 src, size_t nbytes, Bool erase);
00924
00953 #define flashc_memset(dst, src, src_width, nbytes, erase) \
00954 TPASTE2(flashc_memset, src_width)((dst), (src), (nbytes), (erase))
00955
00986 extern volatile void *flashc_memcpy(volatile void *dst, const void *src, size_t nbytes, Bool erase);
00987
00988 #if ( defined (__GNUC__) && ( defined (__AVR32_UC3C064C__) || defined (__AVR32_UC3C0128C__) || defined (__AVR32_UC3C0256C__) || defined (__AVR32_UC3C0512C__) || defined (__AVR32_UC3C164C__) || defined (__AVR32_UC3C1128C__) || defined (__AVR32_UC3C1256C__) || defined (__AVR32_UC3C1512C__) || defined (__AVR32_UC3C264C__) || defined (__AVR32_UC3C2128C__) || defined (__AVR32_UC3C2256C__) || defined (__AVR32_UC3C2512C__))) \
00989 ||( defined (__ICCAVR32__) && ( defined (__AT32UC3C064C__) || defined (__AT32UC3C0128C__) || defined (__AT32UC3C0256C__) || defined (__AT32UC3C0512C__) || defined (__AT32UC3C164C__) || defined (__AT32UC3C1128C__) || defined (__AT32UC3C1256C__) || defined (__AT32UC3C1512C__) || defined (__AT32UC3C264C__) || defined (__AT32UC3C2128C__) || defined (__AT32UC3C2256C__) || defined (__AT32UC3C2512C__)))
00990
00996 void flashc_set_flash_waitstate_and_readmode(unsigned long cpu_f_hz);
00997 #endif // UC3C device-specific implementation
00998
01000
01001
01002 #endif // _FLASHC_H_