CI130X SDK API手册  2.2.0
本手册用于描述CI130X SDK各个组件和驱动API
flash_update.h
浏览该文件的文档.
1 
9 #ifndef __FLASH_UPDATE__
10 #define __FLASH_UPDATE__
11 
12 #include "stdint.h"
13 #include "ci130x_spiflash.h"
14 
15 /**************************************************************************
16  debug macro
17 ****************************************************************************/
18 //#define BOOTLOADER_DEBUG_BY_UART
19 //#define SRAM_DebugMode //Need switch *.icf between xxx_SRAM.icf & xxx_SDRAM.icf files in project path
20 
21 #define FLASH_SPI_PORT QSPI0
22 
23 #ifdef BOOTLOADER_DEBUG_BY_UART
24 enum BOOTLOADER_LOG_LEVEL
25 {
26  BOOTLOADER_LOG_ERROR = 0,
27  BOOTLOADER_LOG_WARN,
28  BOOTLOADER_LOG_DEBUG,
29  BOOTLOADER_LOG_INFO,
30 };
31 
32 
33 #define BOOTLOADER_DEBUG_LEVEL BOOTLOADER_LOG_INFO
34 
35 /*need open SecureCRT ansi color*/
36 #define bootloader_loginfo(fmt, args...) do { if (BOOTLOADER_DEBUG_LEVEL>=BOOTLOADER_LOG_INFO) mprintf(fmt, ## args); } while(0)
37 #define bootloader_logdebug(fmt, args...) do { if (BOOTLOADER_DEBUG_LEVEL>=BOOTLOADER_LOG_DEBUG) mprintf(fmt, ## args); } while(0)
38 #define bootloader_logwar(fmt, args...) do { if (BOOTLOADER_DEBUG_LEVEL>=BOOTLOADER_LOG_WARN) mprintf("\x1b[35m"fmt"\x1b[0m", ## args); } while(0)
39 #define bootloader_logerr(fmt, args...) do { if (BOOTLOADER_DEBUG_LEVEL>=BOOTLOADER_LOG_ERROR) mprintf("\x1b[31m"fmt"\x1b[0m", ## args); } while(0)
40 
41 #define bootloader_assert(x) if( ( x ) == 0 ) { while(1); }
42 #else
43 #define bootloader_loginfo(fmt, args...) do{}while(0)
44 #define bootloader_logdebug(fmt, args...) do{}while(0)
45 #define bootloader_logwar(fmt, args...) do{}while(0)
46 #define bootloader_logerr(fmt, args...) do{}while(0)
47 #define bootloader_assert(x) do{}while(0)
48 #endif
49 
50 
51 /*updater vesion define*/
52 #define BOOT_LOADER_NEW_STR "V20102"
53 #define BOOT_LOADER_NEW_MAJOR 0x02
54 #define BOOT_LOADER_NEW_MINOR 0x01
55 #define BOOT_LOADER_NEW_RELEASE 0x02
56 
57 
58 #define USER_CODE_AREA_STA_UPDATE 0xFC
59 #define USER_CODE_AREA_STA_OK 0xF0
60 #define USER_CODE_AREA_STA_OLD 0xC0
61 
62 /**************************************************************************
63  type define
64 ****************************************************************************/
65 //#define DEBUG
66 
67 //TYPE
68 #define MSG_TYPE_CMD 0xA0
69 #define MSG_TYPE_REQ 0xA1
70 #define MSG_TYPE_ACK 0xA2
71 #define MSG_TYPE_NOTIFY 0xA3
72 //CMD
73 #define MSG_CMD_UPDATE_REQ 0x03
74 #define MSG_CMD_GET_INFO 0x04
75 #define MSG_CMD_UPDATE_CHECK_READY 0x05
76 #define MSG_CMD_UPDATE_BLOCK_INFO 0x06
77 #define MSG_CMD_UPDATE_ERA 0x07
78 #define MSG_CMD_UPDATE_WRITE 0x08
79 #define MSG_CMD_UPDATE_BLOCK_WRITE_DONE 0x09
80 #define MSG_CMD_UPDATE_VERIFY 0x0A
81 #define MSG_CMD_TRY_FAST_BD 0x0b
82 #define MSG_CMD_TRY_FAST_BD_TEST 0x0c
83 #define MSG_CMD_UPDATE_READ 0x0d
84 #define MSG_CMD_UPDATE_COMPLETE 0x0e
85 #define MSG_CMD_UPDATE_EXTERNAL_DEV 0x10
86 #define MSG_CMD_UPDATE_PROGRESS 0x11
87 
88 #define MSG_CMD_TESTCMD 0xA0 //测试命令
89 #define MSG_CMD_SYS_RST 0xA1 //复位命令
90 
91 //LENGTH
92 #define MSG_LEN_UPDATE_REQ 0x00 //0x01
93 #define MSG_LEN_GET_INFO 0x08
94 #define MSG_LEN_UPDATE_CHECK_READY 0x00
95 #define MSG_LEN_UPDATE_BLOCK_INFO 0x00
96 #define MSG_LEN_UPDATE_ERA 0x00
97 #define MSG_LEN_UPDATE_WRITE 0x08
98 #define MSG_LEN_UPDATE_BLOCK_WRITE_DONE 0x00
99 #define MSG_LEN_UPDATE_VERIFY 0x01
100 #define MSG_LEN_TRY_FAST_BD 0x04
101 #define MSG_LEN_TRY_FAST_BD_TEST 0x00 //Input size
102 #define MSG_LEN_UPDATE_READ 0x00 //Input size +4
103 #define MSG_LEN_UPDATE_COMPLETE 0x01
104 
105 #define FILECONFIG_SPIFLASH_START_ADDR (0x8000)
106 #define FILECONFIG_SPIFLASH_SIZE (4096)
107 
108 #define USERCODE_MAX_SIZE (1024*448)
109 #define USERCODE_PER_SIZE (4096)
110 
111 #define CMPT_STATUS_FAIL (0xFF)
112 #define CMPT_STATUS_OK (0x00)
113 
114 #define UNIQUE_ID_LENGTH 16
115 
116 //接收,发送数据结构
117 typedef struct
118 {
119  uint16_t msg_head;
120  uint16_t length;
121  uint8_t type;
122  uint8_t cmd;
123  uint8_t number;
124  uint8_t *data;
125  uint16_t crc;
126  uint8_t msg_tail;
127 }Data_t,*Data_p;
128 
129 
130 #pragma pack(1)
131 typedef struct
132 {
133  uint32_t ManufacturerID; //32Bit
134  uint32_t ProductID[2]; //64Bit (MAC Address)
135 //
136  uint32_t HWName[16]; //String
137  uint32_t HWVersion; //Vm.n.x.y
138  uint32_t SWName[16]; //String,Exporting to Packet file name
139  uint32_t SWVersion; //Vm.n.x.y
140 //
141  uint32_t BootLoaderVersion; //Vm.n.x.y
142  uint8_t Reserve[14]; //一代用于updater,现在updater放FLASH中了,这些字段空间保留
143 //
146  uint32_t UserCode1Size;
147  uint32_t UserCode1CRC;
149 //
152  uint32_t UserCode2Size;
153  uint32_t UserCode2CRC;
155 //
158  uint32_t ASRCMDModelSize;
159  uint32_t ASRCMDModelCRC;
161 //
162  uint32_t DNNModelVersion;
164  uint32_t DNNModelSize;
165  uint32_t DNNModelCRC;
167 //
171  uint32_t VoicePlayingCRC;
173 //
174  uint32_t UserFileVersion;
176  uint32_t UserFileSize;
177  uint32_t UserFileCRC;
179 //
182 
185 #pragma pack()
186 
187 
188 //发送函数
189 void send_func(void);
190 
191 //接收函数
192 void receive_func(uint8_t receive_char);
193 
194 //数据包处理函数
195 void Resolution_func();
196 
197 //CRC校验函数
198 uint16_t crc_func(uint16_t crc,uint8_t * buf,uint32_t len);
199 
200 int32_t flash_update_buf_init(void);
201 
202 void send_req_update_req_packet(void);
203 void send_req_update_write_packet(uint32_t offset,uint32_t size);
204 void send_req_update_write_packet_ex(uint32_t index,uint32_t offset,uint32_t size);
206 
207 void send_ack_get_info_packet(void);
210 void send_ack_update_era_packet(void);
211 void send_ack_update_verify_packet(uint8_t verify);
212 void send_ack_try_fast_bd_packet(void);
213 void send_ack_try_fast_bd_test_packet(uint32_t size);
214 void send_ack_update_read_packet(uint32_t StartAddr, uint32_t Size);
217 void send_ack_system_reset(void);
218 void send_notify_progress_packet(int index, int current, int total);
219 int32_t get_update_state(void);
220 void set_update_complete_status(void);
221 
222 int32_t check_req_ack(void);
223 int32_t have_a_new_message(void);
224 int32_t check_req_recv(void);
225 
226 
227 #endif
uint32_t HWVersion
Definition: flash_update.h:137
uint32_t VoicePlayingStartAddr
Definition: flash_update.h:169
uint32_t UserCode2Version
Definition: flash_update.h:150
uint32_t VoicePlayingVersion
Definition: flash_update.h:168
uint8_t cmd
Definition: flash_update.h:122
void send_ack_system_reset(void)
Definition: flash_update.c:569
SPIFLASH驱动文件
void send_ack_update_block_info_packet(void)
Definition: flash_update.c:605
void receive_func(uint8_t receive_char)
Definition: flash_update.c:219
uint32_t VoicePlayingSize
Definition: flash_update.h:170
uint32_t VoicePlayingCRC
Definition: flash_update.h:171
uint32_t SWVersion
Definition: flash_update.h:139
void send_req_update_req_packet(void)
Definition: flash_update.c:540
uint16_t crc
Definition: flash_update.h:125
uint32_t UserCode1CRC
Definition: flash_update.h:147
uint32_t UserFileSize
Definition: flash_update.h:176
uint16_t msg_head
Definition: flash_update.h:119
uint32_t ConsumerDataSize
Definition: flash_update.h:181
void send_ack_update_era_packet(void)
Definition: flash_update.c:611
uint32_t ASRCMDModelVersion
Definition: flash_update.h:156
uint32_t UserFileStartAddr
Definition: flash_update.h:175
void set_update_complete_status(void)
Definition: flash_update.c:674
void send_ack_update_check_ready_packet(void)
Definition: flash_update.c:599
uint8_t UserCode2CompltStatus
Definition: flash_update.h:154
Definition: flash_update.h:117
void send_req_update_block_write_done_packet(void)
Definition: flash_update.c:563
void Resolution_func()
Definition: flash_update.c:340
uint8_t UserCode1CompltStatus
Definition: flash_update.h:148
uint8_t number
Definition: flash_update.h:123
void send_func(void)
Definition: flash_update.c:190
void send_notify_progress_packet(int index, int current, int total)
Definition: flash_update.c:655
uint32_t UserCode2CRC
Definition: flash_update.h:153
void send_ack_update_complet_packet(void)
Definition: flash_update.c:649
uint32_t BootLoaderVersion
Definition: flash_update.h:141
void send_ack_update_verify_packet(uint8_t verify)
Definition: flash_update.c:617
uint32_t UserCode1StartAddr
Definition: flash_update.h:145
uint16_t length
Definition: flash_update.h:120
uint32_t ASRCMDModelSize
Definition: flash_update.h:158
uint16_t crc_func(uint16_t crc, uint8_t *buf, uint32_t len)
Definition: flash_update.c:518
int32_t get_update_state(void)
Definition: flash_update.c:662
uint32_t UserCode2Size
Definition: flash_update.h:152
uint32_t UserCode2StartAddr
Definition: flash_update.h:151
void send_req_update_write_packet(uint32_t offset, uint32_t size)
Definition: flash_update.c:546
int32_t check_req_recv(void)
uint32_t offset
Definition: flash_update.c:82
uint32_t ManufacturerID
Definition: flash_update.h:133
uint8_t type
Definition: flash_update.h:121
uint32_t DNNModelCRC
Definition: flash_update.h:165
int32_t have_a_new_message(void)
Definition: flash_update.c:720
int32_t flash_update_buf_init(void)
Definition: flash_update.c:133
void send_ack_update_extern_dev_packet(void)
uint32_t DNNModelStartAddr
Definition: flash_update.h:163
void send_ack_try_fast_bd_packet(void)
Definition: flash_update.c:624
struct Data_t * Data_p
void send_ack_try_fast_bd_test_packet(uint32_t size)
Definition: flash_update.c:630
uint8_t DNNModelCompltStatus
Definition: flash_update.h:166
uint8_t * data
Definition: flash_update.h:124
uint32_t DNNModelSize
Definition: flash_update.h:164
int32_t check_req_ack(void)
uint32_t UserCode1Version
Definition: flash_update.h:144
uint8_t ASRCMDModelCompltStatus
Definition: flash_update.h:160
void send_ack_get_info_packet(void)
Definition: flash_update.c:578
uint32_t ConsumerDataStartAddr
Definition: flash_update.h:180
uint32_t UserFileCRC
Definition: flash_update.h:177
Definition: flash_update.h:131
uint32_t ASRCMDModelStartAddr
Definition: flash_update.h:157
uint8_t UserFileCompltStatus
Definition: flash_update.h:178
uint32_t DNNModelVersion
Definition: flash_update.h:162
void send_ack_update_read_packet(uint32_t StartAddr, uint32_t Size)
Definition: flash_update.c:641
uint16_t PartitionTableChecksum
Definition: flash_update.h:183
uint32_t UserFileVersion
Definition: flash_update.h:174
uint8_t msg_tail
Definition: flash_update.h:126
uint8_t VoicePlayingCompltStatus
Definition: flash_update.h:172
uint32_t ASRCMDModelCRC
Definition: flash_update.h:159
uint32_t UserCode1Size
Definition: flash_update.h:146
void send_req_update_write_packet_ex(uint32_t index, uint32_t offset, uint32_t size)
Definition: flash_update.c:554