#ifndef __MYFLASH_H__ #define __MYFLASH_H__ #include #include #include #include "application.h" #define VECT_TAB_OFFSET 0xC000 #define DRONECAN_INFO_ADDR 0x08009000 #define IAP_FLAG_ADDR 0x0800A000 #define DEV_INFO_ADDR 0x0800A800 #define CONF_INFO_ADDR 0x0800B000 #define BOOT_INFO_ADDR 0x0800B800 #define IAP_UN_FLAG 0x00000000 #define IAP_FLAG 0x12345678 #define FLASH_APP1_ADDR 0x0800C000 #define FLASH_PAGE_SIZE 0x800 // page 2k #define UID_ADDR 0x1FFFF7F0 #define BOOT_VERSION 51104U uint32_t flash_read_32bit( uint32_t addr ); //????? void flash_write_32bit( uint32_t addr, uint32_t data ); int flash_erase_page( uint32_t addr ); void flash_read( uint32_t address, uint8_t *data, uint32_t length ); int flash_write( uint32_t address, uint8_t *data, uint32_t length ); void write_iap_flag( void ); #define DRONECAN_UPDATE_CONTEXT_MAGIC 0x44554331UL /* "DUC1" */ #define DRONECAN_UPDATE_CONTEXT_VERSION 1U #define DRONECAN_FILE_PATH_MAX_LENGTH 200U #define DRONECAN_UPDATE_CONTEXT_ADDR DRONECAN_INFO_ADDR #define DRONECAN_UPDATE_STATE_PENDING 1U typedef struct { uint32_t magic; uint16_t version; uint16_t size; uint32_t crc32; uint8_t state; /* PENDING / DOWNLOADING / FAILED */ uint8_t local_node_id; uint8_t file_server_node_id; uint8_t upgradeEable; uint32_t can_bitrate; uint8_t path_length; uint8_t path[DRONECAN_FILE_PATH_MAX_LENGTH]; } DroneCAN_UpdateContext; extern DroneCAN_UpdateContext dronecanUpdateInfo; uint32_t DroneCAN_UpdateContextCalcCRC32( const DroneCAN_UpdateContext *context ); int DroneCAN_UpdateContextWrite( void ); extern uint8_t uid[12]; void read_uid( uint8_t *uid ); #define IAP_VFLAG 0x1001 typedef struct _iap_info { uint32_t ValidFlag; uint32_t UpgradeFlag; } IAP_INFO; extern IAP_INFO iap_info; void read_iap_info( void ); void write_iap_info( void ); #define DEVINFO_VFLAG 0x1001 typedef struct _dev_info { uint32_t sn; uint32_t ValidFlag; uint32_t upgradeMode; char dev_name[32]; uint32_t hard_ver; uint32_t soft_ver; } DEVICE_INFO; extern DEVICE_INFO devInfo; void read_dev_info( void ); void write_dev_info( void ); void check_dev_info( void ); #define CONFPAR_VFLAG 0x1001 typedef struct _conf_info { uint32_t ValidFlag; uint32_t DeviceType; // 6: 4D_Front 7:4D_Rear 8:4D_Terrain uint16_t MaxDist; // 最大识别距离 (保留) uint16_t PowerFilterLevel; // 能量过滤等级 uint16_t RawDataFlag; // 数据采集标志 0:关闭,1:开启 int16_t CompensateAngle; // 安装偏差角度 uint16_t HeightFilterValue; // 高度过滤系数 uint16_t BlindDistance; // 盲区距离 uint16_t upgradeMode; // 雷达升级模式 0:VK 1:dronecan uint16_t canBitrate; // CAN BITRATE uint16_t ReserveValue_3; // 保留 uint16_t ReserveValue_4; // 保留 } CONF_INFO; extern CONF_INFO confInfo; void read_conf_info( void ); void write_conf_info( void ); void check_conf_info( void ); #define BOOT_VFLAG 0x1001 typedef struct _boot_info { uint32_t validFlag; uint16_t boot_version; // boot版本信息 uint32_t boot_bak; // 预留备份 } BOOT_INFO; extern BOOT_INFO bootInfo; void read_boot_info( void ); void write_boot_info( void ); void check_boot_info( BOOT_INFO *info ); #endif /*__MYFLASH_H__*/