dri_Flash.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. #ifndef __MYFLASH_H__
  2. #define __MYFLASH_H__
  3. #include <stdint.h>
  4. #include <n32g45x_flash.h>
  5. #include <stdio.h>
  6. #include "application.h"
  7. #define VECT_TAB_OFFSET 0xC000
  8. #define DRONECAN_INFO_ADDR 0x08009000
  9. #define IAP_FLAG_ADDR 0x0800A000
  10. #define DEV_INFO_ADDR 0x0800A800
  11. #define CONF_INFO_ADDR 0x0800B000
  12. #define BOOT_INFO_ADDR 0x0800B800
  13. #define IAP_UN_FLAG 0x00000000
  14. #define IAP_FLAG 0x12345678
  15. #define FLASH_APP1_ADDR 0x0800C000
  16. #define FLASH_PAGE_SIZE 0x800 // page 2k
  17. #define UID_ADDR 0x1FFFF7F0
  18. #define BOOT_VERSION 51104U
  19. uint32_t flash_read_32bit( uint32_t addr ); //?????
  20. void flash_write_32bit( uint32_t addr, uint32_t data );
  21. int flash_erase_page( uint32_t addr );
  22. void flash_read( uint32_t address, uint8_t *data, uint32_t length );
  23. int flash_write( uint32_t address, uint8_t *data, uint32_t length );
  24. void write_iap_flag( void );
  25. #define DRONECAN_UPDATE_CONTEXT_MAGIC 0x44554331UL /* "DUC1" */
  26. #define DRONECAN_UPDATE_CONTEXT_VERSION 1U
  27. #define DRONECAN_FILE_PATH_MAX_LENGTH 200U
  28. #define DRONECAN_UPDATE_CONTEXT_ADDR DRONECAN_INFO_ADDR
  29. #define DRONECAN_UPDATE_STATE_PENDING 1U
  30. typedef struct
  31. {
  32. uint32_t magic;
  33. uint16_t version;
  34. uint16_t size;
  35. uint32_t crc32;
  36. uint8_t state; /* PENDING / DOWNLOADING / FAILED */
  37. uint8_t local_node_id;
  38. uint8_t file_server_node_id;
  39. uint8_t upgradeEable;
  40. uint32_t can_bitrate;
  41. uint8_t path_length;
  42. uint8_t path[DRONECAN_FILE_PATH_MAX_LENGTH];
  43. } DroneCAN_UpdateContext;
  44. extern DroneCAN_UpdateContext dronecanUpdateInfo;
  45. uint32_t DroneCAN_UpdateContextCalcCRC32( const DroneCAN_UpdateContext *context );
  46. int DroneCAN_UpdateContextWrite( void );
  47. extern uint8_t uid[12];
  48. void read_uid( uint8_t *uid );
  49. #define IAP_VFLAG 0x1001
  50. typedef struct _iap_info
  51. {
  52. uint32_t ValidFlag;
  53. uint32_t UpgradeFlag;
  54. } IAP_INFO;
  55. extern IAP_INFO iap_info;
  56. void read_iap_info( void );
  57. void write_iap_info( void );
  58. #define DEVINFO_VFLAG 0x1001
  59. typedef struct _dev_info
  60. {
  61. uint32_t sn;
  62. uint32_t ValidFlag;
  63. uint32_t upgradeMode;
  64. char dev_name[32];
  65. uint32_t hard_ver;
  66. uint32_t soft_ver;
  67. } DEVICE_INFO;
  68. extern DEVICE_INFO devInfo;
  69. void read_dev_info( void );
  70. void write_dev_info( void );
  71. void check_dev_info( void );
  72. #define CONFPAR_VFLAG 0x1001
  73. typedef struct _conf_info
  74. {
  75. uint32_t ValidFlag;
  76. uint32_t DeviceType; // 6: 4D_Front 7:4D_Rear 8:4D_Terrain
  77. uint16_t MaxDist; // 最大识别距离 (保留)
  78. uint16_t PowerFilterLevel; // 能量过滤等级
  79. uint16_t RawDataFlag; // 数据采集标志 0:关闭,1:开启
  80. int16_t CompensateAngle; // 安装偏差角度
  81. uint16_t HeightFilterValue; // 高度过滤系数
  82. uint16_t BlindDistance; // 盲区距离
  83. uint16_t upgradeMode; // 雷达升级模式 0:VK 1:dronecan
  84. uint16_t canBitrate; // CAN BITRATE
  85. uint16_t ReserveValue_3; // 保留
  86. uint16_t ReserveValue_4; // 保留
  87. } CONF_INFO;
  88. extern CONF_INFO confInfo;
  89. void read_conf_info( void );
  90. void write_conf_info( void );
  91. void check_conf_info( void );
  92. #define BOOT_VFLAG 0x1001
  93. typedef struct _boot_info
  94. {
  95. uint32_t validFlag;
  96. uint16_t boot_version; // boot版本信息
  97. uint32_t boot_bak; // 预留备份
  98. } BOOT_INFO;
  99. extern BOOT_INFO bootInfo;
  100. void read_boot_info( void );
  101. void write_boot_info( void );
  102. void check_boot_info( BOOT_INFO *info );
  103. #endif /*__MYFLASH_H__*/