123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- /*
- * Copyright (c) 2006-2020, YICHIP Development Team
- * @file yc_qspi.h
- * @brief This file contains all the functions prototypes for the IFlash library.
- *
- * Change Logs:
- * Date Author Version Notes
- * 2021-08-14 wushengyan V1.0.0 the first version
- */
- #ifndef __YC_QSPI_H__
- #define __YC_QSPI_H__
- #include "yc3122.h"
- #define BOOT_UART_DOWNLOAD_FLAG 0x5a5aa5a5
- #define BOOT_USB_DOWNLOAD_FLAG 0xaa5555aa
- #define BOOT_AUTO_SELECT_FLAG 0xffffffff
- #define ENC_BULK_BUF_SIZE 0x9000
- typedef enum {
- YC_QFLASH_SIZE_UNKNOW = 0,
- YC_QFLASH_SIZE_512KB = 1,
- YC_QFLASH_SIZE_1MB = 2,
- YC_QFLASH_SIZE_4MB = 3,
- } yc_qspi_flash_size_enum;
- typedef struct
- {
- uint16_t is_end;
- uint16_t enc_index;
- uint8_t enc_buf[ENC_BULK_BUF_SIZE];
- } ENC_BulkTypeDef;
- /**
- * @method qspi_flash_pageerase
- * @brief page erase (256byte)
- * @param flash_addr
- * @retval ERROR,SUCCESS
- */
- uint8_t qspi_flash_pageerase(uint32_t flash_addr);
- /**
- * @method qspi_flash_sectorerase
- * @brief sector erase (4K)
- * @param flash_addr:flash addr (4k Bytes align)
- * @retval ERROR,SUCCESS
- */
- uint8_t qspi_flash_sectorerase(uint32_t flash_addr);
- /**
- * @method qspi_flash_blockerase32k
- * @brief block erase (32K)
- * @param flash_addr:flash addr (32k Bytes align)
- * @retval ERROR,SUCCESS
- */
- uint8_t qspi_flash_blockerase32k(uint32_t flash_addr);
- /**
- * @method qspi_flash_blockerase64k
- * @brief block erase (64K)
- * @param flash_addr:flash addr (64k Bytes align)
- * @retval ERROR,SUCCESS
- */
- uint8_t qspi_flash_blockerase64k(uint32_t flash_addr);
- /**
- * @method qspi_flash_write
- * @brief write flash
- * @param flash_addr:flash addr (when flash_addr%256!=0,256-(flash_addr%256)+len must less than 256)
- * @param buf
- * @param len
- * @retval ERROR,SUCCESS
- */
- uint8_t qspi_flash_write(uint32_t flash_addr, uint8_t *buf, uint32_t len);
- /**
- * @method qspi_flash_read
- * @brief read flash
- * @param flash_addr:flash addr
- * @param buf
- * @param len
- * @retval ERROR,SUCCESS
- */
- uint8_t qspi_flash_read(uint32_t flash_addr, uint8_t *buf, uint32_t len);
- /**
- * @method flash_blank_check
- * @brief check logical addr data is blank
- * @param startaddr:cpu addr
- * @param len
- * @retval TRUE: blank
- * FALSE: not blank
- */
- Boolean flash_blank_check(uint32_t startaddr, uint32_t len);
- /**
- * @method enc_write_flash
- * @brief write data to flash with enc
- * @param flash_addr:cpu addr (must 32 Bytes align)
- * @param buf
- * @param len:(must 32 Bytes align)
- * @retval ERROR,SUCCESS
- */
- uint8_t enc_write_flash(uint32_t flash_addr, uint8_t *buf, uint32_t len);
- /**
- * @method enc_read_flash
- * @brief read flash data with enc
- * @param flash_addr:cpu addr
- * @param buf
- * @param len
- * @retval ERROR,SUCCESS
- */
- uint8_t enc_read_flash(uint32_t flash_addr, uint8_t *buf, uint32_t len);
- /**
- * @method enc_read_flash_fast
- * @brief enc read flash fast(You must sure that the read area is written by enc)
- * @param flash_addr:cpu addr
- * @param buf
- * @param len
- * @return SUCCESS or ERROR
- */
- uint8_t enc_read_flash_fast(uint32_t flash_addr, uint8_t *buf, uint32_t len);
- /**
- * @method enc_erase_flash_32byte
- * @brief erase 32 Bytes
- * @param flash_addr : cpu addr (must 32 Bytes align)
- * @retval ERROR,SUCCESS
- */
- uint8_t enc_erase_flash_32byte(uint32_t flash_addr);
- /**
- * @method enc_erase_flash_32k
- * @brief enc erase 32K Bytes
- * @param flash_addr : cpu addr (must 32K Bytes align)
- * @retval ERROR,SUCCESS
- */
- uint8_t enc_erase_flash_32k(uint32_t flash_addr);
- /**
- * @brief enc erase flash app area
- * @param addr:align at 32k for CPU addr
- * @param len:erase len
- * @return ERROR,SUCCESS
- */
- uint8_t enc_earse_flash_app_area(uint32_t addr,uint32_t len);
- /**
- * @brief enc write download flag
- * @param addr:BOOT_UART_DOWNLOAD_FLAG,BOOT_USB_DOWNLOAD_FLAG or BOOT_AUTO_SELECT_FLAG
- * @return ERROR,SUCCESS
- */
- uint8_t enc_write_download_flag(uint32_t flag);
- /**
- * @method enc_write_flash_bulk
- * @brief write bulk data to flash with enc
- * @param EncBulkStruct:enc buf struct
- * @param flash_addr:cpu addr(start addr must 32k Bytes align)
- * @param buf
- * @param len: Integer multiple of 32 bytes
- * @retval ERROR,SUCCESS
- */
- uint8_t enc_write_flash_bulk(ENC_BulkTypeDef *EncBulkStruct,uint32_t flash_addr, uint8_t *buf, uint32_t len);
- /**
- * @method prefetch
- * @brief fetch code to cache
- * @param start_addr: code start addr
- * @param end_addr : code end addr
- * @retval NULL
- */
- void prefetch(void *start_addr, void *end_addr);
- /**
- * @method read_flash_size
- * @brief read the chip flash size
- * @param NULL
- * @retval yc_qspi_flash_size_enum
- */
- yc_qspi_flash_size_enum read_flash_size(void);
- /**
- * @method qspi_GetVersion
- * @brief get qspi lib version
- * @param NULL
- * @retval version
- */
- uint32_t qspi_GetVersion(void);
- #endif
|