diff --git a/.gitignore b/.gitignore index 652094c..5d9d2cc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ OBJ/ USER/JLinkLog.txt USER/JLinkSettings.ini -USER/.uvguix.Admin +USER/IAP.uvguix.Admin USER/uvguix.Administrator USER/DebugConfig/ diff --git a/CORE/startup_stm32f40_41xxx.s b/CORE/startup_stm32f40_41xxx.s index f410a45..dd66b5b 100644 --- a/CORE/startup_stm32f40_41xxx.s +++ b/CORE/startup_stm32f40_41xxx.s @@ -38,7 +38,7 @@ ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> ; -Stack_Size EQU 0x00000400 +Stack_Size EQU 0x00000C00 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size @@ -178,7 +178,7 @@ Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT SystemInit IMPORT __main - + LDR R0, =SystemInit BLX R0 LDR R0, =__main diff --git a/HARDWARE/FLASH/flash.c b/HARDWARE/FLASH/flash.c index fd8de81..599851f 100644 --- a/HARDWARE/FLASH/flash.c +++ b/HARDWARE/FLASH/flash.c @@ -4,8 +4,6 @@ u32 STMFLASH_ReadWord(u32 faddr) { return *(vu32*)faddr; } - - uint16_t STMFLASH_GetFlashSector(u32 addr) { if(addr 0) { - if(strncmp((char *)UART_RX_BUF,"ACK",sizeof("ACK")) == 0) //确认数据 - { - Uart5_Send(Ok,sizeof(Ok)); - handle = BOOTLOADER_RUN; - STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4); - } - else if(strncmp((char *)UART_RX_BUF,"START",sizeof("START")) == 0) //启动传输 - { - Uart5_Send(Ok,sizeof(Ok)); - Clear_Uart5_Cache(); - UART_FINISH = false; - - while(UART_FINISH != true); - - printf("receive %d Bytes msg\r\n",&UART_RX_CNT); - Uart5_Send(Ok,sizeof(Ok)); - - crc = GenerateCRC16(UART_RX_BUF,UART_RX_CNT-2); - printf("CACL = %x\r\n",crc); + if (uart5_read_byte((uint8_t *)&buf_rx5[i]) == 1) + { + i++; + if(i>20) + { + i=0; + } - if(crc == ((UART_RX_BUF[UART_RX_CNT-2] << 8 ) | UART_RX_BUF[UART_RX_CNT-1])) + if((strcmp(buf_rx5,"BBBBBBBBBBBBBBBBBBBB"))==0) { - STMFLASH_Write(APP_RUN_ADDR,(uint32_t *)UART_RX_BUF,UART_RX_CNT - 2); - - Uart5_Send(Success,sizeof(Success)); + IAP_Port=UART5; + return LOCAL_BOOT_FROM_UART5; } - else + } + if (usart1_read_byte((uint8_t *)&buf_rx1[j]) == 1) + { + j++; + if(i>20) { - Uart5_Send(Fail,sizeof(Fail)); + i=0; + } + + if((strcmp(buf_rx1,"BBBBBBBBBBBBBBBBBBBB"))==0) + { + IAP_Port=USART1; + return LOCAL_BOOT_FROM_USART1; } - printf("CRC = %x\r\n",crc); - } - else if(strncmp((char *)UART_RX_BUF,"CANCEL",sizeof("CANCEL")) == 0 ) //返回 - { - Uart5_Send(Ok,sizeof(Ok)); - break; - } - else - { - Uart5_Send(Incorrect,sizeof(Incorrect)); - } - - Clear_Uart5_Cache(); - UART_FINISH = false; - UART5_Mode(RS485_READ); + } } + } + return LOCAL_BOOT_NONE; } - - - - -/****************************************************** -* @brief: 检测是否有触发本地升级 -* @param: -* @retva: -* @note: -********************************************************/ -uint8_t Update[] = "Enter Local Update\r\n"; -void Detection_Update(void) +void uart_boot(void) { - uint8_t i ; - - for(i=0;i0) { - return LOCAL_BOOT_FROM_USART1; + printf("Received file name:\t\t\t\t%s\r\n",FileName); + printf("Received file length:\t\t\t\t%s\r\n",file_size); } else { - // not detected + printf("Failure of ymodem receive!\r\n"); + assert_param(0); } - } - return LOCAL_BOOT_NONE; + load_process(); } +void load_process(void) +{ + uint32_t flag =0; - - + printf("Fireware detected,now loading...\r\n"); + printf("Erasing!\t\t\t\t\t"); + if(0 == STM_FLASH_Erase(APP_RUN_ADDR)) + { + printf("failure\r\n"); + assert_param(0); + } + if(0 == STM_FLASH_Erase(FLAG_BASE_ADDR)) + { + printf("failure\r\n"); + assert_param(0); + } + printf("success\r\n"); + printf("Programing !\t\t\t\t\t"); + if(1 == STMFLASH_Write(APP_RUN_ADDR,(uint32_t *)APP_LOAD_ADDR,STM_FLASH_Get_Block_Size(APP_RUN_ADDR))) + { + printf("failure!\r\n"); + assert_param(0); + } + flag =BOOTLOADER_RUN; + if(1 == STMFLASH_Write(FLAG_BASE_ADDR,&flag,4)) + { + printf("failure!\r\n"); + assert_param(0); + } + printf("success\r\n"); + + app_run(); +} +void app_run(void) +{ + if(0==Run_Flash_App(APP_RUN_ADDR)) + { + printf("Run app failure!the firmware may be damaged!\r\n"); + uart_boot(); + } +} diff --git a/IAP/iap.h b/IAP/iap.h index 8c3586d..0784a66 100644 --- a/IAP/iap.h +++ b/IAP/iap.h @@ -2,21 +2,28 @@ #define __IAP_H__ #include "dev.h" -#define WAIT_TIME 5 //秒 - -typedef void (*iapfun)(void); //定义一个函数类型的参数. +#define LOCAL_WAITE_TIME 8 //秒 +uint8_t uart_boot_detect(void); +void uart_boot(void); +void load_process(void); +void app_run(void); -void Run_Flash_App(uint32_t appxaddr); //跳转到APP程序执行 +typedef void (*iapfun)(void); //定义一个函数类型的参数. -//void Local_Update(void); -void Detection_Update(void); +uint8_t Run_Flash_App(uint32_t appxaddr); //跳转到APP程序执行 +//void Local_Update(void); +void Detection_Update(void); +void display_bootloader_exit_information(void); +void display_bootloader_extry_information(void); #define LOCAL_BOOT_FROM_UART5 2 #define LOCAL_BOOT_FROM_USART1 1 #define LOCAL_BOOT_NONE 0 +//#define USER_FLASH_SIZE (192*1024) + #endif diff --git a/IAP/ymodem.c b/IAP/ymodem.c new file mode 100644 index 0000000..a0de521 --- /dev/null +++ b/IAP/ymodem.c @@ -0,0 +1,330 @@ +#include "ymodem.h" +#include "string.h" +#include "stdlib.h" +#include "flash.h" +#include "usart1.h" +#include "uart5.h" +#include "delay.h" + +USART_TypeDef * IAP_Port = UART5; + +uint8_t FileName[FILE_NAME_LENGTH];//array to store filename of download *.bin +char file_size[FILE_SIZE_LENGTH]; +uint8_t buf_1k[1024] ={0}; + +/********************************************/ +//移植的时候,由于函数定义了局部大数组,需要修改堆栈的大小。 +//下面是需要移植的函数 +static uint32_t SerialKeyPressed(uint8_t *key); +static int32_t Receive_Byte(uint8_t *c, uint32_t timeout); +int32_t Ymodem_Receive (uint8_t *buf, uint32_t appaddr); +uint32_t STM_FLASH_Erase(uint32_t addrx); +uint32_t STM_FLASH_Get_Block_Size(uint32_t addrx); +uint32_t STMFLASH_Write(u32 WriteAddr,u32 *pBuffer,u32 NumToWrite); +/********************************************/ + +//check if one byte rx successfully +//key: variabl to store rx data +//return: 1=success, 0=fail +static uint32_t SerialKeyPressed(uint8_t *key) +{ + if(IAP_Port == UART5) + { + return uart5_read_byte(key); + } + else + { + return usart1_read_byte(key); + } +} +//Rx a byte from sender +//c: variable to store data +//timeout: read time out +//return: 0=success, -1=fail +static int32_t Receive_Byte (uint8_t *c, uint32_t timeout) +{ + while (timeout-- > 0) + { + if (SerialKeyPressed(c) == 1) + { + return 0; + } + } + return -1; +} +//send a byte via IAP_Port +//c: byte to send +//return: 0 +static uint32_t Send_Byte (uint8_t c) +{ + if(IAP_Port == UART5) + { + uart5_send_byte(c); + } + else + { + usart1_send_byte(c); + } + return 0; +} +/** + * @brief Update CRC16 for input byte + * @param crc_in input value + * @param input byte + * @retval None + */ +uint16_t UpdateCRC16(uint16_t crc_in, uint8_t byte) +{ + uint32_t crc = crc_in; + uint32_t in = byte | 0x100; + + do + { + crc <<= 1; + in <<= 1; + if(in & 0x100) + ++crc; + if(crc & 0x10000) + crc ^= 0x1021; + } + + while(!(in & 0x10000)); + + return crc & 0xffffu; +} + +/** + * @brief Cal CRC16 for YModem Packet + * @param data + * @param length + * @retval None + */ +uint16_t Cal_CRC16(const uint8_t* p_data, uint32_t size) +{ + uint32_t crc = 0; + const uint8_t* dataEnd = p_data+size; + + while(p_data < dataEnd) + crc = UpdateCRC16(crc, *p_data++); + + crc = UpdateCRC16(crc, 0); + crc = UpdateCRC16(crc, 0); + + return crc&0xffffu; +} + +//Rx a packet from sender +//data: pointer to store rx data +//length: packet length +//timeout: rx time out +//return:0=normally return +// -1=timeout or packet error +// 1=abort by user +static int32_t Receive_Packet (uint8_t *data, int32_t *length, uint32_t timeout) +{ + uint16_t i, packet_size; + uint8_t c; + uint32_t crc=0; + + *length = 0; + if (Receive_Byte(&c, timeout) != 0) + { + return -1; + } + switch (c) + { + case SOH: + packet_size = PACKET_SIZE; + break; + case STX: + packet_size = PACKET_1K_SIZE; + break; + case EOT: + return 0; + case CA: + if ((Receive_Byte(&c, timeout) == 0) && (c == CA)) + { + *length = -1; + return 0; + } + else + { + return -1; + } + case ABORT1: + case ABORT2: + return 1; + default: + return -1; + } + + *data = c; + for (i = 1; i < (packet_size + PACKET_OVERHEAD); i ++) + { + if (Receive_Byte(data + i, timeout) != 0) + { + return -1; + } + } + + crc = data[ packet_size + PACKET_HEADER ] << 8; + crc += data[ packet_size + PACKET_HEADER + 1 ]; + if (Cal_CRC16(&data[PACKET_HEADER], packet_size) != crc ) + { + packet_size = 0; + return -1; + } + *length = packet_size; + return 0; +} + + +//Receive a file using the ymodem protocol +//buf: pointer for data storage +//appaddr: User Application address +//return: size of IAP file +int32_t Ymodem_Receive (uint8_t *buf, uint32_t appaddr) +{ + uint8_t packet_data[PACKET_1K_SIZE + PACKET_OVERHEAD], *file_ptr, *buf_ptr,flag_EOT; + int32_t i, packet_length, session_done, file_done, packets_received, errors, session_begin, size = 0; + uint32_t flashdestination, ramsource; + + //Initialize flashdestination variable + flashdestination = appaddr; + flag_EOT = 0; + for (session_done = 0, errors = 0, session_begin = 0; ;) + { + for (packets_received = 0, file_done = 0, buf_ptr = buf; ;) + { + switch (Receive_Packet(packet_data, &packet_length, NAK_TIMEOUT)) + { + case 0: + errors = 0; + switch (packet_length) + { + /* Abort by sender */ + case - 1: + Send_Byte(ACK); + return 0; + /* End of transmission */ + case 0: + if(flag_EOT==0) //first EOT + { + Send_Byte(NACK); + flag_EOT = 1; + } + else if (flag_EOT==1) //second EOT + { + Send_Byte(ACK); + Send_Byte('C'); + file_done = 1; + } + break; + /* Normal packet */ + default: + if ((packet_data[PACKET_SEQNO_INDEX] & 0xff) != (packets_received & 0xff)) + { + Send_Byte(NACK);//local data sequence number is different to rx data packet. + } + else + { + if (packets_received == 0) + { + /* Filename packet */ + if (packet_data[PACKET_HEADER] != 0) + { + /* Filename packet has valid data */ + for (i = 0, file_ptr = packet_data + PACKET_HEADER; (*file_ptr != 0) && (i < FILE_NAME_LENGTH);) + { + FileName[i++] = *file_ptr++; + } + FileName[i++] = '\0'; + + for (i = 0, file_ptr ++; (*file_ptr != ' ') && (i < FILE_SIZE_LENGTH);) + { + file_size[i++] = *file_ptr++; + } + file_size[i++] = '\0'; + size = atoi(file_size); + + /* Test the size of the image to be sent */ + /* Image size is greater than Flash size */ + if (size > (int32_t)(STM_FLASH_Get_Block_Size(flashdestination) + 1)) + { + /* End session */ + Send_Byte(CA); + Send_Byte(CA); + return -1; + } + /* erase user application area */ + + + STM_FLASH_Erase(flashdestination); + + Send_Byte(ACK); + Send_Byte(CRC16); + } + /* Filename packet is empty, end session */ + else + { + Send_Byte(ACK); + file_done = 1; + session_done = 1; + break; + } + } + /* Data packet */ + else + { + memcpy(buf_ptr, packet_data + PACKET_HEADER, packet_length); + ramsource = (uint32_t)buf_ptr; + + /* Write received data in Flash */ + if (STMFLASH_Write(flashdestination, (uint32_t*)ramsource, (uint16_t) packet_length) == 0) + { + flashdestination+=packet_length; + Send_Byte(ACK); + } + else /* An error occurred while writing to Flash memory */ + { + /* End session */ + Send_Byte(CA); + Send_Byte(CA); + return -2; + } + } + packets_received ++; + session_begin = 1; + } + } + break; + case 1: + Send_Byte(CA); + Send_Byte(CA); + return -3; + default: + if (session_begin > 0) + { + errors ++; + } + if (errors > MAX_ERRORS) + { + Send_Byte(CA); + Send_Byte(CA); + return 0; + } + Send_Byte(CRC16); + break; + } + if (file_done != 0) + { + break; + } + } + if (session_done != 0) + { + break; + } + } + return (int32_t)size; +} diff --git a/IAP/ymodem.h b/IAP/ymodem.h new file mode 100644 index 0000000..3559f54 --- /dev/null +++ b/IAP/ymodem.h @@ -0,0 +1,42 @@ +//Define to prevent recursive inclusion +#ifndef __YMODEM_H_ +#define __YMODEM_H_ +#include +//Exported macro +#define PACKET_SEQNO_INDEX (1) +#define PACKET_SEQNO_COMP_INDEX (2) + +#define PACKET_HEADER (3) +#define PACKET_TRAILER (2) +#define PACKET_OVERHEAD (PACKET_HEADER + PACKET_TRAILER) +#define PACKET_SIZE (128) +#define PACKET_1K_SIZE (1024) + +#define FILE_NAME_LENGTH (256) +#define FILE_SIZE_LENGTH (16) + +#define SOH (0x01) /* start of 128-byte data packet */ +#define STX (0x02) /* start of 1024-byte data packet */ +#define EOT (0x04) /* end of transmission */ +#define ACK (0x06) /* acknowledge */ +#define NACK (0x15) /* negative acknowledge */ +#define CA (0x18) /* two of these in succession aborts transfer */ +#define CRC16 (0x43) /* 'C' == 0x43, request 16-bit CRC */ + +#define ABORT1 (0x41) /* 'A' == 0x41, abort by user */ +#define ABORT2 (0x61) /* 'a' == 0x61, abort by user */ + +#define NAK_TIMEOUT (0x50000) +#define MAX_ERRORS (5) + +//User Define Area + + +//Exported functions + +extern uint8_t FileName[FILE_NAME_LENGTH];//array to store filename of download *.bin +extern uint8_t buf_1k[1024]; +int32_t Ymodem_Receive (uint8_t *,uint32_t appaddr); +extern char file_size[FILE_SIZE_LENGTH]; +extern USART_TypeDef * IAP_Port; +#endif diff --git a/SYSTEM/delay/delay.c b/SYSTEM/delay/delay.c index 263ad27..5415ce6 100644 --- a/SYSTEM/delay/delay.c +++ b/SYSTEM/delay/delay.c @@ -5,7 +5,7 @@ void delay_init(void) { RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq(&RCC_Clocks); - SysTick_Config(RCC_Clocks.SYSCLK_Frequency/1000); + SysTick_Config(RCC_Clocks.SYSCLK_Frequency/10000); } @@ -20,7 +20,7 @@ void delay_ms(uint32_t ms) { uint32_t curTick = mTick; - while((mTick - curTick) < ms); + while((mTick - curTick) < ms*10); } diff --git a/SYSTEM/usart/debug.c b/SYSTEM/usart/debug.c index 3a0aa4b..f8d0aca 100644 --- a/SYSTEM/usart/debug.c +++ b/SYSTEM/usart/debug.c @@ -1,4 +1,5 @@ #include "stdio.h" +#include "dev.h" #include "usart1.h" #include "uart5.h" #if 1 @@ -22,3 +23,11 @@ int fputc(int ch, FILE *f) //重定义fputc函数 uart5_send_byte((uint8_t) ch); return ch; } + +void assert_failed(u8* file, u32 line) +{ + printf("Wrong parameters value: file %s on line %d \r\n", file, line); + while (1) + { + } +} diff --git a/SYSTEM/usart/timer3.c b/SYSTEM/usart/timer3.c deleted file mode 100644 index 93e67c5..0000000 --- a/SYSTEM/usart/timer3.c +++ /dev/null @@ -1,62 +0,0 @@ -#include "timer3.h" -Uart_Timer timer3; -static void TIM3_Init(uint16_t arr,uint16_t psc)//定时器2中断初始化 -{ - TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; - NVIC_InitTypeDef NVIC_InitStructure; - - RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//TIM3时钟使能 - - TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 - TIM_TimeBaseStructure.TIM_Prescaler = psc; //设置用来作为TIMx时钟频率除数的预分频值 - TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim - TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式 - TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); - - TIM_ClearFlag(TIM3, TIM_FLAG_Update);//解决了定时器初始化后立即进入中断的bug(无论是否定时器启动)!!!!!!!!!!!!!!!!!!!! - - TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断 - - NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占优先级0 - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子优先级2 - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能 - NVIC_Init(&NVIC_InitStructure); - - TIM_Cmd(TIM3, DISABLE); //关闭TIM3 -} -static void TIM3_Start(void) -{ - TIM_Cmd(TIM3, ENABLE); //关闭TIM3 -} -static void TIM3_Stop(void) -{ - TIM_ClearITPendingBit(TIM3, TIM_IT_Update);//清除TIM3更新中断标志 - TIM_Cmd(TIM3, DISABLE); //关闭TIM3 -} -static void TIM3_Clear(void) -{ - TIM_SetCounter(TIM3,0);//计数器清空 -} -void timer3_init(void (*callback)()) -{ - timer3.callback =callback; - timer3.start=TIM3_Start; - timer3.stop=TIM3_Stop; - timer3.timeclear=TIM3_Clear; - - TIM3_Init(10*20-1,7200-1); //设置最大超时时间为40ms -} -void TIM3_IRQHandler(void)//定时器4中断服务程序 -{ - if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)//是更新中断 - { - timer3.stop(); - timer3.callback(); - } - else - { - } -} - - diff --git a/SYSTEM/usart/timer3.h b/SYSTEM/usart/timer3.h deleted file mode 100644 index 62c3589..0000000 --- a/SYSTEM/usart/timer3.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _TIMER4_H -#define _TIMER4_H - -#include "stm32f4xx.h" -#include "uart.h" -#include "stdint.h" -extern Uart_Timer timer3; -extern void timer3_init(void (*callback)()); - -#endif - diff --git a/SYSTEM/usart/timer4.c b/SYSTEM/usart/timer4.c deleted file mode 100644 index f89c0fb..0000000 --- a/SYSTEM/usart/timer4.c +++ /dev/null @@ -1,62 +0,0 @@ -#include "timer4.h" -Uart_Timer timer4; -static void TIM4_Init(uint16_t arr,uint16_t psc)//定时器2中断初始化 -{ - TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; - NVIC_InitTypeDef NVIC_InitStructure; - - RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);//TIM4时钟使能 - - TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 - TIM_TimeBaseStructure.TIM_Prescaler = psc; //设置用来作为TIMx时钟频率除数的预分频值 - TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim - TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式 - TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); - - TIM_ClearFlag(TIM4, TIM_FLAG_Update);//解决了定时器初始化后立即进入中断的bug(无论是否定时器启动)!!!!!!!!!!!!!!!!!!!! - - TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE ); //使能指定的TIM4中断,允许更新中断 - - NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn; - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占优先级0 - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子优先级2 - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能 - NVIC_Init(&NVIC_InitStructure); - - TIM_Cmd(TIM4, DISABLE); //关闭TIM4 -} -static void TIM4_Start(void) -{ - TIM_Cmd(TIM4, ENABLE); //关闭TIM4 -} -static void TIM4_Stop(void) -{ - TIM_ClearITPendingBit(TIM4, TIM_IT_Update);//清除TIM4更新中断标志 - TIM_Cmd(TIM4, DISABLE); //关闭TIM4 -} -static void TIM4_Clear(void) -{ - TIM_SetCounter(TIM4,0);//计数器清空 -} -void timer4_init(void (*callback)()) -{ - timer4.callback =callback; - timer4.start=TIM4_Start; - timer4.stop=TIM4_Stop; - timer4.timeclear=TIM4_Clear; - - TIM4_Init(10*20-1,7200-1); //设置最大超时时间为40ms -} -void TIM4_IRQHandler(void)//定时器4中断服务程序 -{ - if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)//是更新中断 - { - timer4.stop(); - timer4.callback(); - } - else - { - } -} - - diff --git a/SYSTEM/usart/timer4.h b/SYSTEM/usart/timer4.h deleted file mode 100644 index ae20456..0000000 --- a/SYSTEM/usart/timer4.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _TIMER4_H -#define _TIMER4_H - -#include "stm32f4xx.h" -#include "uart.h" -#include "stdint.h" -extern Uart_Timer timer4; -extern void timer4_init(void (*callback)()); - -#endif - diff --git a/SYSTEM/usart/uart5.c b/SYSTEM/usart/uart5.c index 6549022..e2b90b5 100644 --- a/SYSTEM/usart/uart5.c +++ b/SYSTEM/usart/uart5.c @@ -14,20 +14,6 @@ void uart5_init(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; - NVIC_InitTypeDef NVIC_InitStructure; - - memset(UART5_RX_BUF,0,UART5_RX_MAX); - memset(UART5_TX_BUF,0,UART5_TX_MAX); - - u5.rx_buf=UART5_RX_BUF; - u5.tx_buf=UART5_TX_BUF; - u5.rx_len=0; - u5.tx_len=0; - u5.rx_status = RX_STA_RST; - u5.rxtimer = &timer4; - - timer4_init(uart5_rx_finished); - RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOF,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5,ENABLE); @@ -72,14 +58,6 @@ void uart5_init(void) USART_Init(UART5, &USART_InitStructure); USART_Cmd(UART5, ENABLE); - - USART_ITConfig(UART5, USART_IT_RXNE, ENABLE); - - NVIC_InitStructure.NVIC_IRQChannel = UART5_IRQn; - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5; - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init(&NVIC_InitStructure); } void uart5_rx_mode(void) { @@ -95,7 +73,7 @@ void uart5_tx_mode(void) void uart5_send_byte(uint8_t one_byte) { uart5_tx_mode(); - while(USART_GetFlagStatus(UART5,USART_FLAG_TC)!=SET);//等待发送结束 + while(USART_GetFlagStatus(UART5,USART_FLAG_TXE)!=SET);//等待发送结束 USART_SendData(UART5,one_byte); //向串口3发送数据 uart5_rx_mode(); } @@ -106,57 +84,16 @@ void uart5_send_bytes(uint8_t* buf,uint16_t length) uart5_send_byte(buf[i]); } } -void uart5_rx_reset(void) -{ - u5.rx_len=0; - memset(u5.rx_buf,0,UART5_RX_MAX);//接收缓存区清零 - u5.rx_status = RX_STA_RST; -} -void uart5_rx_receiving(void) -{ - u5.rxtimer->timeclear(); - u5.rxtimer->start(); - u5.rx_status = RX_RECEIVING; -} -void uart5_rx_finished(void) -{ - u5.rxtimer->stop(); - u5.rx_status=RX_FINISHED; -} -void UART5_IRQHandler(void)//串口2中断服务程序 -{ - if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET)//接收中断 - { - uint8_t res; - res = USART_ReceiveData(UART5);//读取接收到的数据 - switch(u5.rx_status) - { - case RX_STA_RST: - { - u5.rx_len = 0; - u5.rx_buf[u5.rx_len++] = res;//记录接收到的值 - uart5_rx_receiving(); - } break; - case RX_RECEIVING: - { - u5.rx_buf[u5.rx_len++] = res;//记录接收到的值 - if(u5.rx_len==UART5_RX_MAX) - { - uart5_rx_finished(); - } - else - { - uart5_rx_receiving(); - } - } break; - case RX_FINISHED: - { - } break; - default: break; - } - } - else - { - } +uint8_t uart5_read_byte(uint8_t* c) +{ + if ( USART_GetFlagStatus(UART5, USART_FLAG_RXNE) != RESET) + { + *c = USART_ReceiveData(UART5); + return 1; + } + else + { + return 0; + } } diff --git a/SYSTEM/usart/uart5.h b/SYSTEM/usart/uart5.h index 78a7a81..0d01c8a 100644 --- a/SYSTEM/usart/uart5.h +++ b/SYSTEM/usart/uart5.h @@ -17,7 +17,7 @@ void uart5_rx_reset(void); void uart5_rx_receiving(void); void uart5_rx_finished(void); void uart5_init(void); - +uint8_t uart5_read_byte(uint8_t* c); #endif diff --git a/SYSTEM/usart/usart1.c b/SYSTEM/usart/usart1.c index a3a6fb9..ecbe16d 100644 --- a/SYSTEM/usart/usart1.c +++ b/SYSTEM/usart/usart1.c @@ -10,23 +10,11 @@ uint8_t USART1_RX_BUF[USART1_RX_MAX] = {0}; //接收缓存区 uint8_t USART1_TX_BUF[USART1_TX_MAX] = {0}; //发送缓存区 Uart_Type u1; -void usart1_init(uint32_t bound) +void usart1_init(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; - - memset(USART1_RX_BUF,0,USART1_RX_MAX); - memset(USART1_TX_BUF,0,USART1_TX_MAX); - - u1.rx_buf=USART1_RX_BUF; - u1.tx_buf=USART1_TX_BUF; - u1.rx_len=0; - u1.tx_len=0; - u1.rx_status = RX_STA_RST; - u1.rxtimer = &timer3; - - timer3_init(usart1_rx_finished); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //使能USART1时钟 @@ -50,81 +38,24 @@ void usart1_init(uint32_t bound) USART_Init(USART1, &USART_InitStructure); //初始化串口1 USART_Cmd(USART1, ENABLE); //使能串口1 - - USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //开启相关中断 - NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //串口1中断通道 - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 3; //抢占优先级3 - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //子优先级3 - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能 - NVIC_Init(&NVIC_InitStructure); //初始化VIC寄存器 } void usart1_send_byte(uint8_t one_byte) { - while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束 + while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)!=SET);//等待发送结束 USART_SendData(USART1,one_byte); //向串口3发送数据 - -} -void usart1_send_bytes(uint8_t* buf,uint16_t length) -{ - for(uint16_t i=0;itimeclear(); - u1.rxtimer->start(); - u1.rx_status = RX_RECEIVING; -} -void usart1_rx_finished(void) -{ - u1.rxtimer->stop(); - u1.rx_status=RX_FINISHED; -} -void USART1_IRQHandler(void)//串口2中断服务程序 -{ - if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//接收中断 - { - uint8_t res; - res = USART_ReceiveData(USART1);//读取接收到的数据 - switch(u1.rx_status) - { - case RX_STA_RST: - { - u1.rx_len = 0; - u1.rx_buf[u1.rx_len++] = res;//记录接收到的值 - usart1_rx_receiving(); - } break; - case RX_RECEIVING: - { - u1.rx_buf[u1.rx_len++] = res;//记录接收到的值 - if(u1.rx_len==USART1_RX_MAX) - { - usart1_rx_finished(); - } - else - { - usart1_rx_receiving(); - } - } break; - case RX_FINISHED: - { - } break; - default: break; - } - } - else - { - - } + if ( USART_GetFlagStatus(USART1, USART_FLAG_RXNE) != RESET) + { + *c = USART_ReceiveData(USART1); + return 1; + } + else + { + return 0; + } } diff --git a/SYSTEM/usart/usart1.h b/SYSTEM/usart/usart1.h index ebc4867..f72476c 100644 --- a/SYSTEM/usart/usart1.h +++ b/SYSTEM/usart/usart1.h @@ -6,6 +6,7 @@ #include "uart.h" #define U1_BAUDRETE 115200 + extern Uart_Type u1; void usart1_send_byte(uint8_t one_byte); @@ -13,5 +14,7 @@ void usart1_send_bytes(uint8_t* buf,uint16_t length); void usart1_rx_reset(void); void usart1_rx_receiving(void); void usart1_rx_finished(void); -void uart1_init(void); +void usart1_init(void); +uint8_t usart1_read_byte(uint8_t* c); + #endif diff --git a/USER/IAP.uvguix.Admin b/USER/IAP.uvguix.Admin index 596902a..8806c21 100644 --- a/USER/IAP.uvguix.Admin +++ b/USER/IAP.uvguix.Admin @@ -11,17 +11,17 @@ 38003 Registers - 140 90 + 146 84 346 Code Coverage - 1010 160 + 1010 656 204 Performance Analyzer - 1170 + 1170 175 175 146 @@ -42,7 +42,7 @@ 1936 Watch 1 - 200 133 133 + 275 295 133 1937 @@ -54,7 +54,7 @@ 1935 Call Stack + Locals - 200 133 133 + 200 286 133 2506 @@ -66,7 +66,7 @@ 466 Source Browser 500 - 300 + 166 @@ -74,11 +74,11 @@ - 1 - 1 + 0 + 0 0 - 0 - -1 + 50 + 16 @@ -97,17 +97,17 @@ -1 - 17 - 631 - 1555 - 740 + 86 + -3 + 921 + 809 0 - 940 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000B000000000000000100000024453A5C6769745C6769746C61625C426F6F744C6F616465725C555345525C6D61696E2E6300000000066D61696E2E6300000000BCA8E100FFFFFFFF2E453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C7573617274312E6800000000087573617274312E6800000000FFDC7800FFFFFFFF2D453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C75617274352E63000000000775617274352E6300000000BECEA100FFFFFFFF2E453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C7573617274312E6300000000087573617274312E6300000000F0A0A100FFFFFFFF29453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C7379735C6465762E6800000000056465762E6800000000BCA8E100FFFFFFFF22453A5C6769745C6769746C61625C426F6F744C6F616465725C4941505C6961702E6300000000056961702E63000000009CC1B600FFFFFFFF2D453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C75617274352E68000000000775617274352E6800000000F7B88600FFFFFFFF22453A5C6769745C6769746C61625C426F6F744C6F616465725C4941505C6961702E6800000000056961702E6800000000D9ADC200FFFFFFFF2F453A5C6769745C6769746C61625C426F6F744C6F616465725C48415244574152455C464C4153485C666C6173682E630000000007666C6173682E6300000000A5C2D700FFFFFFFF34453A5C6769745C6769746C61625C426F6F744C6F616465725C46574C49425C7372635C73746D3332663478785F666C6173682E63000000001173746D3332663478785F666C6173682E6300000000B3A6BE00FFFFFFFF34453A5C6769745C6769746C61625C426F6F744C6F616465725C46574C49425C696E635C73746D3332663478785F666C6173682E68000000001173746D3332663478785F666C6173682E6800000000EAD6A300FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000009030000 + 235 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000025453A5C6769745C6769746C61625C426F6F744C6F616465725C4941505C796D6F64656D2E630000000008796D6F64656D2E6300000000BECEA100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F40000006600000080070000FD020000 @@ -146,7 +146,7 @@ 0 16 - 0300000066000000ED000000D9020000 + 0300000066000000ED000000CD020000 16 @@ -166,7 +166,7 @@ 0 16 - 0300000066000000ED000000D9020000 + 0300000066000000ED000000CD020000 16 @@ -182,7 +182,7 @@ 0 32767 0 - 4096 + 32768 0 16 @@ -190,7 +190,7 @@ 16 - D8000000EF000000A00300007F010000 + 03040000E0000000CB060000C5020000 @@ -446,7 +446,7 @@ 0 16 - 0300000066000000ED000000D9020000 + 0300000066000000ED000000CD020000 16 @@ -466,7 +466,7 @@ 0 16 - 0300000066000000ED000000D9020000 + 0300000066000000ED000000CD020000 16 @@ -486,7 +486,7 @@ 0 16 - 030000000D0300007D070000CD030000 + 03000000010300007D070000CD030000 16 @@ -526,7 +526,7 @@ 0 16 - 030000000D0300007D070000CD030000 + 03000000010300007D070000CD030000 16 @@ -1146,7 +1146,7 @@ 0 16 - 0300000066000000ED000000D9020000 + 0300000066000000ED000000CD020000 16 @@ -1166,7 +1166,7 @@ 0 16 - 030000000D0300007D070000CD030000 + 03000000010300007D070000CD030000 16 @@ -1186,7 +1186,7 @@ 0 16 - 030000000D0300007D070000CD030000 + 03000000010300007D070000CD030000 16 @@ -1246,7 +1246,7 @@ 0 16 - 030000000D0300007D070000CD030000 + 03000000010300007D070000CD030000 16 @@ -1266,7 +1266,7 @@ 0 16 - 030000000D0300007D070000CD030000 + 03000000010300007D070000CD030000 16 @@ -1706,11 +1706,11 @@ 0 16 - 0000000000000000C40300001C000000 + 0E00000000000000D20300001C000000 16 - 0A0000000A0000006E0000006E000000 + 0A0000000A000000CB03000042000000 @@ -1746,7 +1746,7 @@ 1 16 - 000000001C000000E701000038000000 + 090000001C000000F001000038000000 16 @@ -1795,14 +1795,14 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000F2020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000009030000000000004F000000F0000000F20200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000F202000080070000F60200000100000001000010040000000100000002FDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000D03000080070000FD03000000000000F602000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000E6020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F0000000FD020000000000004F000000F0000000E60200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000E602000080070000EA0200000100000001000010040000000100000022FFFFFF76010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000103000080070000FD03000000000000EA02000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2419 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000003525443960000000000000013000D5469636B5F44656C61795F6D73000454494D340674696D657234065553415254350555415254350275350575617274350674696D6572360454494D360452585F520853656E64427974650A454E5F3438355F50696E0B454E5F3438355F506F7274035254430751555243434647042B435351044E554C4C06514D5443464700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000 + 2344 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D73657373696F6E5F626567696E960000000000000007000D73657373696F6E5F626567696E0D7061636B65745F6C656E6774680D526563656976655061636B657406726573756C740E596D6F64656D5F526563656976650C43616C63436865636B73756D0C75617274355F72785F66696E00000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000 1423 @@ -1818,7 +1818,7 @@ Build 966 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000034941509600000000000000010003494150000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000034941509600000000000000010003494150000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 583 @@ -1834,7 +1834,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -1851,111 +1851,1762 @@ 1080 - - - - 1 - 0 - - 100 - 0 - - .\main.c - 2 - 39 - 90 - 1 - 45,61 - 0 - - - ..\SYSTEM\usart\usart1.h - 2 - 1 - 9 - 1 - - 0 - - - ..\SYSTEM\usart\uart5.c - 21 - 68 - 123 - 1 - 84,89,95,102,115,126 - 0 - - - ..\SYSTEM\usart\usart1.c - 13 - 1 - 1 - 1 - - 0 - - - ..\SYSTEM\sys\dev.h - 0 - 36 - 48 - 1 - - 0 - - - ..\IAP\iap.c - 0 - 128 - 158 - 1 - - 0 - - - ..\SYSTEM\usart\uart5.h - 20 - 1 - 6 - 1 - - 0 - - - ..\IAP\iap.h - 23 - 1 - 19 - 1 - - 0 - - - ..\HARDWARE\FLASH\flash.c - 41 - 1 - 43 - 1 - - 0 - - - ..\FWLIB\src\stm32f4xx_flash.c - 0 - 454 - 469 - 1 - - 0 - - - ..\FWLIB\inc\stm32f4xx_flash.h - 0 - 123 - 135 + + 1 + Debug + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000080070000DF000000 + + + 16 + F40000006600000080070000F6000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000B3010000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000B3010000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 1465 + 1465 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + C5030000E80200008D060000CD040000 + + + + 1466 + 1466 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1935 + 1935 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 1936 + 1936 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000005203000031010000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000B3010000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000B3010000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 197 + 197 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000C30200007D070000CD030000 + + + 16 + 8A000000A10000005203000031010000 + + + + 198 + 198 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 00000000D0010000C0030000A8020000 + + + 16 + 8A000000A10000005203000031010000 + + + + 199 + 199 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000C002000080070000E6030000 + + + 16 + 8A000000A10000005203000031010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 8A000000A10000005203000031010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 8A000000A10000005203000031010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000005203000031010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 8A000000A10000005203000031010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 8A000000A10000005203000031010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 8A000000A10000005203000031010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 38003 + 38003 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000B3010000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000C30200007D070000CD030000 + + + 16 + 8A000000A10000005203000031010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000C30200007D070000CD030000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000C30200007D070000CD030000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000C30200007D070000CD030000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 8A000000A10000005203000031010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 953 + 0 + 8192 + 0 + + 16 + 0000000000000000C40300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E603000080070000F9030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 1 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 000000001C0000006F02000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000E70100007D0700008F020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 3311 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000080070000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000080070000F6000000F40000004F00000080070000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000CC010000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F0000000E3010000000000004F000000F0000000CC0100000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000CC01000080070000D001000001000000010000100400000001000000B3FEFFFF9E00000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000BA050000BB050000BC050000CB090000B905000001800080000001000000C4030000E701000080070000BF020000C4030000D001000080070000A802000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203201000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF050000000000000001000000000000000100000001000000FFFFFFFFC0030000D0010000C4030000A802000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000A802000080070000AC02000001000000010000100400000001000000AAFDFFFF36010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000C302000080070000FD03000000000000AC02000080070000E60300000000000040820056060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2344 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D7061636B65745F6C656E677468960000000000000007000D73657373696F6E5F626567696E0D7061636B65745F6C656E6774680D526563656976655061636B657406726573756C740E596D6F64656D5F526563656976650C43616C63436865636B73756D0C75617274355F72785F66696E00000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000000180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 955 + 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2362 + 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020000002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 0 + + ..\IAP\ymodem.c + 0 + 1 + 14 1 - + 76,95,102,123 0 diff --git a/USER/IAP.uvoptx b/USER/IAP.uvoptx index 144e69c..210fb21 100644 --- a/USER/IAP.uvoptx +++ b/USER/IAP.uvoptx @@ -120,7 +120,7 @@ 0 DLGUARM - / + 0 @@ -150,95 +150,134 @@ 0 JL2CM3 - -U20080643 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407ZGTx$CMSIS\Flash\STM32F4xx_1024.FLM) + -U59400616 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407ZGTx$CMSIS\Flash\STM32F4xx_1024.FLM) - + + + 0 + 0 + 296 + 1 +
134225528
+ 0 + 0 + 0 + 0 + 0 + 1 + ..\IAP\ymodem.c + + \\IAP\../IAP/ymodem.c\296 +
+ + 1 + 0 + 254 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\IAP\ymodem.c + + +
+ + 2 + 0 + 308 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\IAP\ymodem.c + + +
+
0 1 - dev_param.ota_server_url + 0x08010000 1 1 - handle + packet_data 2 1 - mTick + FileName 3 1 - curTick + file_size 4 1 - UART_RX_BUF[42321] + size,0x0A 5 1 - UART_RX_BUF[42322] + (unsigned char *)buf_ptr[1024] 6 1 - UART_RX_BUF[42323] + buf_1k 7 1 - UART_RX_BUF[42324] + *(uint32_t*)WriteAddr 8 1 - UART_RX_BUF[42325] + handle 9 1 - UART_RX_BUF[42326] + flag 10 1 - UART_RX_BUF[42327] + pBuffer 11 1 - UART_RX_BUF[42328] + FileName 12 1 - UART_RX_BUF[42329] + buf_rx5 13 1 - UART_RX_BUF[42330] + buf_rx1 14 1 - UART_RX_BUF[UART_RX_CNT-1] - - - 15 - 1 - UART_RX_BUF[UART_RX_CNT-2] - - - 16 - 1 - ((uint16_t)0x0020) + buf_rx5[i] @@ -253,7 +292,7 @@ 2 0 - 0x08010000 + 0x08004000 0 @@ -347,6 +386,18 @@ 0 0 + + 2 + 3 + 1 + 0 + 0 + 0 + ..\HARDWARE\LED\led.c + led.c + 0 + 0 + @@ -357,7 +408,7 @@ 0 3 - 3 + 4 1 0 0 @@ -369,7 +420,7 @@ 3 - 4 + 5 1 0 0 @@ -381,18 +432,6 @@ 3 - 5 - 1 - 0 - 0 - 0 - ..\SYSTEM\CRC\crc.c - crc.c - 0 - 0 - - - 3 6 1 0 @@ -410,18 +449,6 @@ 0 0 0 - ..\SYSTEM\usart\timer4.c - timer4.c - 0 - 0 - - - 3 - 8 - 1 - 0 - 0 - 0 ..\SYSTEM\usart\usart1.c usart1.c 0 @@ -429,7 +456,7 @@ 3 - 9 + 8 1 0 0 @@ -439,18 +466,6 @@ 0 0 - - 3 - 10 - 1 - 0 - 0 - 0 - ..\SYSTEM\usart\timer3.c - timer3.c - 0 - 0 - @@ -461,7 +476,7 @@ 0 4 - 11 + 9 2 0 0 @@ -481,7 +496,7 @@ 0 5 - 12 + 10 1 0 0 @@ -493,7 +508,7 @@ 5 - 13 + 11 1 0 0 @@ -505,7 +520,7 @@ 5 - 14 + 12 1 0 0 @@ -517,7 +532,7 @@ 5 - 15 + 13 1 0 0 @@ -529,7 +544,7 @@ 5 - 16 + 14 1 0 0 @@ -541,7 +556,7 @@ 5 - 17 + 15 1 0 0 @@ -553,19 +568,7 @@ 5 - 18 - 1 - 0 - 0 - 0 - ..\FWLIB\src\stm32f4xx_tim.c - stm32f4xx_tim.c - 0 - 0 - - - 5 - 19 + 16 1 0 0 @@ -575,18 +578,6 @@ 0 0 - - 5 - 20 - 1 - 0 - 0 - 0 - ..\FWLIB\src\stm32f4xx_fsmc.c - stm32f4xx_fsmc.c - 0 - 0 - @@ -597,7 +588,7 @@ 0 6 - 21 + 17 1 0 0 @@ -607,26 +598,26 @@ 0 0 - - - - README - 0 - 0 - 0 - 0 - 7 - 22 - 5 + 6 + 18 + 1 0 0 0 - ..\readme.txt - readme.txt + ..\IAP\ymodem.c + ymodem.c 0 0 + + README + 1 + 0 + 0 + 0 + + diff --git a/USER/IAP.uvprojx b/USER/IAP.uvprojx index 6d67595..6805ed3 100644 --- a/USER/IAP.uvprojx +++ b/USER/IAP.uvprojx @@ -336,7 +336,7 @@ 0 - STM32F40_41xxx,USE_STDPERIPH_DRIVER,USE_HSE_BYPASS + STM32F40_41xxx,USE_STDPERIPH_DRIVER,USE_HSE_BYPASS,USE_FULL_ASSERT ..\CORE;..\SYSTEM\delay;..\SYSTEM\sys;..\SYSTEM\usart;..\HARDWARE\LED;..\FWLIB\inc;..\IAP;..\HARDWARE\STMFLASH;..\HARDWARE\MALLOC;..\HARDWARE\FLASH;..\HARDWARE\HTTP;..\HARDWARE\TIMER;..\USER;..\SYSTEM\TIMER;..\SYSTEM\CRC;..\SYSTEM\fsmc @@ -397,6 +397,11 @@ 1 ..\HARDWARE\FLASH\flash.c + + led.c + 1 + ..\HARDWARE\LED\led.c + @@ -413,21 +418,11 @@ ..\SYSTEM\delay\delay.c - crc.c - 1 - ..\SYSTEM\CRC\crc.c - - uart5.c 1 ..\SYSTEM\usart\uart5.c - timer4.c - 1 - ..\SYSTEM\usart\timer4.c - - usart1.c 1 ..\SYSTEM\usart\usart1.c @@ -437,11 +432,6 @@ 1 ..\SYSTEM\usart\debug.c - - timer3.c - 1 - ..\SYSTEM\usart\timer3.c - @@ -488,20 +478,10 @@ ..\FWLIB\src\stm32f4xx_flash.c - stm32f4xx_tim.c - 1 - ..\FWLIB\src\stm32f4xx_tim.c - - system_stm32f4xx.c 1 .\system_stm32f4xx.c - - stm32f4xx_fsmc.c - 1 - ..\FWLIB\src\stm32f4xx_fsmc.c - @@ -512,17 +492,15 @@ 1 ..\IAP\iap.c + + ymodem.c + 1 + ..\IAP\ymodem.c + README - - - readme.txt - 5 - ..\readme.txt - - diff --git a/USER/main.c b/USER/main.c index 20a78d0..6242d28 100644 --- a/USER/main.c +++ b/USER/main.c @@ -12,86 +12,51 @@ #include "usart1.h" #include "uart5.h" #include "iap.h" +#include "led.h" #include "flash.h" - +#include "ymodem.h" int main(void) { uint32_t handle; + uint8_t ret; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4 - delay_init(); - uart1_init(); + usart1_init(); uart5_init(); + LED_Init(); - Detection_Update(); //本地升级 - - handle = STMFLASH_ReadWord(FLAG_BASE_ADDR); + display_bootloader_extry_information(); - //检测是否OTA - //检测是否本地 - //执行 + handle = STMFLASH_ReadWord(FLAG_BASE_ADDR); switch(handle) //选择加载那一部分的固件 { - case BOOTLOADER_RUN: //运行段 - printf("\r\n**********Runing Firmware **********\r\n"); - - delay_ms(20); - Run_Flash_App(APP_RUN_ADDR); - break; - - case BOOTLOADER_LOAD: //升级段 - printf("\r\n**********Loading Firmware **********\r\n"); - - #if 0 - handle = APP_RUN_ADDR; - STMFLASH_Write(APP_BACK_ADDR,(uint32_t *)handle,128*1024); - delay_ms(10); - #endif - - handle = APP_LOAD_ADDR; - STMFLASH_Write(APP_RUN_ADDR,(uint32_t *)handle,192*1024); - delay_ms(10); - - handle = BOOTLOADER_RUN; - STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4); - - Run_Flash_App(APP_RUN_ADDR); - break; - - #if 0 - case BOOTLOADER_BACK: //回滚段 - printf("\r\n**********Backup Firmware **********\r\n"); - - handle = APP_BACK_ADDR; - STMFLASH_Write(APP_RUN_ADDR,(uint32_t *)handle,128*1024); - delay_ms(10); - - handle = BOOTLOADER_RUN; - STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4); - delay_ms(10); - - Run_Flash_App(APP_RUN_ADDR); - break; - #endif - - case BOOTLOADER_DEFAULT: //利于出厂(默认加载这一段) - printf("\r\n**********Default Firmware **********\r\n"); - - handle = BOOTLOADER_RUN; - STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4); - - Run_Flash_App(APP_RUN_ADDR); - break; - + case BOOTLOADER_LOAD: //升级段 + load_process(); + break; + case BOOTLOADER_RUN: //运行段 + ret= uart_boot_detect(); + if(LOCAL_BOOT_NONE == ret) + { + app_run(); + } + else + { + printf("User instuction deteced!\r\n"); + uart_boot(); + } + break; + case BOOTLOADER_DEFAULT: default : - printf("\r\n**********Don^t Having Firmware **********\r\n"); + printf("No valid firmware detected!\r\n"); + uart_boot(); break; } + - while(1) //预留通过网口升级的接口(CH395Q) + while(1) { - printf("\r\n********IDLE********\r\n"); + printf("unreachable!\r\n"); delay_ms(5000); } }