123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- #ifndef _FLASH_H_
- #define _FLASH_H_
- #include "types.h"
- #include "gpio.h"
- #define FLASH_UCDS_ADDR_BASE 0x11005000
- #define SPIF_CONFIG_BASE 0x11080000
- #define SPIF_RLEN (SPIF_CONFIG_BASE+0x88)
- #define RFIFO_DEPTH (SPIF_CONFIG_BASE+0x84)
- #define PAGE_PROGRAM_CMD 0x2
- #define FAST_PROGRAM_CMD 0xF2
- #define WRITE_ENABLE_CMD 0x6
- #define WRITE_DISABLE_CMD 0x4
- #define READ_STATUS_CMD 0x5
- #define WRITE_STATUS_CMD 0x1
- #define SECT_ERASE_CMD 0x20
- #define BLOCK32_ERASE_CMD 0x52
- #define BLOCK64_ERASE_CMD 0xD8
- #define CHIP_ERASE_CMD 0xC7
- #define DEEP_DOWN_CMD 0xB9
- #define RELEASE_DOWN_CMD 0xAB
- #define MANUF_ID_CMD 0x90
- #define READ_ID_CMD 0x9F
- #define FAST_READ_CMD 0x0B
- #define READ_DATA_CMD 0x3
- #define WAIT_FOR_SPIF() {while(!( (*(volatile uint32_t *)(SPIF_CONFIG_BASE+0x90)) & 0x4)) ;}
- #define CHIP_ID_LENGTH 64
- #define CHIP_ID_PID_LEN 16
- #define CHIP_ID_LID_LEN 10
- #define CHIP_ID_MID_LEN 16
- #define CHIP_ID_TID_LEN 14
- #define CHIP_ID_SID_LEN 8
- #define CHIP_MADDR_LEN 6
- typedef enum{
- CHIP_ID_UNCHECK,
- CHIP_ID_EMPTY,
- CHIP_ID_VALID,
- CHIP_ID_INVALID,
- }CHIP_ID_STATUS_e;
- typedef struct{
- CHIP_ID_STATUS_e chipIdStatus;
- uint8_t pid[CHIP_ID_PID_LEN];
- uint8_t lid[CHIP_ID_LID_LEN];
- uint8_t mid[CHIP_ID_MID_LEN];
- uint8_t tid[CHIP_ID_TID_LEN];
- uint8_t sid[CHIP_ID_SID_LEN];
- }chipId_t;
- typedef struct{
- CHIP_ID_STATUS_e chipMAddrStatus;
- uint8_t mAddr[CHIP_MADDR_LEN];
- }chipMAddr_t;
-
- extern chipId_t g_chipId;
- extern chipMAddr_t g_chipMAddr;
- void init_spif(void);
- void close_spif(void);
- void read_deviceID(void);
- int read_status_register(void);
- void write_status_register(int value);
- void flash_block64_erase(unsigned int addr);
- void flash_sector_erase(unsigned int addr);
- int ProgramPage4 (unsigned long offset, uint32 data);
- int ProgramPage64 (unsigned long offset, const unsigned char *buf, int size);
- int ProgramWord (unsigned long offset, const unsigned char *buf,uint8_t size) ;
- int WriteFlash(unsigned int offset, uint32_t value);
- int WriteFlashShort(unsigned int offset, uint16_t value);
- uint8_t ReadFlash (unsigned int addr);
- uint32_t ReadFlashWord (unsigned int addr);
- uint8_t flash_write_ucds(uint32_t addr,uint32_t value);
- uint32_t flash_read_ucds(uint32_t addr);
- void flash_erase_ucds_all(void);
- uint8_t flash_erase_ucds(uint32_t addr);
- uint8_t flash_write_ucds_block(uint32_t addr,uint32_t length,uint32_t *buf);
- uint8_t flash_read_ucds_block(uint32_t addr,uint32_t length,uint32_t *tobuf);
- uint8_t flash_write_ucds_block_byte(uint32_t addr,uint32_t length,uint8_t *buf);
- uint8_t flash_read_ucds_block_byte(uint32_t addr,uint32_t length,uint8_t *tobuf);
- void check_chip_id(void);
- void check_chip_mAddr(void);
- void LOG_CHIP_ID(void);
- void LOG_CHIP_MADDR(void);
- void pplus_enter_programming_mode(void);
- extern CHIP_ID_STATUS_e pplus_LoadMACFromChipMAddr(void);
- #endif
|