Bouffalo SDK  1.0
Bouffalolab Software Development Kit
bflb_flash.h
Go to the documentation of this file.
1 #ifndef _BFLB_FLASH_H
2 #define _BFLB_FLASH_H
3 
4 #include "bflb_core.h"
5 #include "bflb_sflash.h"
6 
18 #define FLASH_IOMODE_NIO 0
19 #define FLASH_IOMODE_DO 1
20 #define FLASH_IOMODE_QO 2
21 #define FLASH_IOMODE_DIO 3
22 #define FLASH_IOMODE_QIO 4
30 #define FLASH_AES_KEY_128BITS 0
31 #define FLASH_AES_KEY_192BITS 2
32 #define FLASH_AES_KEY_256BITS 1
33 #define FLASH_AES_KEY_DOUBLE_128BITS 3
34 
38 #if defined(BL602) || defined(BL702) || defined(BL702L)
39 #define FLASH_XIP_BASE (0x23000000)
40 #elif defined(BL616)
41 #define FLASH_XIP_BASE (0xA0000000)
42 #elif defined(BL628)
43 #define FLASH_XIP_BASE (0x80000000)
44 #elif defined(BL808) || defined(BL606P)
45 #define FLASH_XIP_BASE (0x58000000)
46 #endif
47 
49  uint8_t region;
50  uint8_t region_enable;
51  uint8_t lock_enable;
52  const uint8_t *key;
53  uint8_t keybits;
54  uint8_t *iv;
55  uint32_t start_addr;
56  uint32_t end_addr;
57 };
58 
59 #ifdef __cplusplus
60 extern "C" {
61 #endif
62 
68 int bflb_flash_init(void);
69 
70 #if defined(BL616) || defined(BL628) || defined(BL606P) || defined(BL808)
71 
76 void bflb_flash_set_cmds(spi_flash_cfg_type *p_flash_cfg);
77 #endif
78 
84 uint32_t bflb_flash_get_jedec_id(void);
85 
91 uint32_t bflb_flash_get_size(void);
92 
93 #if defined(BL616) || defined(BL628)
94 
99 uint32_t bflb_flash2_get_size(void);
100 #endif
101 
108 void bflb_flash_get_cfg(uint8_t **cfg_addr, uint32_t *len);
109 
115 void bflb_flash_set_iomode(uint8_t iomode);
116 
122 uint32_t bflb_flash_get_image_offset(void);
123 
131 int bflb_flash_erase(uint32_t addr, uint32_t len);
132 
141 int bflb_flash_write(uint32_t addr, uint8_t *data, uint32_t len);
142 
151 int bflb_flash_read(uint32_t addr, uint8_t *data, uint32_t len);
152 
160 int bflb_flash_get_unique_id(uint8_t *data, uint8_t id_len);
161 
171 int bflb_flash_set_cache(uint8_t cont_read, uint8_t cache_enable, uint8_t cache_way_disable, uint32_t flash_offset);
172 
178 void bflb_flash_aes_init(struct bflb_flash_aes_config_s *config);
179 
184 void bflb_flash_aes_enable(void);
185 
190 void bflb_flash_aes_disable(void);
191 
199 void bflb_flash_jump_encrypted_app(uint8_t index, uint32_t flash_addr, uint32_t len);
200 
201 #ifdef __cplusplus
202 }
203 #endif
204 
213 #endif
int bflb_flash_init(void)
Initialize flash.
uint32_t bflb_flash_get_image_offset(void)
Get flash image offset.
void bflb_flash_jump_encrypted_app(uint8_t index, uint32_t flash_addr, uint32_t len)
Initialize flash jump to encrypted app.
int bflb_flash_read(uint32_t addr, uint8_t *data, uint32_t len)
Read data from flash.
uint32_t bflb_flash_get_size(void)
get flash size
int bflb_flash_set_cache(uint8_t cont_read, uint8_t cache_enable, uint8_t cache_way_disable, uint32_t flash_offset)
Config flash cache.
void bflb_flash_set_iomode(uint8_t iomode)
Set flash iomode.
void bflb_flash_aes_init(struct bflb_flash_aes_config_s *config)
Initialize flash aes controller.
void bflb_flash_aes_enable(void)
Enable flash decrypt with aes.
void bflb_flash_aes_disable(void)
Disable flash decrypt with aes.
const uint8_t * key
Definition: bflb_flash.h:52
uint32_t bflb_flash_get_jedec_id(void)
Get flash jedec id.
void bflb_flash_get_cfg(uint8_t **cfg_addr, uint32_t *len)
Get flash config.
int bflb_flash_erase(uint32_t addr, uint32_t len)
Erase flash with sectors.
int bflb_flash_write(uint32_t addr, uint8_t *data, uint32_t len)
Write data into flash.
int bflb_flash_get_unique_id(uint8_t *data, uint8_t id_len)
read flash unique id