flash.h
Go to the documentation of this file.
1 #ifndef __FLASH_H__
2 #define __FLASH_H__
3 
4 //*****************************************************************************
5 //
8 //
9 //*****************************************************************************
10 
11 //*****************************************************************************
12 //
13 // If building with a C++ compiler, make all of the definitions in this header
14 // have a C binding.
15 //
16 //*****************************************************************************
17 #ifdef __cplusplus
18 extern "C"
19 {
20 #endif
21 
22 #include <msp.h>
23 #include <stdbool.h>
24 
25 //*****************************************************************************
26 //
27 // Control specific variables
28 //
29 //*****************************************************************************
30 #define FLASH_BURST_PRG_BIT 0x03
31 
32 /* Interrupts */
33 #define FLASH_PROGRAM_ERROR FLCTL_IFG_PRG_ERR
34 #define FLASH_BENCHMARK_INT FLCTL_IFG_BMRK
35 #define FLASH_ERASE_COMPLETE FLCTL_IFG_ERASE
36 #define FLASH_BRSTPRGM_COMPLETE FLCTL_IFG_PRGB
37 #define FLASH_WRDPRGM_COMPLETE FLCTL_IFG_PRG
38 #define FLASH_POSTVERIFY_FAILED FLCTL_IFG_AVPST
39 #define FLASH_PREVERIFY_FAILED FLCTL_IFG_AVPRE
40 #define FLASH_BRSTRDCMP_COMPLETE FLCTL_IFG_RDBRST
41 
42 #define FLASH_NORMAL_READ_MODE FLCTL_BANK0_RDCTL_RD_MODE_0
43 #define FLASH_MARGIN0_READ_MODE FLCTL_BANK0_RDCTL_RD_MODE_1
44 #define FLASH_MARGIN1_READ_MODE FLCTL_BANK0_RDCTL_RD_MODE_2
45 #define FLASH_PROGRAM_VERIFY_READ_MODE FLCTL_BANK0_RDCTL_RD_MODE_3
46 #define FLASH_ERASE_VERIFY_READ_MODE FLCTL_BANK0_RDCTL_RD_MODE_4
47 #define FLASH_LEAKAGE_VERIFY_READ_MODE FLCTL_BANK0_RDCTL_RD_MODE_5
48 #define FLASH_MARGIN0B_READ_MODE FLCTL_BANK0_RDCTL_RD_MODE_9
49 #define FLASH_MARGIN1B_READ_MODE FLCTL_BANK0_RDCTL_RD_MODE_10
50 
51 #define FLASH_PRGBRSTCTLSTAT_BURSTSTATUS_COMPLETE FLCTL_PRGBRST_CTLSTAT_BURST_STATUS_7
52 
53 #define FLASH_BANK0 0x00
54 #define FLASH_BANK1 0x01
55 #define FLASH_DATA_READ 0x00
56 #define FLASH_INSTRUCTION_FETCH 0x01
57 
58 #define FLASH_MAIN_MEMORY_SPACE_BANK0 0x01
59 #define FLASH_MAIN_MEMORY_SPACE_BANK1 0x02
60 #define FLASH_INFO_MEMORY_SPACE_BANK0 0x03
61 #define FLASH_INFO_MEMORY_SPACE_BANK1 0x04
62 
63 #define FLASH_MAIN_SPACE FLCTL_RDBRST_CTLSTAT_MEM_TYPE_0
64 #define FLASH_INFO_SPACE FLCTL_RDBRST_CTLSTAT_MEM_TYPE_1
65 #define FLASH_1_PATTERN FLCTL_RDBRST_CTLSTAT_DATA_CMP
66 #define FLASH_0_PATTERN 0x00
67 
68 #define FLASH_SECTOR0 FLCTL_BANK0_MAIN_WEPROT_PROT0
69 #define FLASH_SECTOR1 FLCTL_BANK0_MAIN_WEPROT_PROT1
70 #define FLASH_SECTOR2 FLCTL_BANK0_MAIN_WEPROT_PROT2
71 #define FLASH_SECTOR3 FLCTL_BANK0_MAIN_WEPROT_PROT3
72 #define FLASH_SECTOR4 FLCTL_BANK0_MAIN_WEPROT_PROT4
73 #define FLASH_SECTOR5 FLCTL_BANK0_MAIN_WEPROT_PROT5
74 #define FLASH_SECTOR6 FLCTL_BANK0_MAIN_WEPROT_PROT6
75 #define FLASH_SECTOR7 FLCTL_BANK0_MAIN_WEPROT_PROT7
76 #define FLASH_SECTOR8 FLCTL_BANK0_MAIN_WEPROT_PROT8
77 #define FLASH_SECTOR9 FLCTL_BANK0_MAIN_WEPROT_PROT9
78 #define FLASH_SECTOR10 FLCTL_BANK0_MAIN_WEPROT_PROT10
79 #define FLASH_SECTOR11 FLCTL_BANK0_MAIN_WEPROT_PROT11
80 #define FLASH_SECTOR12 FLCTL_BANK0_MAIN_WEPROT_PROT12
81 #define FLASH_SECTOR13 FLCTL_BANK0_MAIN_WEPROT_PROT13
82 #define FLASH_SECTOR14 FLCTL_BANK0_MAIN_WEPROT_PROT14
83 #define FLASH_SECTOR15 FLCTL_BANK0_MAIN_WEPROT_PROT15
84 #define FLASH_SECTOR16 FLCTL_BANK0_MAIN_WEPROT_PROT16
85 #define FLASH_SECTOR17 FLCTL_BANK0_MAIN_WEPROT_PROT17
86 #define FLASH_SECTOR18 FLCTL_BANK0_MAIN_WEPROT_PROT18
87 #define FLASH_SECTOR19 FLCTL_BANK0_MAIN_WEPROT_PROT19
88 #define FLASH_SECTOR20 FLCTL_BANK0_MAIN_WEPROT_PROT20
89 #define FLASH_SECTOR21 FLCTL_BANK0_MAIN_WEPROT_PROT21
90 #define FLASH_SECTOR22 FLCTL_BANK0_MAIN_WEPROT_PROT22
91 #define FLASH_SECTOR23 FLCTL_BANK0_MAIN_WEPROT_PROT23
92 #define FLASH_SECTOR24 FLCTL_BANK0_MAIN_WEPROT_PROT24
93 #define FLASH_SECTOR25 FLCTL_BANK0_MAIN_WEPROT_PROT25
94 #define FLASH_SECTOR26 FLCTL_BANK0_MAIN_WEPROT_PROT26
95 #define FLASH_SECTOR27 FLCTL_BANK0_MAIN_WEPROT_PROT27
96 #define FLASH_SECTOR28 FLCTL_BANK0_MAIN_WEPROT_PROT28
97 #define FLASH_SECTOR29 FLCTL_BANK0_MAIN_WEPROT_PROT29
98 #define FLASH_SECTOR30 FLCTL_BANK0_MAIN_WEPROT_PROT30
99 #define FLASH_SECTOR31 FLCTL_BANK0_MAIN_WEPROT_PROT31
100 
101 #define FLASH_NOVER 0
102 #define FLASH_BURSTPOST FLCTL_PRGBRST_CTLSTAT_AUTO_PST
103 #define FLASH_BURSTPRE FLCTL_PRGBRST_CTLSTAT_AUTO_PRE
104 #define FLASH_REGPRE FLCTL_PRG_CTLSTAT_VER_PRE
105 #define FLASH_REGPOST FLCTL_PRG_CTLSTAT_VER_PST
106 #define FLASH_FULLVER (FLCTL_PRGBRST_CTLSTAT_AUTO_PST | \
107  FLCTL_PRGBRST_CTLSTAT_AUTO_PRE | FLCTL_PRG_CTLSTAT_VER_PRE \
108  | FLCTL_PRG_CTLSTAT_VER_PST)
109 
110 #define FLASH_COLLATED_WRITE_MODE 0x01
111 #define FLASH_IMMEDIATE_WRITE_MODE 0x02
112 
113 #define __INFO_FLASH_TECH_START__ 0x00200000
114 #define __INFO_FLASH_TECH_MIDDLE__ 0x00202000
115 
116 
117 //*****************************************************************************
118 //
119 // Prototypes for the APIs.
120 //
121 //*****************************************************************************
122 
123 //*****************************************************************************
124 //
143 //
144 //*****************************************************************************
145 extern void FlashCtl_getMemoryInfo(uint32_t addr, uint32_t *sectorNum,
146  uint32_t *bankNum);
147 
148 //*****************************************************************************
149 //
163 //
164 //*****************************************************************************
165 extern void FlashCtl_enableReadBuffering(uint_fast8_t memoryBank,
166  uint_fast8_t accessMethod);
167 
168 //*****************************************************************************
169 //
183 //
184 //*****************************************************************************
185 extern void FlashCtl_disableReadBuffering(uint_fast8_t memoryBank,
186  uint_fast8_t accessMethod);
187 
188 //*****************************************************************************
189 //
245 //
246 //*****************************************************************************
247 extern bool FlashCtl_unprotectSector(uint_fast8_t memorySpace,
248  uint32_t sectorMask);
249 
250 //*****************************************************************************
251 //
307 //
308 //*****************************************************************************
309 extern bool FlashCtl_protectSector(uint_fast8_t memorySpace,
310  uint32_t sectorMask);
311 
312 //*****************************************************************************
313 //
368 //
369 //*****************************************************************************
370 extern bool FlashCtl_isSectorProtected(uint_fast8_t memorySpace,
371  uint32_t sector);
372 
373 //*****************************************************************************
374 //
408 //
409 //*****************************************************************************
410 extern bool FlashCtl_verifyMemory(void* verifyAddr, uint32_t length,
411  uint_fast8_t pattern);
412 
413 //*****************************************************************************
414 //
434 //
435 //*****************************************************************************
436 extern bool FlashCtl_performMassErase(void);
437 
438 //*****************************************************************************
439 //
446 //
447 //*****************************************************************************
448 extern void FlashCtl_initiateMassErase(void);
449 
450 //*****************************************************************************
451 //
476 //
477 //*****************************************************************************
478 extern bool FlashCtl_eraseSector(uint32_t addr);
479 
480 //*****************************************************************************
481 //
511 //
512 //*****************************************************************************
513 extern bool FlashCtl_programMemory(void* src, void* dest, uint32_t length);
514 
515 //*****************************************************************************
516 //
532 //
533 //*****************************************************************************
534 extern void FlashCtl_setProgramVerification(uint32_t verificationSetting);
535 
536 //*****************************************************************************
537 //
553 //
554 //*****************************************************************************
555 extern void FlashCtl_clearProgramVerification(uint32_t verificationSetting);
556 
557 //*****************************************************************************
558 //
576 //
577 //*****************************************************************************
578 extern void FlashCtl_enableWordProgramming(uint32_t mode);
579 
580 //*****************************************************************************
581 //
588 //
589 //*****************************************************************************
590 extern void FlashCtl_disableWordProgramming(void);
591 
592 //*****************************************************************************
593 //
603 //
604 //*****************************************************************************
605 extern uint32_t FlashCtl_isWordProgrammingEnabled(void);
606 
607 //*****************************************************************************
608 //
628 //
629 //*****************************************************************************
630 extern bool FlashCtl_setReadMode(uint32_t flashBank, uint32_t readMode);
631 
632 //*****************************************************************************
633 //
650 //
651 //*****************************************************************************
652 extern uint32_t FlashCtl_getReadMode(uint32_t flashBank);
653 
654 //*****************************************************************************
655 //
667 //
668 //*****************************************************************************
669 extern void FlashCtl_setWaitState(uint32_t bank, uint32_t waitState);
670 
671 //*****************************************************************************
672 //
680 //
681 //*****************************************************************************
682 extern uint32_t FlashCtl_getWaitState(uint32_t bank);
683 
684 //*****************************************************************************
685 //
708 //
709 //*****************************************************************************
710 extern void FlashCtl_enableInterrupt(uint32_t flags);
711 
712 //*****************************************************************************
713 //
733 //
734 //*****************************************************************************
735 extern void FlashCtl_disableInterrupt(uint32_t flags);
736 
737 //*****************************************************************************
738 //
757 //
758 //*****************************************************************************
759 extern uint32_t FlashCtl_getEnabledInterruptStatus(void);
760 
761 //*****************************************************************************
762 //
778 //
779 //*****************************************************************************
780 extern uint32_t FlashCtl_getInterruptStatus(void);
781 
782 //*****************************************************************************
783 //
815 //
816 //*****************************************************************************
817 extern void FlashCtl_clearInterruptFlag(uint32_t flags);
818 
819 //*****************************************************************************
820 //
837 //
838 //*****************************************************************************
839 extern void FlashCtl_registerInterrupt(void (*intHandler)(void));
840 
841 //*****************************************************************************
842 //
853 //
854 //*****************************************************************************
855 extern void FlashCtl_unregisterInterrupt(void);
856 
857 
858 //*****************************************************************************
859 //
874 //
875 //*****************************************************************************
876 extern void FlashCtl_initiateSectorErase(uint32_t addr);
877 
878 
879 /* The following functions are advanced functions that are used by the flash
880  * driver to remask a failed bit in the event of a post or pre verification
881  * failure. They are meant to be advanced functions and should not be used
882  * by the majority of users (unless you are writing your own flash driver).
883  */
884 extern uint8_t __FlashCtl_remaskData8Post(uint8_t data, uint32_t addr);
885 extern uint8_t __FlashCtl_remaskData8Pre(uint8_t data, uint32_t addr);
886 extern uint32_t __FlashCtl_remaskData32Post(uint32_t data, uint32_t addr);
887 extern uint32_t __FlashCtl_remaskData32Pre(uint32_t data, uint32_t addr);
888 extern void __FlashCtl_remaskBurstDataPost(uint32_t addr, uint32_t size);
889 extern void __FlashCtl_remaskBurstDataPre(uint32_t addr, uint32_t size);
890 
891 //*****************************************************************************
892 //
893 // Mark the end of the C bindings section for C++ compilers.
894 //
895 //*****************************************************************************
896 #ifdef __cplusplus
897 }
898 #endif
899 
900 //*****************************************************************************
901 //
902 // Close the Doxygen group.
904 //
905 //*****************************************************************************
906 
907 #endif // __FLASH_H__
uint32_t FlashCtl_getInterruptStatus(void)
Definition: flash.c:1195
uint32_t FlashCtl_getReadMode(uint32_t flashBank)
Definition: flash.c:708
bool FlashCtl_performMassErase(void)
Definition: flash.c:733
bool FlashCtl_setReadMode(uint32_t flashBank, uint32_t readMode)
Definition: flash.c:679
void FlashCtl_getMemoryInfo(uint32_t addr, uint32_t *sectorNum, uint32_t *bankNum)
Definition: flash.c:106
void FlashCtl_setProgramVerification(uint32_t verificationSetting)
Definition: flash.c:1089
uint32_t FlashCtl_isWordProgrammingEnabled(void)
Definition: flash.c:1143
void FlashCtl_enableWordProgramming(uint32_t mode)
Definition: flash.c:1124
uint32_t FlashCtl_getWaitState(uint32_t bank)
Definition: flash.c:1170
void FlashCtl_registerInterrupt(void(*intHandler)(void))
Definition: flash.c:1210
void FlashCtl_enableReadBuffering(uint_fast8_t memoryBank, uint_fast8_t accessMethod)
Definition: flash.c:388
void FlashCtl_initiateSectorErase(uint32_t addr)
Definition: flash.c:931
uint32_t FlashCtl_getEnabledInterruptStatus(void)
Definition: flash.c:1200
void FlashCtl_enableInterrupt(uint32_t flags)
Definition: flash.c:1185
bool FlashCtl_verifyMemory(void *verifyAddr, uint32_t length, uint_fast8_t pattern)
Definition: flash.c:495
void FlashCtl_unregisterInterrupt(void)
Definition: flash.c:1223
void FlashCtl_clearProgramVerification(uint32_t verificationSetting)
Definition: flash.c:1106
bool FlashCtl_programMemory(void *src, void *dest, uint32_t length)
Definition: flash.c:971
bool FlashCtl_unprotectSector(uint_fast8_t memorySpace, uint32_t sectorMask)
Definition: flash.c:422
void FlashCtl_initiateMassErase(void)
Definition: flash.c:723
uint32_t __FlashCtl_remaskData32Pre(uint32_t data, uint32_t addr)
Definition: flash.c:1358
bool FlashCtl_protectSector(uint_fast8_t memorySpace, uint32_t sectorMask)
Definition: flash.c:449
void FlashCtl_clearInterruptFlag(uint32_t flags)
Definition: flash.c:1205
bool FlashCtl_isSectorProtected(uint_fast8_t memorySpace, uint32_t sector)
Definition: flash.c:476
void FlashCtl_setWaitState(uint32_t bank, uint32_t waitState)
Definition: flash.c:1154
uint32_t __FlashCtl_remaskData32Post(uint32_t data, uint32_t addr)
Definition: flash.c:1310
void __FlashCtl_remaskBurstDataPost(uint32_t addr, uint32_t size)
Definition: flash.c:1471
bool FlashCtl_eraseSector(uint32_t addr)
Definition: flash.c:830
void __FlashCtl_remaskBurstDataPre(uint32_t addr, uint32_t size)
Definition: flash.c:1406
uint8_t __FlashCtl_remaskData8Pre(uint8_t data, uint32_t addr)
Definition: flash.c:1273
void FlashCtl_disableInterrupt(uint32_t flags)
Definition: flash.c:1190
uint8_t __FlashCtl_remaskData8Post(uint8_t data, uint32_t addr)
Definition: flash.c:1236
void FlashCtl_disableWordProgramming(void)
Definition: flash.c:1138
void FlashCtl_disableReadBuffering(uint_fast8_t memoryBank, uint_fast8_t accessMethod)
Definition: flash.c:405

Copyright 2016, Texas Instruments Incorporated