| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | #ifndef SPI_FLASH_H#define SPI_FLASH_H#include <stdint.h>#include <stdbool.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#ifdef PRINTF_STDLIB#include <stdio.h>#endif#ifdef PRINTF_CUSTOM#include "tinystdio.h"#endif#define SPI_FLASH_SECTOR_SIZE		        4096#define SPI_FLASH_SECTORS_IN_BLOCK_NUMBER   16#define SPI_FLASH_BLOCK_SIZE                16//4#define SPI_FLASH_BLOCK_NUMBER		        32// SPI flash partitioning layout#define LOG_FLASH_SECTOR_OFFSET	4#ifdef HARDWARE_BT6711// assuming 512 sectors#define ALARM_LOG_FLASH_SECTOR_OFFSET	174#define SECTOR_COUNT 170#define FIRMWARE_UPDATE_SECTOR_OFFSET	344#define FIRMWARE_UPDATE_SECTOR_COUNT	(512 - FIRMWARE_UPDATE_SECTOR_OFFSET)#else // HARDWARE_BT6711#define ALARM_LOG_FLASH_SECTOR_OFFSET	258#define SECTOR_COUNT (spi_flash_desc.sector_count/2 - LOG_FLASH_SECTOR_OFFSET)#endif // HARDWARE_BT6711#if defined ( __ICCARM__ )typedef int ssize_t;#endiftypedef struct {	bool present;//	uint16_t sector_size;	uint32_t sector_size;	uint8_t sector_erase_op;	uint16_t sector_count;} spi_flash_desc_t;extern spi_flash_desc_t spi_flash_desc;extern bool spi_flash_init(void);extern ssize_t spi_flash_read(int addr, void *buf, size_t len, uint32_t timeout);extern ssize_t spi_flash_write(int addr, const void *buf, size_t len, uint32_t timeout);extern int spi_flash_erase_sector(int addr, uint32_t timeout);extern int spi_flash_chip_erase(uint32_t timeout);extern bool spi_flash_test(void);#endif /* SPI_FLASH_H */
 |