• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "SpiFlash.h"
2 
3 #include <string.h>
4 #include <stdlib.h>
5 
6 #include "esp_spi_flash.h"
7 #include "esp_partition.h"
8 
9 #include "esp_err.h"
10 #include "esp32/rom/spi_flash.h"
11 
12 SpiFlash spiflash = SpiFlash();
13 
14 esp_rom_spiflash_chip_t g_rom_flashchip;
15 
convert_chip_size_string(const char * chip_size_str)16 size_t convert_chip_size_string(const char* chip_size_str)
17 {
18     int size = 0;
19     if (strcmp(chip_size_str, "1MB") == 0) {
20         size = 0x100000;
21     }
22     else if (strcmp(chip_size_str, "2MB") == 0) {
23         size = 0x200000;
24     }
25     else if (strcmp(chip_size_str, "4MB") == 0) {
26         size = 0x400000;
27     }
28     else if (strcmp(chip_size_str, "8MB") == 0) {
29         size = 0x800000;
30     }
31     else if (strcmp(chip_size_str, "16MB") == 0) {
32         size = 0x1000000;
33     } else {
34         size = 0;
35     }
36 
37     return size;
38 }
39 
_spi_flash_init(const char * chip_size,size_t block_size,size_t sector_size,size_t page_size,const char * partitions_bin)40 extern "C" void _spi_flash_init(const char* chip_size, size_t block_size, size_t sector_size, size_t page_size, const char* partitions_bin)
41 {
42     size_t size = convert_chip_size_string(chip_size);
43 
44     assert(size != 0);
45 
46     spiflash.init(size, block_size, sector_size, page_size, partitions_bin);
47 
48     g_rom_flashchip.chip_size = size;
49     g_rom_flashchip.block_size = block_size;
50     g_rom_flashchip.sector_size = sector_size;
51     g_rom_flashchip.page_size = page_size;
52 }
53 
spi_flash_mmap(size_t src_addr,size_t size,spi_flash_mmap_memory_t memory,const void ** out_ptr,spi_flash_mmap_handle_t * out_handle)54 extern "C" esp_err_t spi_flash_mmap(size_t src_addr, size_t size, spi_flash_mmap_memory_t memory,
55                          const void** out_ptr, spi_flash_mmap_handle_t* out_handle)
56 {
57     *out_handle = 0;
58     *out_ptr = (void*)spiflash.get_memory_ptr(src_addr);
59 
60     return ESP_OK;
61 }
62 
spi_flash_munmap(spi_flash_mmap_handle_t handle)63 extern "C" void spi_flash_munmap(spi_flash_mmap_handle_t handle)
64 {
65     return;
66 }
67 
spi_flash_get_total_erase_cycles(void)68 extern "C" int spi_flash_get_total_erase_cycles(void)
69 {
70     return spiflash.get_total_erase_cycles();
71 }
72 
spi_flash_get_erase_cycles(size_t sector)73 extern "C" int spi_flash_get_erase_cycles(size_t sector)
74 {
75     return spiflash.get_erase_cycles(sector);
76 }
77 
esp_rom_spiflash_read(uint32_t target,uint32_t * dest,int32_t len)78 esp_rom_spiflash_result_t esp_rom_spiflash_read(uint32_t target, uint32_t *dest, int32_t len)
79 {
80     return spiflash.read(target, dest, len);
81 }
82 
esp_rom_spiflash_erase_block(uint32_t block)83 esp_rom_spiflash_result_t esp_rom_spiflash_erase_block(uint32_t block)
84 {
85     return spiflash.erase_block(block);
86 }
87 
esp_rom_spiflash_erase_sector(uint32_t sector)88 esp_rom_spiflash_result_t esp_rom_spiflash_erase_sector(uint32_t sector)
89 {
90     return spiflash.erase_sector(sector);
91 }
92 
esp_rom_spiflash_erase_page(uint32_t page)93 esp_rom_spiflash_result_t esp_rom_spiflash_erase_page(uint32_t page)
94 {
95     return spiflash.erase_page(page);
96 }
97 
esp_rom_spiflash_write(uint32_t target,const uint32_t * src,int32_t len)98 esp_rom_spiflash_result_t esp_rom_spiflash_write(uint32_t target, const uint32_t *src, int32_t len)
99 {
100     return spiflash.write(target, src, len);
101 }
102 
esp_rom_spiflash_write_encrypted(uint32_t flash_addr,uint32_t * data,uint32_t len)103 esp_rom_spiflash_result_t esp_rom_spiflash_write_encrypted(uint32_t flash_addr, uint32_t *data, uint32_t len)
104 {
105     return spiflash.write(flash_addr, data, len);
106 }
107 
heap_caps_malloc(size_t size,uint32_t caps)108 void *heap_caps_malloc( size_t size, uint32_t caps )
109 {
110     return NULL;
111 }
112 
esp_rom_spiflash_write_disable(void)113 esp_rom_spiflash_result_t esp_rom_spiflash_write_disable(void)
114 {
115     return ESP_ROM_SPIFLASH_RESULT_OK;
116 }
117 
118 esp_flash_t* esp_flash_default_chip = NULL;
119