128 lines
4.6 KiB
C
128 lines
4.6 KiB
C
#ifndef _BOOTSECOND_H_
|
||
#define _BOOTSECOND_H_
|
||
|
||
#define __RAM_DMA __attribute__((section("ram_code")))
|
||
typedef enum
|
||
{
|
||
INVALIDSTAT = 0,
|
||
ACTIVEASTAT = 1,
|
||
ERASEASTAT = 2,
|
||
OVERWRITEASTAT = 3,
|
||
ACTIVEBSTAT = 4,
|
||
ERASEBSTAT = 5,
|
||
OVERWRITEBSTAT = 6,
|
||
} STATUS_T;
|
||
|
||
typedef enum
|
||
{
|
||
ERRNONE = 0,
|
||
ERRPARAMDAMAGE = 1,
|
||
ERROVERWRITE = 2,
|
||
ERRCHECK = 3,
|
||
} ERROR_T;
|
||
typedef enum
|
||
{
|
||
STATUS_APPBOOT,
|
||
STATUS_APPUPDATA,
|
||
STATUS_APPERROR,
|
||
} PARMSTATUS;
|
||
typedef enum
|
||
{
|
||
APPBOOTA = 0,
|
||
APPUPDATA = 2,
|
||
APPBOOTB = 3,
|
||
APPBOOTERR = 4,
|
||
} APPSTATUS;
|
||
typedef enum
|
||
{
|
||
FLASH_SIZE_1M = 0x11,
|
||
FLASH_SIZE_2M = 0x12,
|
||
FLASH_SIZE_4M = 0x13,
|
||
} FLASH_SIZEID;
|
||
|
||
typedef enum
|
||
{
|
||
FLASH_1M_BACKUPADDR = 29 * 4096,
|
||
FLASH_2M_BACKUPADDR = 61 * 4096,
|
||
FLASH_4M_BACKUPADDR = 125 * 4096,
|
||
} FLASH_SIZE;
|
||
#define DEBUG_PRINT
|
||
#define PIN_AB_DAMAGE 18
|
||
|
||
// #define PIN_DETECT
|
||
#define PIN_AB_ACTIVE 0
|
||
|
||
#define CRC32_INITIAL 0
|
||
|
||
#define CODES_OFFSET 0x20
|
||
#define PARAM_CNT 5
|
||
#define PARAM_LENGTH 240
|
||
#define TO_B 0
|
||
#define TO_A 1
|
||
|
||
#define CPR_CTLAPBCLKEN_GRCTL_MASK_OFFSET (16UL)
|
||
#define CPR_CTLAPBCLKEN_GRCTL_WDT_PCLK_EN_Pos (0x0UL) // /*!< Position of WDT_PCLK_EN field. */
|
||
#define CPR_CTLAPBCLKEN_GRCTL_WDT_PCLK_EN_Msk (0x1UL << CPR_CTLAPBCLKEN_GRCTL_WDT_PCLK_EN_Pos)
|
||
#define CPR_CTLAPBCLKEN_GRCTL_WDT_PCLK_EN_DISABLE (0x0UL << CPR_CTLAPBCLKEN_GRCTL_WDT_PCLK_EN_Pos) /*!< 0����ʹ��ʱ�� */
|
||
#define CPR_CTLAPBCLKEN_GRCTL_WDT_PCLK_EN_ENABLE (0x1UL << CPR_CTLAPBCLKEN_GRCTL_WDT_PCLK_EN_Pos) /*!< 1��ʹ��ʱ��*/
|
||
#define CPR_RSTCTL_CTLAPB_SW_WDT_RSTN_Pos (0x2UL) // /*!< Position of WDT_RSTN field. */
|
||
#define CPR_RSTCTL_CTLAPB_SW_WDT_RSTN_Msk (0x1UL << CPR_RSTCTL_CTLAPB_SW_WDT_RSTN_Pos)
|
||
#define CPR_RSTCTL_CTLAPB_SW_WDT_RSTN_DISABLE (RSTN_INVALID << CPR_RSTCTL_CTLAPB_SW_WDT_RSTN_Pos) /*!< 1������λ */
|
||
#define CPR_RSTCTL_CTLAPB_SW_WDT_RSTN_ENABLE (RSTN_VALID << CPR_RSTCTL_CTLAPB_SW_WDT_RSTN_Pos) /*!< 0����λ*/
|
||
#define CPR_RSTCTL_WDTRST_MASK_WDT_SYS_RSTN_MASK_Pos (0x0UL) // /*!< Position of WDT_SYS_RSTN_MASK field. */
|
||
#define CPR_RSTCTL_WDTRST_MASK_WDT_SYS_RSTN_MASK_Msk (0x1UL << CPR_RSTCTL_WDTRST_MASK_WDT_SYS_RSTN_MASK_Pos)
|
||
#define CPR_RSTCTL_WDTRST_MASK_WDT_SYS_RSTN_MASK_DISABLE (0x0UL << CPR_RSTCTL_WDTRST_MASK_WDT_SYS_RSTN_MASK_Pos) /*!< 0�������� */
|
||
#define CPR_RSTCTL_WDTRST_MASK_WDT_SYS_RSTN_MASK_ENABLE (0x1UL << CPR_RSTCTL_WDTRST_MASK_WDT_SYS_RSTN_MASK_Pos) /*!< 1������*/
|
||
#define CPR_RSTCTL_WDTRST_MASK_WDT_M4_RSTN_MASK_Pos (0x1UL) // /*!< Position of WDT_M0_RSTN_MASK field. */
|
||
#define CPR_RSTCTL_WDTRST_MASK_WDT_M4_RSTN_MASK_Msk (0x1UL << CPR_RSTCTL_WDTRST_MASK_WDT_M4_RSTN_MASK_Pos)
|
||
#define CPR_RSTCTL_WDTRST_MASK_WDT_M4_RSTN_MASK_DISABLE (0x0UL << CPR_RSTCTL_WDTRST_MASK_WDT_M4_RSTN_MASK_Pos) /*!< 0�������� */
|
||
#define CPR_RSTCTL_WDTRST_MASK_WDT_M4_RSTN_MASK_ENABLE (0x1UL << CPR_RSTCTL_WDTRST_MASK_WDT_M4_RSTN_MASK_Pos) /*!< 1������*/
|
||
#define RSTN_VALID (0UL)
|
||
#define RSTN_INVALID (1UL)
|
||
#define PARAM_ADDR ((8*1024)-512)
|
||
#define FLASH_VIR_AADDR 0x11000000
|
||
#define ALIGN(num) __attribute__((aligned(num)))
|
||
|
||
//#define FLASH_READ_PAGE spi_flash_Read_Page
|
||
//#define FLASH_SECTOR_ERASE spi_flash_sector_erase
|
||
//#define SPI_WRITE_ENABLE spi_flash_write_enable
|
||
//#define FLASH_WRITE_PAGE xc_spi_flash_write_page
|
||
//#define FLASH_WAIT_READY while (spi_flash_wait_till_ready())
|
||
#define FLASH_READ_PAGE xc_spi_flash_read_page
|
||
#define FLASH_SECTOR_ERASE xc_spi_flash_erase_sector
|
||
#define FLASH_PAGE_ERASE xc_spi_flash_erase_page
|
||
#define SPI_WRITE_ENABLE
|
||
#define FLASH_WRITE_PAGE xc_spi_flash_write_page
|
||
#define FLASH_WAIT_READY
|
||
|
||
typedef struct
|
||
{
|
||
uint32_t status; /**/
|
||
uint32_t softver; /**/
|
||
uint32_t acheck; /*crc32*/
|
||
uint32_t aaddr; /*sector align*/
|
||
uint32_t alen; /*page align*/
|
||
uint32_t bcheck; /**/
|
||
uint32_t baddr; /**/
|
||
uint32_t blen; /**/
|
||
uint32_t aloadaddr;
|
||
uint32_t bloadaddr;
|
||
uint32_t RESERVED0[2];
|
||
} param_unit;
|
||
|
||
typedef struct
|
||
{
|
||
param_unit paramunit[PARAM_CNT];
|
||
uint32_t paramcrc32;
|
||
uint32_t RESERVED1[3];
|
||
} sboot_message;
|
||
void boot_run_sec(void);
|
||
extern volatile uint32_t param_backup_addr;
|
||
void boot_run(void);
|
||
void param_analy(param_unit *sParam);
|
||
__RAM_CODE __asm void MSR_MSP(uint32_t addr);
|
||
void flash_init(void);
|
||
void overwrite_backup(param_unit *oparam);
|
||
int uart_printf(const char *fmt,...);
|
||
#endif
|