diff --git a/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/uart.c b/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/uart.c index 0a5f66a0..227271e9 100644 --- a/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/uart.c +++ b/MXC_A27-PCB4.5-270T/ArkmicroFiles/libcpu-amt630hv100/source/uart.c @@ -1065,11 +1065,11 @@ static void uart_rx_demo_thread(void *param) //打印 if(len!=0){ - printf("uart2>>>>>>"); - for(uint8_t i=0;i>>>>>"); + // for(uint8_t i=0;i UART3 115200.\n"); + TaskHandle_t tx_task_handle; - vUartInit(uap, 115200, 0); + if (!uap) { + printf("open uart %d fail.\n", UART_BT_PORT); + vTaskDelete(NULL); + return; + } + printf("MXC => UART3 115200.\n"); - if (xTaskCreate(protocol_uart_tx_thread, "uartsend", configMINIMAL_STACK_SIZE, uap, - configMAX_PRIORITIES / 3, NULL) != pdPASS) { - printf("create uart tx demo task fail.\n"); - vTaskDelete(NULL); - return; - } - extern uint8_t system_flag; - system_flag++; - if(system_flag>=2) - Send_software_version(); + vUartInit(uap, 115200, 0); - for (;;) { - len = iUartRead(uap, uartrx, BUFFER_LEN, pdMS_TO_TICKS(10)); + if (xTaskCreate(protocol_uart_tx_thread, "uartsend", configMINIMAL_STACK_SIZE, uap, + configMAX_PRIORITIES / 3, &tx_task_handle) != pdPASS) { + printf("create uart tx demo task fail.\n"); + vTaskDelete(NULL); + return; + } + extern uint8_t system_flag; + system_flag++; + if(system_flag>=2) + Send_software_version(); - // if(len){ - // printf("uart2>"); - // for(i=0;i"); + // for(i=0;i data_len+1){ - upgrade_state++; - } - break; - case 6: - if (uartrx[i] == 0x0a){ - - sum = calculate_cumulative_sum(tlv_data_value); - if(sum != tlv_data_value[str_len-1]){ - printf("CHECKSUM ERROR ,sum = %x ,tlv_data_value=%x \n",sum,tlv_data_value[str_len-1]); - if(flag <5){ - flag ++; - printf("str_len=%d data_len =%d ,",str_len,data_len); - for(j=0;j data_len+1){ + upgrade_state++; + } + break; + case 6: + if (uartrx[i] == 0x0a){ - if(timeout) - timeout=0; + sum = calculate_cumulative_sum(tlv_data_value); + if(sum != tlv_data_value[str_len-1]){ + printf("CHECKSUM ERROR ,sum = %x ,tlv_data_value=%x \n",sum,tlv_data_value[str_len-1]); + if(flag <5){ + flag ++; + printf("str_len=%d data_len =%d ,",str_len,data_len); + for(j=0;j UUP_PACKET_A27_SIZE + 2)) { //4096 + 2 - printf("Invalid uup_rx_data_len %d\n", uup_rx_data_len); - uup_rx_state = 0; - } else { + + #endif + } + + #if 1 + }else{//升级逻辑 + timeout ++; + uart_state = 3; + for (i = 0; i < len; i++) { + switch (uup_rx_state) { + case 0: + if (uartrx[i] == 0x55) { + uup_rx_state++; + uup_rx_rev_len = 0; + uup_rx_ptr = &uup_rx_buf[uup_rx_head][0]; + } + break; + case 1: + if (uartrx[i] == 0x81) + uup_rx_state++; + else + uup_rx_state = 0; + *uup_rx_ptr++ = uartrx[i]; + break; + case 2: + if (uartrx[i] == 0xc6) + uup_rx_state++; + else + uup_rx_state = 0; + *uup_rx_ptr++ = uartrx[i]; + break; + case 3: + uup_rx_data_len = uartrx[i]; + //uup_rx_data_len = (uartrx[i]<<8); uup_rx_state++; *uup_rx_ptr++ = uartrx[i]; + break; + case 4: + //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 + printf("Invalid uup_rx_data_len %d\n", uup_rx_data_len); + uup_rx_state = 0; + } else { + uup_rx_state++; + *uup_rx_ptr++ = uartrx[i]; + } + break; + case 5: + *uup_rx_ptr++ = uartrx[i]; + if (++uup_rx_rev_len == uup_rx_data_len) + uup_rx_state++; + break; + case 6: + *uup_rx_ptr++ = uartrx[i]; + uup_rx_head = (uup_rx_head + 1) % UUP_RX_FRAME_NUM; + uup_rx_state = 0; + break; } - break; - case 5: - *uup_rx_ptr++ = uartrx[i]; - if (++uup_rx_rev_len == uup_rx_data_len) - uup_rx_state++; - break; - case 6: - *uup_rx_ptr++ = uartrx[i]; - uup_rx_head = (uup_rx_head + 1) % UUP_RX_FRAME_NUM; - uup_rx_state = 0; - break; - } + } + + if (uup_rx_tail != uup_rx_head) { + unsigned char *buf; + unsigned char checksum = 0; + + buf = &uup_rx_buf[uup_rx_tail][0]; + //len = (buf[2]<<8)+buf[3]; + len = buf[2]; + len = buf[3]<<8 | len; + for (i = 0; i < len + 4; i++) + checksum ^= buf[i]; + //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); + } else { + printf("rev frame checksum err.\r\n"); + } + uup_rx_tail = (uup_rx_tail + 1) % UUP_RX_FRAME_NUM; } - if (uup_rx_tail != uup_rx_head) { - unsigned char *buf; - unsigned char checksum = 0; - - buf = &uup_rx_buf[uup_rx_tail][0]; - //len = (buf[2]<<8)+buf[3]; - len = buf[2]; - len = buf[3]<<8 | len; - for (i = 0; i < len + 4; i++) - checksum ^= buf[i]; - //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); - } else { - printf("rev frame checksum err.\r\n"); + if(timeout >= 3000){//超时退出升级 大约40s + printf("exit ota sj.\n"); + Set_sys_power_on_self_test(100); + Set_sys_upgrade_Flag(2); + printf("UART3_Type_regression .\n"); + extern void UART3_Type_regression(void); + UART3_Type_regression(); + timeout = 0; } - uup_rx_tail = (uup_rx_tail + 1) % UUP_RX_FRAME_NUM; + #endif } - if(timeout >= 3000){//超时退出升级 大约40s - printf("exit ota sj.\n"); - Set_sys_power_on_self_test(100); - Set_sys_upgrade_Flag(2); - printf("UART3_Type_regression .\n"); - extern void UART3_Type_regression(void); - UART3_Type_regression(); - timeout = 0; - } - #endif + //收不到蓝牙心跳信息 复位串口 + if(uart_flag==1) { + break; } - - //收不到蓝牙心跳信息 复位串口 - if(uart_flag==1){ - uart_flag = 2; - printf("reset uart.\r\n"); - UART3_Modification_Type(); - vUartClose(uap); - uap = xUartOpen(UART_BT_PORT); - UART3_Type_regression(); - vUartInit(uap,115200,0); - bt_communication_heartbeat = 10; + } - + uart_flag = 2; + printf("reset uart.\r\n"); + + //关闭发送任务 + vTaskDelete(tx_task_handle); + //关闭Uart + vUartClose(uap); + //配置为GPIO + UART3_Modification_Type(); + //延时100 + vTaskDelay(pdMS_TO_TICKS(100)); + //配置为Uart + UART3_Type_regression(); + //重置心跳检测 + bt_communication_heartbeat = 5; + } } diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/strings/en_US.bin b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/strings/en_US.bin index e2be7f55..3ab51e38 100644 Binary files a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/strings/en_US.bin and b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/strings/en_US.bin differ diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/strings/strings.xml b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/strings/strings.xml index 13934f70..b601fa3c 100644 --- a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/strings/strings.xml +++ b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/strings/strings.xml @@ -194,10 +194,6 @@ Quickly arrange 快排功能 - - 仪表蓝牙已关闭,不可连接 - Instrument Bluetooth turned off, unable to connect - 热点: Hotspot: @@ -230,17 +226,9 @@ 4.After successful connection, allow Carplay to connect and start using the Carplay function. 4.连接成功后,允许Carplay连接,就可以开始使用CarPlay功能了。 - - Hotspot Name: - 热点名称: - - - Quickly arrange - 快排功能 - - - 仪表蓝牙已关闭,不可连接 - Instrument Bluetooth turned off, unable to connect + + 仪表蓝牙已关闭 + Instrument Bluetooth turned off 1. Unlock your smartphone, find and enter the "Settings" menu, and make sure the Bluetooth function is turned on. diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/strings/zh_CN.bin b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/strings/zh_CN.bin index 95b05df2..a87077cc 100644 Binary files a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/strings/zh_CN.bin and b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/strings/zh_CN.bin differ diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/ui/new.bin b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/ui/new.bin index 67584a01..9f5d2616 100644 Binary files a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/ui/new.bin and b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/ui/new.bin differ diff --git a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/ui/new.xml b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/ui/new.xml index 690a9f91..9ace48b4 100644 --- a/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/ui/new.xml +++ b/MXC_A27-PCB4.5-270T/lib/awtk/awtk-examples/MOTO_A270T/design/default/ui/new.xml @@ -29,7 +29,7 @@