A59 -V1.1版本提交

This commit is contained in:
2024-10-10 17:41:53 +08:00
parent 16b6433a98
commit 5f032cd320
903 changed files with 171909 additions and 22876 deletions

View File

@ -31,6 +31,7 @@ typedef struct {
int width;
int height;
int format;
int stride;
unsigned int yaddr;
unsigned int uaddr;
unsigned int vaddr;

View File

@ -31,6 +31,9 @@ typedef struct sfuddata_t{
char r_mac_address[9]; //物理地址
uint32_t maintenance_mileage; //保养里程数max
uint32_t mileage_flag; //设置时当前的总里程数
uint8_t display_mileage; // 里程显示类型
uint8_t tcs_on_off; //tcs类型
uint8_t mile_state; //保养里程状态
}SfudData_t;
typedef struct sfudmiledata_t{

View File

@ -5,7 +5,7 @@
#include "FreeRTOS.h"
#include "chip.h"
//#define CAN_USE_TX_DEMO
#define CAN_USE_TX_DEMO
#define CAN_RX_BUF_NUM 32
#define CAN_TX_BUF_NUM 32
@ -690,40 +690,66 @@ static void can_txdemo_thread(void *param)
{
CanPort_t *cap = param;
// CanMsg txmsg = {0};
// txmsg.IDE = CAN_Id_Standard;
// txmsg.DLC = 4;
// txmsg.Data[0] = 0x11;
// txmsg.Data[1] = 0x22;
// txmsg.Data[2] = 0x33;
// txmsg.Data[3] = 0x44;
CanMsg txmsg = {0};
txmsg.StdId = 0x200;
txmsg.IDE = CAN_Id_Standard;
txmsg.DLC = 4;
txmsg.Data[0] = 0x11;
txmsg.Data[1] = 0x22;
txmsg.Data[2] = 0x33;
txmsg.Data[3] = 0x44;
//uint32_t last_time = get_timer(0);
txmsg.DLC = 8;
txmsg.Data[0] = Get_sys_tcs_on_off()?0x8:0x00;
for (;;) {
txmsg.Data[0] = Get_sys_tcs_on_off()?0x8:0x00;
iCanWrite(cap, &txmsg, 1, 0);
//printf("%d us.\n", get_timer(last_time));
//last_time = get_timer(0);
vTaskDelay(pdMS_TO_TICKS(1000));
vTaskDelay(pdMS_TO_TICKS(100));
}
}
#endif
uint8_t can101_flag = 0;
static void can_rxdemo_thread(void *param)
{
CanPort_t *cap = param;
int tlv_data_value[8] = {0};
for (;;) {
CanMsg rxmsg[8] = {0};
int revlen;
int i, j;
if ((revlen = iCanRead(cap, rxmsg, 8, pdMS_TO_TICKS(200))) > 0) {
printf("can receive %d messages:\n", revlen);
if ((revlen = iCanRead(cap, rxmsg, 8, pdMS_TO_TICKS(10))) > 0 && (Get_sys_power_on_self_test() == 100)) {
for (i = 0; i < revlen; i++) {
for (j = 0; j < rxmsg[i].DLC; j++)
printf("%.2x, ", rxmsg[i].Data[j]);
printf("\n");
for (j = 0; j < rxmsg[i].DLC; j++){
tlv_data_value[j] = rxmsg[i].Data[j];
}
// printf("can>> Id = %03x",rxmsg[i].StdId);
switch(rxmsg[i].StdId){
case 0x37B:
tcsworking_event_handing(tlv_data_value);//TCS
break;
case 0x12B:
tcsswitch_event_handing(tlv_data_value);//tcs开关
break;
case 0x401:
break;
case 0x402://ECU故障码
break;
case 0xA5://ABS故障码
abs_dtc_event_handing(tlv_data_value);
break;
case 0xA3://ABS数据
break;
case 0x101://发送机数据
if(can101_flag != 10)
can101_flag = 10;
speed_event_handing(tlv_data_value);
break;
default:break;
}
}
}
}
@ -739,13 +765,13 @@ int can_demo(void)
return -1;
}
vCanInit(cap, CAN250kBaud, CAN_MODE_NORMAL);
vCanInit(cap, CAN500kBaud, CAN_MODE_NORMAL);
#if 1
CAN_FilterInitTypeDef canfilter = {0};
/* 只接收ID的第0位为1的帧 */
canfilter.MODE = 1; /* 单滤波器模式 */
canfilter.ID = 0x1;
canfilter.IDMASK = 0x7fe;
canfilter.ID = 0x37B;
canfilter.IDMASK = 0x7ff;
vCanSetFilter(cap, &canfilter);
#endif

View File

@ -160,6 +160,7 @@ struct dw_spi {
void (*transfer_handler)(struct dw_spi *dws);
u32 current_freq; /* frequency in hz */
u32 current_qspi_freq;
int xfer_ret;
/* DMA info */
int dma_inited;
@ -404,6 +405,7 @@ static void dma_transfer(struct dw_spi *dws)
dw_readl(dws, DW_SPI_ICR);
int_error_stop(dws, "dma_transfer: fifo overrun/underrun");
dws->xfer_ret = 1;
xQueueSendFromISR(dws->xfer_done, NULL, 0);
return;
@ -626,6 +628,7 @@ xfer_continue:
if (ndf > 0xffff) ndf = 0xffff;
dws->dma_mapped = 1;
dws->xfer_ret = 0;
dws->rx = (u8*)message->recv_buf + xfer_len;
dws->len = (ndf + 1) * dws->n_bytes;
dws->rx_end = (u8*)dws->rx + dws->len;
@ -721,11 +724,30 @@ xfer_continue:
goto end;
}
if (dws->dma_mapped && dws->rx_dummy_buffer) {
if (dws->xfer_ret) {
dws->xfer_ret = 0;
ret = -1;
if (dws->dma_mapped)
dma_stop_channel(dws->dma_rx);
goto end;
}
if (dws->dma_mapped) {
/* Invalidate cache after dma read, rx and len must align to cacheline(32bytes) */
portDISABLE_INTERRUPTS();
if (dws->rx_dummy_buffer)
CP15_invalidate_dcache_for_dma((uint32_t)dws->rx_dummy_buffer,
(uint32_t)dws->rx_dummy_buffer + dws->len);
else
CP15_invalidate_dcache_for_dma((uint32_t)dws->rx, (uint32_t)dws->rx + dws->len);
portENABLE_INTERRUPTS();
if (dws->rx_dummy_buffer) {
memcpy(dws->rx, dws->rx_dummy_buffer, dws->len);
vPortFree(dws->rx_dummy_buffer);
dws->rx_dummy_buffer = NULL;
}
}
dma_stop_channel(dws->dma_rx);
@ -764,8 +786,7 @@ int dw_spi_setup(struct spi_slave *slave, struct spi_configuration *configuratio
chip->qspi_clk_div = (DIV_ROUND_UP(dws->max_freq, configuration->qspi_max_hz) + 1) & 0xfffe;
dws->current_freq = dws->max_freq / chip->clk_div;
dws->current_qspi_freq = dws->max_freq / chip->qspi_clk_div;
printf("spi max_freq %u, current freq %u, qspi_freq %u.\n", dws->max_freq,
dws->current_freq, dws->current_qspi_freq);
printf("spi max_freq %u, current freq %u, qspi_freq %u.\n", dws->max_freq, dws->current_freq, dws->current_qspi_freq);
gpio_direction_output(dws->cs_gpio,
!(dws->slave.mode & SPI_CS_HIGH));
@ -909,7 +930,7 @@ static int dw_spi_dma_transfer(struct dw_spi *dws, struct spi_message *message)
cfg.direction = DMA_DEV_TO_MEM;
cfg.src_addr = REGS_SPI0_BASE + DW_SPI_DR;
//if (((u32)dws->rx/* | dws->len*/) & (ARCH_DMA_MINALIGN - 1)) {
if ((u32)dws->rx & 3) {
if ((u32)dws->rx & 31) {
dws->rx_dummy_buffer = pvPortMalloc(dws->len);
if (!dws->rx_dummy_buffer)
return -ENOMEM;

View File

@ -147,7 +147,7 @@ static xPinGroup_t pin_groups[] = {
{.groupid = PGRP_I2C1, .pins_num = 2, .pins = {{50, 1}, {51, 1}}},
{.groupid = PGRP_LCD_TTL_CH0, .pins_num = 28,
/* de clk vynsc hsync */
.pins = {{88, 1}, {89, 1, PAD_DRIVE_2MA}, {90, 1}, {91, 1},
.pins = {{88, 1}, {89, 1, PAD_DRIVE_2MA}, {90, 0}, {91, 0},
{64, 1}, {65, 1}, {66, 1}, {67, 1}, {68, 1}, {69, 1}, {70, 1}, {71, 1}, /* B0-B7 */
{72, 1}, {73, 1}, {74, 1}, {75, 1}, {76, 1}, {77, 1}, {78, 1}, {79, 1}, /* G0-G7 */
{80, 1}, {81, 1}, {82, 1}, {83, 1}, {84, 1}, {85, 1}, {86, 1}, {87, 1},}}, /* R0-R7 */
@ -316,6 +316,7 @@ void vPinctrlSetup(void)
#endif
pinctrl_set_group(PGRP_ITU_CH1_INV);
pinctrl_set_group(PGRP_CAN0_CH0);
#ifdef AUDIO_REPLAY
#if (AUDIO_REPLAY_I2S == I2S_ID1)

View File

@ -12,13 +12,13 @@
#ifndef WITH_MVVM
SfudData_t sfud_data_saved ={0};
#define SFUD_DATA_FLASH_OFFSET 0xfff000
#define SFUD_DATA_FLASH_OFFSET 0x1fff000 //32Mflash
SfudMileData_t sfud_mile_data ={0};
static uint32_t save_addr = 0;
static uint16_t User_data_index = 0;
#define SFUD_MILE_DATA_FLASH_OFFSET 0xffe000//0xffe000
#define MILE_FLASH_OFFSET 0x1000
/*
void read_mileage(uint32_t trip_data,uint32_t total_data)
{
uint32_t i;
@ -96,7 +96,7 @@ void SaveMileageData(uint32_t trip_data,uint32_t total_data){
}
}
*/
void Classify_SaveDataToFlash(SfudData_t user_data,uint8_t type){
uint8_t buff[sizeof(SfudData_t)];//定义buff用于保存结构体
memset(buff,0,sizeof(buff));//将buff内存清零
@ -137,20 +137,20 @@ void Classify_SaveDataToFlash(SfudData_t user_data,uint8_t type){
void SaveDataToFlash(SfudData_t user_data){
uint8_t buff[sizeof(SfudData_t)];//定义buff用于保存结构体
memset(buff,0,sizeof(buff));//将buff内存清零
printf("**************save flash***********************\r\n");
// printf("**************save flash***********************\r\n");
// printf("user_data==> %d-%d-%d-%d-%d,%d",user_data.language,user_data.display_unit,user_data.theme
// ,user_data.theme_state,user_data.light_value,user_data.bt_on_off);
printf("mac:%02X%02X%02X%02X%02X%02X , %02X%02X%02X%02X%02X%02X end\r\n",user_data.f_mac_address[0],user_data.f_mac_address[1],user_data.f_mac_address[2]
,user_data.f_mac_address[3],user_data.f_mac_address[4],user_data.f_mac_address[5]
,user_data.r_mac_address[0],user_data.r_mac_address[1],user_data.r_mac_address[2]
,user_data.r_mac_address[3],user_data.r_mac_address[4],user_data.r_mac_address[5]);
// printf("mac:%02X%02X%02X%02X%02X%02X , %02X%02X%02X%02X%02X%02X end\r\n",user_data.f_mac_address[0],user_data.f_mac_address[1],user_data.f_mac_address[2]
// ,user_data.f_mac_address[3],user_data.f_mac_address[4],user_data.f_mac_address[5]
// ,user_data.r_mac_address[0],user_data.r_mac_address[1],user_data.r_mac_address[2]
// ,user_data.r_mac_address[3],user_data.r_mac_address[4],user_data.r_mac_address[5]);
// printf("data:%02X %02X%02X , %02X %02X%02X end\r\n"
// ,user_data.f_mac_address[6],user_data.f_mac_address[7],user_data.f_mac_address[8]
// ,user_data.r_mac_address[6],user_data.r_mac_address[7],user_data.r_mac_address[8]);
// printf("*************************************\r\n");
// printf("mile data: %02X,%02X end\r\n"
// ,user_data.maintenance_mileage,user_data.mileage_flag);
printf("*************************************\r\n");
// printf("*************************************\r\n");
if(user_data.light_value==0)
user_data.light_value=1;
@ -169,7 +169,10 @@ void SaveDataToFlash(SfudData_t user_data){
strcpy(((SfudData_t *)buff)->r_mac_address,user_data.r_mac_address);
((SfudData_t *)buff)->maintenance_mileage = user_data.maintenance_mileage;
((SfudData_t *)buff)->mileage_flag = user_data.mileage_flag;
((SfudData_t *)buff)->display_mileage = user_data.display_mileage;
((SfudData_t *)buff)->tcs_on_off = user_data.tcs_on_off;
((SfudData_t *)buff)->mile_state = user_data.mile_state;
sfud_flash *sflash = sfud_get_device(0);
if (sfud_erase_write(sflash,SFUD_DATA_FLASH_OFFSET,sizeof(buff),buff)!=SFUD_SUCCESS){
printf("sfud data write error.\r\n");

View File

@ -833,7 +833,7 @@ static int uup_rx_data_len = 0;
#if DEVICE_TYPE_SELECT != EMMC_FLASH
#include "ff_sfdisk.h"
#endif
/*
typedef enum {
UART_FRAME_START,
UART_FRAME_FILEINFO,
@ -855,8 +855,8 @@ typedef enum {
#define UUP_MAX_FILE_SIZE 0x1000000
#define UUP_RX_FRAME_NUM 16
#define UUP_MAX_LOADER_SIZE STEPLDR_MAX_SIZE//0x10000
static int uup_status = UUP_STATE_IDLE;
*/
// static int uup_status = UUP_STATE_IDLE;
static int uup_file_type = 0;
static int uup_file_size = 0;
static int uup_packet_num = 0;
@ -877,7 +877,7 @@ static void uup_send_ack(UartPort_t *uap, int type, int ret)
iUartWrite(uap, buf, 7, pdMS_TO_TICKS(100));
}
#if 0
void uup_ota_update(UartPort_t *uap, uint8_t *framebuf, size_t len)
{
int frametype = framebuf[0];
@ -1009,6 +1009,9 @@ void uup_ota_update(UartPort_t *uap, uint8_t *framebuf, size_t len)
break;
}
}
#endif
#else
static void uart_tx_demo_thread(void *param)
{

View File

@ -69,25 +69,25 @@ static void protocol_uart_tx_thread(void *param)
for (;;)
{
if(uart_tx_flag){
if (uart_time_request[0] != 0 && uart_time_request[0] == 0xAA)
if (uart_time_request[0] != 0 && (uart_time_request[0] == 0xAA || uart_time_request[0] == 0x27))
{
//printf("UART3 tx-->>> ");
// printf("UART3 tx-->>> ");
for (uint8_t i = 0; i < 9; i++)
{
//printf("%02x ", uart_time_request[i]);
// printf("%02x ", uart_time_request[i]);
uarttx[i] = uart_time_request[i];
}
if(uart_time_request[1]==0x10){
for (uint8_t i = 9; i < 19; i++)
{
//printf("%02x ", uart_time_request[i]);
// printf("%02x ", uart_time_request[i]);
uarttx[i] = uart_time_request[i];
}
//printf("\r\n");
// printf("\r\n");
iUartWrite(uap, uarttx, 19, pdMS_TO_TICKS(100)); // 发送数据
uart_time_request[0] = 0;
}else{
//printf("\r\n");
// printf("\r\n");
iUartWrite(uap, uarttx, 9, pdMS_TO_TICKS(100)); // 发送数据
uart_time_request[0] = 0;
}
@ -126,7 +126,10 @@ static uint16_t calculate_cumulative_sum(uint8_t *buf)
return sum;
}
extern uint8_t uart3_flag;
uint8_t device_flag = 0;
uint8_t data_analysis_flag = 0;
uint8_t data_count_flag = 0;
uint8_t uart3_flag = 0;
static void protocol_uart_rx_thread(void *param)
{
UartPort_t *uap = xUartOpen(UART_BT_PORT);
@ -139,7 +142,7 @@ static void protocol_uart_rx_thread(void *param)
int i;
uint8_t tlv_data_value[128] = {0};
unsigned char ota_request[8] = {0x7e,0x00,0x05,0x02,0x03,0x01,0x00,0x01};
// unsigned char ota_request[8] = {0x7e,0x00,0x05,0x02,0x03,0x01,0x00,0x01};
uint32_t sum = 0;
uint8_t equipment_data = 0;
uint8_t mac_data = 0;
@ -164,142 +167,152 @@ static void protocol_uart_rx_thread(void *param)
for (;;)
{
len = iUartRead(uap, uartrx, BUFFER_LEN, pdMS_TO_TICKS(10));
if(uart3_flag){
if(len==0)
uart3_flag = 0;
else
printf("len!=0.\r\n");
}else if(Get_sys_power_on_self_test() != 150){
for(i=0;i<len;i++){
switch (upgrade_state) {
case 0:
if (uartrx[i] == 0xAA){
upgrade_state++;
tlv_data_value[str_len] = uartrx[i];
str_len++;
equipment_data = 0;
mac_data = 0;
}
break;
case 1:
if (uartrx[i] == 0x18){
tlv_data_value[str_len] = uartrx[i];
str_len++;
data_len = uartrx[i];
upgrade_state++;
}else if(uartrx[i] == 0x1b){
tlv_data_value[str_len] = uartrx[i];
str_len++;
data_len = uartrx[i];
upgrade_state++;
mac_data = 1;
}else if(uartrx[i] == 0x47){
tlv_data_value[str_len] = uartrx[i];
str_len++;
data_len = uartrx[i];
upgrade_state++;
equipment_data = 1;
}else
upgrade_state = 0;
break;
case 2:
tlv_data_value[str_len] = uartrx[i];
str_len++;
if(str_len > data_len+1){
if(Get_sys_power_on_self_test() != 150 ){
if(device_flag)
data_count_flag++;
for(i=0;i<len;i++){
switch (upgrade_state) {
case 0:
if (uartrx[i] == 0xAA){
upgrade_state++;
tlv_data_value[str_len] = uartrx[i];
str_len++;
equipment_data = 0;
mac_data = 0;
}
break;
case 3:
if (uartrx[i] == 0x0a){
sum = calculate_cumulative_sum(tlv_data_value);
if(sum != tlv_data_value[str_len-1]){
//printf("error.\r\n");
case 1:
if (uartrx[i] == 0x18){
tlv_data_value[str_len] = uartrx[i];
str_len++;
data_len = uartrx[i];
upgrade_state++;
}else if(uartrx[i] == 0x1b){
tlv_data_value[str_len] = uartrx[i];
str_len++;
data_len = uartrx[i];
upgrade_state++;
mac_data = 1;
}else if(uartrx[i] == 0x47){
tlv_data_value[str_len] = uartrx[i];
str_len++;
data_len = uartrx[i];
upgrade_state++;
equipment_data = 1;
}else
upgrade_state = 0;
break;
case 2:
tlv_data_value[str_len] = uartrx[i];
str_len++;
if(str_len > data_len+1){
upgrade_state++;
}
break;
case 3:
if (uartrx[i] == 0x0a){
sum = calculate_cumulative_sum(tlv_data_value);
if(sum != tlv_data_value[str_len-1]){
printf("error.\r\n");
}else{
if(equipment_data){
device_data_analysis(tlv_data_value);
equipment_data = 0;
if(!data_analysis_flag)
device_flag = 1;
}else if(mac_data){
tire_pressure_data_analysis(tlv_data_value);
mac_data = 0;
}else{
data_analysis(tlv_data_value);
if(!data_analysis_flag)
data_analysis_flag = 1;
}
}
}else{
if(equipment_data){
device_data_analysis(tlv_data_value);
equipment_data = 0;
}else if(mac_data){
tire_pressure_data_analysis(tlv_data_value);
mac_data = 0;
}else
data_analysis(tlv_data_value);
printf("\nuartrx[i] = %x .\n",uartrx[i]);
}
// }else{
//DEBUG_PRINT("\nuartrx[i] = %x .\n",uartrx[i]);
upgrade_state=0;
str_len = 0;
data_len = 0;
break;
}
upgrade_state=0;
str_len = 0;
data_len = 0;
break;
}
/*
switch (uup_rx_state) {
case 0:
if (uartrx[i] == 0x7e)
uup_rx_state++;
break;
case 1:
if (uartrx[i] == 0x05)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 2:
if (uartrx[i] == 0x02)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 3:
if (uartrx[i] == 0x03)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 4:
if (uartrx[i] == 0x01)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 5:
if (uartrx[i] == Get_sys_softwar_host())
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 6:
if (uartrx[i] == Get_sys_softwar_order()){
if(Get_sys_veer_velocity()){
//DEBUG_PRINT("error ota sj. Speed present\n");
ota_request[1] = 0x01;
ota_request[6] = Get_sys_softwar_host();
ota_request[7] = Get_sys_softwar_order();
TXCMD_Other_Set(ota_request,8);
}else{
//DEBUG_PRINT("enter ota sj.\n");
Set_sys_power_on_self_test(150);
// extern uint8_t now_theme_state;
// now_theme_state = 5;
Set_sys_upgrade_Flag(1);//进入ota界面
ota_request[6] = Get_sys_softwar_host();
ota_request[7] = Get_sys_softwar_order();
vTaskDelay(100);
TXCMD_Other_Set(ota_request,8);
if(timeout)
timeout=0;
switch (uup_rx_state) {
case 0:
if (uartrx[i] == 0x7e)
uup_rx_state++;
break;
case 1:
if (uartrx[i] == 0x05)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 2:
if (uartrx[i] == 0x02)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 3:
if (uartrx[i] == 0x03)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 4:
if (uartrx[i] == 0x01)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 5:
if (uartrx[i] == Get_sys_softwar_host())
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 6:
if (uartrx[i] == Get_sys_softwar_order()){
if(Get_sys_veer_velocity()){
printf("error ota sj. Speed present\n");
// ota_request[1] = 0x01;
// ota_request[6] = Get_sys_softwar_host();
// ota_request[7] = Get_sys_softwar_order();
// TXCMD_Other_Set(ota_request,8);
Send_ota_state(1);
}else{
printf("enter ota sj.\n");
Set_sys_power_on_self_test(150);
Set_sys_upgrade_Flag(1);//进入ota界面
// ota_request[6] = Get_sys_softwar_host();
// ota_request[7] = Get_sys_softwar_order();
Send_ota_state(0);
if(timeout)
timeout=0;
}
}
uup_rx_state = 0;
break;
}
uup_rx_state = 0;
break;
}
}
}
if((!data_analysis_flag) && data_count_flag == 50){
data_count_flag = 0;
if(uart3_flag){
printf("uart3 open .\r\n");
UART3_Type_regression();
uart3_flag = 0;
}else{
printf("uart3 close .\r\n");
UART3_Modification_Type();
uart3_flag = 1;
}
}
}else{//升级逻辑
timeout ++;
for (i = 0; i < len; i++) {
@ -335,7 +348,7 @@ static void protocol_uart_rx_thread(void *param)
//uup_rx_data_len |= uartrx[i];
uup_rx_data_len = (uartrx[i]<<8) | uup_rx_data_len;
if((uup_rx_data_len > UUP_PACKET_A27_SIZE + 2)) { //4096 + 2
//DEBUG_PRINT("Invalid uup_rx_data_len %d\n", uup_rx_data_len);
printf("Invalid uup_rx_data_len %d\n", uup_rx_data_len);
uup_rx_state = 0;
} else {
uup_rx_state++;
@ -365,27 +378,25 @@ static void protocol_uart_rx_thread(void *param)
len = buf[3]<<8 | len;
for (i = 0; i < len + 4; i++)
checksum ^= buf[i];
////DEBUG_PRINT("checksum = 0x%x , buf[len + 4] = 0x%x\n",checksum,buf[len + 4]);
//printf("checksum = 0x%x , buf[len + 4] = 0x%x\n",checksum,buf[len + 4]);
if (checksum == buf[len + 4]) {
timeout =0;
// uup_ota_update(uap, buf + 4, len);
//DEBUG_PRINT("rev frame checksum err.\n");
uup_ota_update(uap, buf + 4, len);
} else {
printf("rev frame checksum err.\r\n");
}
uup_rx_tail = (uup_rx_tail + 1) % UUP_RX_FRAME_NUM;
}
if(timeout >= 3000){//超时退出升级 大约40s
//DEBUG_PRINT("exit ota sj.\n");
printf("exit ota sj.\n");
Set_sys_power_on_self_test(100);
Set_sys_upgrade_Flag(2);
//DEBUG_PRINT("UART3_Type_regression .\n");
printf("UART3_Type_regression .\n");
extern void UART3_Type_regression(void);
UART3_Type_regression();
timeout = 0;
}
*/
}
}
}