main_ubi_sdk v 0.1.3
This is UBI4 documentation
flash_driver.h
Go to the documentation of this file.
1/*
2 ******************************************************************************
3 * @file flash_driver.h
4 * @author A.Alborov
5 ******************************************************************************
6*/
7
8#ifndef INC_FLASH_DRIVER_H_
9#define INC_FLASH_DRIVER_H_
10
11#include "UBI_SDK.h"
12
13#ifdef UBI_SDK_TARGET_ESP32
14#include "stdint.h"
15#include "stdbool.h"
16#include "esp_partition.h"
17
18
19#define MIN_SECTOR_SIZE 0x1000U
20
21typedef enum {
22 FDSE_WRITE_OK = 0,
23 FDSE_OWERWRITING_NOT_REQUERED,
24 FDSE_DATA_CONTAINE_IN_FLASH_BUFFER,
25 FDSE_FLASH_BUFFER_BUSY,
26 FDSE_FLASH_WRITE_ERROR
27 }flash_driver_status_enum;
28
29
30uint32_t readFlash32(uint32_t Address);
31
32
33uint16_t readFlash16(uint32_t Address);
34
35
36uint8_t readFlash8(uint32_t Address);
37
38
39void* getFlashPointer(uint32_t Address);
40
41
42bool WriteBytesToFlash(uint32_t Address, uint8_t* Buf, uint32_t Size);
43bool WriteBytesToFlashPartition(esp_partition_t* partition, uint32_t AddressOffset, uint8_t* Buf, uint32_t Size);
44
45
46void* SmartWriteToFlash(uint32_t Address, uint8_t* Buf, uint32_t Size,flash_driver_status_enum* status);
47void* SmartWriteToFlashPartition(esp_partition_t* partition, void* image_pointer,void* pointer, uint8_t* Buf, uint32_t Size,flash_driver_status_enum* status);
48
49
50
51bool compare_memory_val(uint32_t Address, uint8_t* val, uint32_t val_size);
52bool compare_memory_val_cash(void* Pointer, uint8_t* val, uint32_t val_size);
53
54
55bool memory_region_is_free(uint32_t Address, uint32_t Len);
56bool memory_region_is_free_cash(void* Pointer, uint32_t Len);
57
58void clear_flash_sector(uint32_t Address);
59
60uint32_t getSectorNumber(uint32_t Address);
61
62uint32_t getStartSectorAddress(uint32_t Address);
63
64void finish_used_flash();
65
66#endif
67
68#endif /* INC_FLASH_DRIVER_H_ */