规避uart recv阻塞问题,将1165 bl fw加载流程走通
This commit is contained in:
parent
c010d52b9b
commit
bc88b4c1d0
Binary file not shown.
Binary file not shown.
@ -673,6 +673,8 @@ if "%BUILD_OPTION%"=="merge" (
|
||||
.\tools\fcelf.exe -M -input .\gccout\%OUTPUT_NAME%\ap\bootloader\ap_bootloader.bin -addrname BL_PKGIMG_LNA -flashsize BOOTLOADER_PKGIMG_LIMIT_SIZE ^
|
||||
-input .\gccout\%OUTPUT_NAME%\ap\%PROJECT_NAME%\ap_%PROJECT_NAME%.bin -addrname AP_PKGIMG_LNA -flashsize AP_PKGIMG_LIMIT_SIZE ^
|
||||
-input .\prebuild\FW\lib\gcc\%CHIP_TYPE%\%CPBIN_SUBPATH%\cp-demo-flash.bin -addrname CP_PKGIMG_LNA -flashsize CP_PKGIMG_LIMIT_SIZE ^
|
||||
-input .\GNSS\CC1165W_Firmware_N1000R3.35.1.1165Build12546_Release.pkg -addrname PKGFLXAPP_FW_ADDR -flashsize PKGFLXAPP_FW_SIZE ^
|
||||
-input .\GNSS\CC11_Bootloader_R2.0.0.0Build10295_APFLASH_AUTO.pkg -addrname PKGFLXAPP_BL_ADDR -flashsize PKGFLXAPP_BL_SIZE ^
|
||||
-pkgmode 1 ^
|
||||
-banoldtool 1 ^
|
||||
-productname %PKG_PRODUCT% ^
|
||||
|
@ -81,8 +81,8 @@ flash xip address(from both ap/cp view): 0x00800000---0x01000000
|
||||
#else
|
||||
#define AP_FLASH_LOAD_ADDR (0x00891000)
|
||||
|
||||
#define AP_FLASH_LOAD_SIZE (0x67B000)//6636KB
|
||||
#define AP_FLASH_LOAD_UNZIP_SIZE (0x6D6000)//7000KB ,for ld
|
||||
#define AP_FLASH_LOAD_SIZE (0x644000)// (0x67B000 - 0x37000)//6636KB - gnss_fw - gnss_bl
|
||||
#define AP_FLASH_LOAD_UNZIP_SIZE (0x966000)//(0x6D6000)//7000KB ,for ld
|
||||
#endif
|
||||
|
||||
//hib bakcup addr and size
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
#define AP_PKGIMG_LNA (0x00891000)
|
||||
|
||||
#define AP_PKGIMG_LIMIT_SIZE (0x67B000)//6636KB
|
||||
#define AP_PKGIMG_LIMIT_SIZE (0x644000) // (0x67B000)//6636KB
|
||||
|
||||
#define CP_PKGIMG_LIMIT_SIZE (0x64000)
|
||||
|
||||
@ -35,5 +35,13 @@
|
||||
#define XPKGDCMN_VIRTIMG_MERGE_LNA (0x0)
|
||||
#define XPKG_VIRTIMG_LOAD_SIZE (0x100000)
|
||||
|
||||
// GNSS bootloader
|
||||
#define PKGFLXAPP_BL_ADDR (0xED5000)
|
||||
#define PKGFLXAPP_BL_SIZE (0x4000)
|
||||
|
||||
// GNSS firmware
|
||||
#define PKGFLXAPP_FW_ADDR (0xED9000)
|
||||
#define PKGFLXAPP_FW_SIZE (0x33000)
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
#if !defined _DB_VERSION_H
|
||||
#define _DB_VERSION_H
|
||||
|
||||
//The file was automatically generated by the PrePass Application Ver 2.2.81.216, Sat Apr 12 09:57:39 2025
|
||||
//The file was automatically generated by the PrePass Application Ver 2.2.81.216, Wed Apr 16 11:47:27 2025
|
||||
|
||||
#define DB_VERSION_UNIQ_ID "0x6f8b5996"
|
||||
#define DB_VERSION_UNIQ_ID "0x79ca5bfe"
|
||||
|
||||
#endif //_DB_VERSION_H
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -231,7 +231,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit
|
||||
|
||||
#else
|
||||
|
||||
#if defined CORE_IS_CP || defined FEATURE_BOOTLOADER_PROJECT_ENABLE
|
||||
// #if defined CORE_IS_CP || defined FEATURE_BOOTLOADER_PROJECT_ENABLE
|
||||
|
||||
PLAT_BL_UNCOMP_FLASH_TEXT int __attribute__((noinline)) LzmaDec_DecodeReal_3(CLzmaDec *p, SizeT limit, const Byte *bufLimit)
|
||||
{
|
||||
@ -611,11 +611,11 @@ PLAT_BL_UNCOMP_FLASH_TEXT int __attribute__((noinline)) LzmaDec_DecodeReal_3(CLz
|
||||
return SZ_ERROR_DATA;
|
||||
return SZ_OK;
|
||||
}
|
||||
#endif
|
||||
// #endif
|
||||
|
||||
#endif
|
||||
|
||||
#if defined CORE_IS_CP || defined FEATURE_BOOTLOADER_PROJECT_ENABLE
|
||||
// #if defined CORE_IS_CP || defined FEATURE_BOOTLOADER_PROJECT_ENABLE
|
||||
PLAT_BL_UNCOMP_FLASH_TEXT void MY_FAST_CALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit)
|
||||
{
|
||||
unsigned len = (unsigned)p->remainLen;
|
||||
@ -905,7 +905,7 @@ PLAT_BL_UNCOMP_FLASH_TEXT static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p,
|
||||
*bufOut = buf;
|
||||
return res;
|
||||
}
|
||||
#endif
|
||||
// #endif
|
||||
void LzmaDec_InitDicAndState(CLzmaDec *p, BoolInt initDic, BoolInt initState);
|
||||
PLAT_BL_UNCOMP_FLASH_TEXT void LzmaDec_InitDicAndState(CLzmaDec *p, BoolInt initDic, BoolInt initState)
|
||||
{
|
||||
@ -951,7 +951,7 @@ When the decoder lookahead, and the lookahead symbol is not end_marker, we have
|
||||
return SZ_ERROR_DATA; // for strict mode
|
||||
// return SZ_OK; // for relaxed mode
|
||||
|
||||
#if defined CORE_IS_CP || defined FEATURE_BOOTLOADER_PROJECT_ENABLE
|
||||
// #if defined CORE_IS_CP || defined FEATURE_BOOTLOADER_PROJECT_ENABLE
|
||||
|
||||
PLAT_BL_UNCOMP_FLASH_TEXT SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen,
|
||||
ELzmaFinishMode finishMode, ELzmaStatus *status)
|
||||
@ -1248,7 +1248,7 @@ PLAT_BL_UNCOMP_FLASH_TEXT SRes __attribute__((noinline)) LzmaDec_DecodeToBuf(CLz
|
||||
return SZ_OK;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// #endif
|
||||
|
||||
PLAT_BL_UNCOMP_FLASH_TEXT void LzmaDec_FreeProbs(CLzmaDec *p, ISzAllocPtr alloc)
|
||||
{
|
||||
|
@ -297,7 +297,7 @@ static configuration for USB/UART relatded feature
|
||||
/* device */
|
||||
#define RTE_SPI_EN 1
|
||||
#define RTE_USB_EN 1
|
||||
#define RTE_ONE_UART_AT 1
|
||||
#define RTE_ONE_UART_AT 0 // 完全关闭AT
|
||||
#define RTE_TWO_UART_AT 0
|
||||
|
||||
/* feature */
|
||||
|
@ -1,12 +1,14 @@
|
||||
#ifndef __GPS_UART_READ_H__
|
||||
#define __GPS_UART_READ_H__
|
||||
|
||||
#define FW_DOWNLOAD_FM_BAUDRATE (921600)
|
||||
#define FW_DOWNLOAD_BL_BAUDRATE (115200)
|
||||
|
||||
|
||||
void gps_uart_set_baudrate(unsigned int rate);
|
||||
|
||||
char gps_uart_read_char(unsigned int ms);
|
||||
char *gps_uart_read_string();
|
||||
char *gps_uart_read_string(int cnt);
|
||||
|
||||
int gps_uart_send_byte(char byte);
|
||||
int gps_uart_send_buf(char *pBuf,int len);
|
||||
@ -14,6 +16,8 @@ void gps_report_satellites_num(u16 type,u16 num);
|
||||
|
||||
void SK_SendMsg_ToGpsUart(Enum_SK_Msg msg_id,void *param,int len);
|
||||
|
||||
void gps_power_on(void);
|
||||
void gps_power_off(void);
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -100,6 +100,7 @@ typedef enum
|
||||
E_SK_Msg_Location_offline_update,
|
||||
E_SK_Msg_Location_Gps_test,
|
||||
|
||||
E_SK_Msg_Gps_start,
|
||||
E_SK_Msg_Gps_firmware_dl,
|
||||
E_SK_Msg_Gps_OfflineEph_dl,
|
||||
E_SK_Msg_Gps_Eph_Inject,
|
||||
@ -151,7 +152,7 @@ void yak_strlog(char *logstr);
|
||||
extern char yak_logbuf[];
|
||||
|
||||
#define yak_log(fmt, ...) do{\
|
||||
snprintf(yak_logbuf,YAK_LOGBUF_maxLen,fmt,##__VA_ARGS__);\
|
||||
snprintf(yak_logbuf,YAK_LOGBUF_maxLen, fmt, ##__VA_ARGS__);\
|
||||
yak_strlog(yak_logbuf);\
|
||||
}while(0)
|
||||
|
||||
|
@ -97,10 +97,12 @@ void icoe_adap_delay_ms(unsigned int ms)
|
||||
|
||||
void icoe_adap_set_reset_or_power_low(void)
|
||||
{
|
||||
gps_power_off();
|
||||
}
|
||||
|
||||
void icoe_adap_set_reset_or_power_high(void)
|
||||
{
|
||||
gps_power_on();
|
||||
}
|
||||
|
||||
int icoe_adap_uart_clear_data(void)
|
||||
@ -155,9 +157,8 @@ int icoe_adap_uart_get_bytes(unsigned char *str, unsigned int len)
|
||||
|
||||
char icoe_adap_uart_get_char(unsigned int ms)
|
||||
{
|
||||
unsigned char data = 0;
|
||||
#ifdef WIN32
|
||||
|
||||
|
||||
unsigned int count = 0;
|
||||
do
|
||||
{
|
||||
@ -168,9 +169,12 @@ char icoe_adap_uart_get_char(unsigned int ms)
|
||||
count++;
|
||||
icoe_adap_delay_ms(1);
|
||||
} while (count < ms);
|
||||
#endif
|
||||
|
||||
return data;
|
||||
#else
|
||||
|
||||
return gps_uart_read_char(ms);
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
char *icoe_adap_mem_malloc(unsigned int size)
|
||||
|
@ -2,6 +2,9 @@
|
||||
#include "icoe_gps.h"
|
||||
#include "icoe_xmodem.h"
|
||||
|
||||
#include "pkg_718um_mapdef.h"
|
||||
#include "gps_uart_read.h"
|
||||
|
||||
char* gps_dl_send_buf;
|
||||
int gps_file_exist;
|
||||
|
||||
@ -16,7 +19,7 @@ int icoe_entry_load_mode_by_hw(void)
|
||||
|
||||
char cmd[] = {"M!TM!TM!T"};
|
||||
|
||||
icoe_adap_uart_set_baudrate(FW_DOWNLOAD_BAUDRATE); //TODO
|
||||
icoe_adap_uart_set_baudrate(FW_DOWNLOAD_BL_BAUDRATE); //TODO
|
||||
|
||||
while (1)
|
||||
{
|
||||
@ -35,7 +38,8 @@ int icoe_entry_load_mode_by_hw(void)
|
||||
|
||||
//icoe_adap_uart_send_muti(cmd,strlen(cmd)+1); //TODO
|
||||
icoe_adap_uart_send_bytes(cmd,strlen(cmd)+1);
|
||||
|
||||
|
||||
#if 1
|
||||
c = icoe_adap_uart_get_char(5); //TODO timeout is 5ms
|
||||
|
||||
if (c == 'Y')
|
||||
@ -44,7 +48,13 @@ int icoe_entry_load_mode_by_hw(void)
|
||||
c = icoe_adap_uart_get_char(5);//把c读出来
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else
|
||||
char *p = gps_uart_read_string(2);
|
||||
if (strchr(p, 'Y') && strchr(p, 'C'))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
if (cnt > 20)
|
||||
{
|
||||
ICOE_DEBUG_LOG("------ Gps bootloader waiting for YC Error..\r\n");
|
||||
@ -63,16 +73,16 @@ int icoe_entry_load_mode_by_hw(void)
|
||||
|
||||
int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
FILE* pBL_File = NULL;
|
||||
FILE* pFW_File = NULL;
|
||||
// int ret = 0;
|
||||
|
||||
// FILE* pBL_File = NULL;
|
||||
// FILE* pFW_File = NULL;
|
||||
//unsigned char baudrate_cmd[] = {"$CFGPRT,,h0,921600,1,35\r\n"};
|
||||
char cmd[] = {"2\n"};
|
||||
|
||||
// char cmd[] = {"2\n"};
|
||||
|
||||
uint32_t boot_size = 0;
|
||||
uint32_t fw_size = 0;
|
||||
u32 read_size = 0;
|
||||
// u32 read_size = 0;
|
||||
uint32_t send_size = 0;
|
||||
int send_cnt = 0;
|
||||
int ack_id = 0;
|
||||
@ -92,7 +102,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
|
||||
//===========================
|
||||
// tick = xTaskGetTickCount();
|
||||
|
||||
#if 0
|
||||
if ((NULL == bl_filename)||(NULL == fw_filename))
|
||||
{
|
||||
return -1;
|
||||
@ -132,20 +142,25 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
gps_file_exist = 1;
|
||||
yak_log("------------ read gps firmware (%s) fopen ok! size = %d\n",fw_filename,fw_size);
|
||||
}
|
||||
#endif
|
||||
|
||||
fw_size = 204868; // PKGFLXAPP_FW_SIZE
|
||||
boot_size = 16068; // PKGFLXAPP_BL_SIZE
|
||||
gps_file_exist = 1;
|
||||
|
||||
if(icoe_entry_load_mode_by_hw() < 0)
|
||||
{
|
||||
gps_file_exist = 0;
|
||||
fclose(pBL_File);
|
||||
fclose(pFW_File);
|
||||
// fclose(pBL_File);
|
||||
// fclose(pFW_File);
|
||||
return -1;
|
||||
}
|
||||
|
||||
//===================================
|
||||
ICOE_DEBUG_LOG("------------- Gps get YC, ready to download bootloader...\r\n");
|
||||
|
||||
fseek(pBL_File,0,SEEK_SET);
|
||||
fseek(pFW_File,0,SEEK_SET);
|
||||
// fseek(pBL_File,0,SEEK_SET);
|
||||
// fseek(pFW_File,0,SEEK_SET);
|
||||
|
||||
send_size = 0;
|
||||
send_cnt = 0;
|
||||
@ -161,6 +176,8 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
if(ack_id == XMODEM_ACK)
|
||||
{
|
||||
memset(gps_dl_send_buf,0,WRITE_BUF_SIZE+1);
|
||||
memcpy(gps_dl_send_buf, (void *)PKGFLXAPP_BL_ADDR + send_size, WRITE_BUF_SIZE);
|
||||
#if 0
|
||||
read_size = fread(gps_dl_send_buf,1,WRITE_BUF_SIZE,pBL_File);
|
||||
if (0 == read_size)
|
||||
{
|
||||
@ -172,12 +189,13 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
return -1;
|
||||
}
|
||||
//ICOE_DEBUG_LOG("temp_buf[0]:%x %x %x %x %x\r\n",temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],temp_buf[4]);
|
||||
#endif
|
||||
}
|
||||
send_cnt++;
|
||||
|
||||
icoe_xmodem_send_frame(gps_dl_send_buf,send_cnt,WRITE_BUF_SIZE);
|
||||
ack_id = icoe_adap_uart_get_char(10);
|
||||
ICOE_DEBUG_LOG("------------- boot loader recv:=%x\r\n",ack_id);
|
||||
// ICOE_DEBUG_LOG("------------- boot loader recv:=%x\r\n",ack_id);
|
||||
if (ack_id == XMODEM_ACK)
|
||||
{
|
||||
send_size += WRITE_BUF_SIZE;
|
||||
@ -191,12 +209,20 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
succ_flag=0;
|
||||
return -1;
|
||||
}
|
||||
else if ('C' == ack_id && send_cnt == 1) // 强行把C读出来
|
||||
{
|
||||
// yak_log("------------- boot loader recv:=%x, send cnd = 1\r\n", ack_id);
|
||||
ack_id = XMODEM_ACK;
|
||||
send_size += WRITE_BUF_SIZE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(ack_id == XMODEM_ACK)
|
||||
{
|
||||
memset(gps_dl_send_buf,0,WRITE_BUF_SIZE + 1);
|
||||
memcpy(gps_dl_send_buf, (void *)PKGFLXAPP_BL_ADDR + send_size, boot_size - send_size);
|
||||
#if 0
|
||||
read_size = fread(gps_dl_send_buf,1,WRITE_BUF_SIZE,pBL_File);
|
||||
if (0 == read_size)
|
||||
{
|
||||
@ -208,6 +234,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
return -1;
|
||||
}
|
||||
//ICOE_DEBUG_LOG("temp_buf[0]:%x %x %x %x %x\r\n",temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],temp_buf[4]);
|
||||
#endif
|
||||
}
|
||||
send_cnt++;
|
||||
icoe_xmodem_send_frame(gps_dl_send_buf,send_cnt,boot_size-send_size);
|
||||
@ -221,8 +248,8 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
if(retry_num++ > 3)
|
||||
{
|
||||
ICOE_DEBUG_LOG("------------- boot loader fail:=3=\r\n");
|
||||
fclose(pBL_File);
|
||||
fclose(pFW_File);
|
||||
// fclose(pBL_File);
|
||||
// fclose(pFW_File);
|
||||
succ_flag = 0;
|
||||
gps_file_exist = 0;
|
||||
return -1;
|
||||
@ -243,8 +270,8 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
else if (ack_id == XMODEM_CAN)
|
||||
{
|
||||
ICOE_DEBUG_LOG("------------- boot loader fail:=4=\r\n");
|
||||
fclose(pBL_File);
|
||||
fclose(pFW_File);
|
||||
// fclose(pBL_File);
|
||||
// fclose(pFW_File);
|
||||
succ_flag = 0;
|
||||
gps_file_exist = 0;
|
||||
return -1;
|
||||
@ -254,7 +281,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
|
||||
|
||||
|
||||
fclose(pBL_File);
|
||||
// fclose(pBL_File);
|
||||
|
||||
if(succ_flag)
|
||||
{
|
||||
@ -263,12 +290,12 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
else
|
||||
{
|
||||
ICOE_DEBUG_LOG("------------- boot loader fail:=6=\r\n");
|
||||
fclose(pFW_File);
|
||||
// fclose(pFW_File);
|
||||
succ_flag = 0;
|
||||
gps_file_exist = 0;
|
||||
return -1;
|
||||
}
|
||||
ret = 0;
|
||||
// ret = 0;
|
||||
ICOE_DEBUG_LOG("------------- wait for gps chip to run bootloader\r\n");
|
||||
succ_flag = 0;
|
||||
|
||||
@ -295,7 +322,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
ret ++;
|
||||
}
|
||||
while(ret < 1000);
|
||||
#else
|
||||
#elif 0
|
||||
do
|
||||
{
|
||||
char c = icoe_adap_uart_get_char(5);
|
||||
@ -304,7 +331,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
|
||||
if ('C' == c)
|
||||
{
|
||||
ICOE_DEBUG_LOG("------------- recv=%c\r\n",c);
|
||||
ICOE_DEBUG_LOG("------------- recv=%c, ret = %d\r\n",c,ret);
|
||||
succ_flag = 1;
|
||||
//gps_dl_recv_buf[0] = 0;
|
||||
break;
|
||||
@ -316,25 +343,25 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
while(ret < 1000);
|
||||
#endif
|
||||
|
||||
if(succ_flag)
|
||||
{
|
||||
ICOE_DEBUG_LOG("------------- bootloader run ok.\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
ICOE_DEBUG_LOG("------------- bootloader run fail.\r\n");
|
||||
fclose(pFW_File);
|
||||
succ_flag = 0;
|
||||
gps_file_exist = 0;
|
||||
return -1;
|
||||
}
|
||||
// if(succ_flag)
|
||||
// {
|
||||
// ICOE_DEBUG_LOG("------------- bootloader run ok.\r\n");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// ICOE_DEBUG_LOG("------------- bootloader run fail.\r\n");
|
||||
// // fclose(pFW_File);
|
||||
// succ_flag = 0;
|
||||
// gps_file_exist = 0;
|
||||
// return -1;
|
||||
// }
|
||||
|
||||
ICOE_DEBUG_LOG("------------- Download firmware...\r\n");
|
||||
|
||||
|
||||
//icoe_adap_delay_ms(5);
|
||||
//memcpy(cmd,"2\n",3);
|
||||
icoe_adap_uart_send_bytes(cmd,2);
|
||||
// memcpy(cmd,"2\n",3);
|
||||
// icoe_adap_uart_send_bytes(cmd,2);
|
||||
|
||||
succ_flag = 0;
|
||||
#if 0
|
||||
@ -375,7 +402,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
icoe_adap_delay_ms(25);
|
||||
#endif
|
||||
|
||||
icoe_adap_delay_ms(5);
|
||||
icoe_adap_delay_ms(25);
|
||||
|
||||
//icoe_adap_uart_send_bytes(baudrate_cmd,2);
|
||||
//icoe_adap_delay_ms(5);
|
||||
@ -397,6 +424,8 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
if(ack_id == XMODEM_ACK)
|
||||
{
|
||||
memset(gps_dl_send_buf,0,WRITE_BUF_SIZE+1);
|
||||
memcpy(gps_dl_send_buf, (void *)PKGFLXAPP_FW_ADDR + send_size, WRITE_BUF_SIZE);
|
||||
#if 0
|
||||
read_size = fread(gps_dl_send_buf,1,WRITE_BUF_SIZE,pFW_File);
|
||||
if (0 == read_size)
|
||||
{
|
||||
@ -407,11 +436,13 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
return -1;
|
||||
}
|
||||
//ICOE_DEBUG_LOG("temp_buf[0]:%x %x %x %x %x\r\n",temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],temp_buf[4]);
|
||||
#endif
|
||||
}
|
||||
send_cnt++;
|
||||
|
||||
icoe_xmodem_send_frame(gps_dl_send_buf,send_cnt,WRITE_BUF_SIZE);
|
||||
ack_id = icoe_adap_uart_get_char(10);
|
||||
ack_id = XMODEM_ACK;// icoe_adap_uart_get_char(10);
|
||||
icoe_adap_delay_ms(5); // overleap read ack
|
||||
if (ack_id == XMODEM_ACK)
|
||||
{
|
||||
send_size += WRITE_BUF_SIZE;
|
||||
@ -425,12 +456,26 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
succ_flag=0;
|
||||
return -1;
|
||||
}
|
||||
else if (('C' == ack_id) && (1 == send_cnt))
|
||||
{
|
||||
yak_log("read C -------------------");
|
||||
ack_id = XMODEM_ACK;
|
||||
send_size += WRITE_BUF_SIZE;
|
||||
}
|
||||
else if (1 == send_cnt)
|
||||
{
|
||||
yak_log("read ack timeout");
|
||||
ack_id = XMODEM_ACK;
|
||||
send_size += WRITE_BUF_SIZE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(ack_id == XMODEM_ACK)
|
||||
{
|
||||
memset(gps_dl_send_buf,0,WRITE_BUF_SIZE + 1);
|
||||
memcpy(gps_dl_send_buf, (void *)PKGFLXAPP_FW_ADDR + send_size, fw_size-send_size);
|
||||
#if 0
|
||||
read_size = fread(gps_dl_send_buf,1,WRITE_BUF_SIZE,pFW_File);
|
||||
if (0 == read_size)
|
||||
{
|
||||
@ -442,6 +487,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
return -1;
|
||||
}
|
||||
//ICOE_DEBUG_LOG("temp_buf[0]:%x %x %x %x %x\r\n",temp_buf[0],temp_buf[1],temp_buf[2],temp_buf[3],temp_buf[4]);
|
||||
#endif
|
||||
}
|
||||
send_cnt++;
|
||||
icoe_xmodem_send_frame(gps_dl_send_buf,send_cnt,fw_size-send_size);
|
||||
@ -449,15 +495,16 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
|
||||
if (ack_id == XMODEM_ACK)
|
||||
{
|
||||
send_size += boot_size-send_size;
|
||||
send_size += fw_size-send_size;
|
||||
yak_log("------------- gps firmware final send size:%u\r\n", send_size);
|
||||
ack_id = XMODEM_EOT;
|
||||
while (ack_id != XMODEM_ACK)
|
||||
{
|
||||
if(retry_num++ > 3)
|
||||
{
|
||||
ICOE_DEBUG_LOG("------------- gps firmware fail:=3=\r\n");
|
||||
fclose(pBL_File);
|
||||
fclose(pFW_File);
|
||||
// fclose(pBL_File);
|
||||
// fclose(pFW_File);
|
||||
succ_flag = 0;
|
||||
gps_file_exist = 0;
|
||||
return -1;
|
||||
@ -480,7 +527,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
{
|
||||
ICOE_DEBUG_LOG("------------- gps firmware fail:=4=\r\n");
|
||||
|
||||
fclose(pFW_File);
|
||||
// fclose(pFW_File);
|
||||
succ_flag = 0;
|
||||
gps_file_exist = 0;
|
||||
return -1;
|
||||
@ -488,7 +535,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||
}
|
||||
}
|
||||
|
||||
fclose(pFW_File);
|
||||
// fclose(pFW_File);
|
||||
|
||||
if(succ_flag)
|
||||
{
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include "HTTPClient.h"
|
||||
#include "icoe_offline_eph.h"
|
||||
|
||||
|
||||
#include "pkg_718um_mapdef.h"
|
||||
|
||||
|
||||
|
||||
@ -142,12 +142,12 @@ void gps_uart_set_baudrate(unsigned int rate)
|
||||
ARM_USART_FLOW_CONTROL_NONE, rate);
|
||||
}
|
||||
|
||||
void gps_power_on()
|
||||
void gps_power_on(void)
|
||||
{
|
||||
GPIO_OUTPUT_SET_High(GPS_EN_GPIO_INSTANCE,GPS_EN_GPIO_PIN);
|
||||
}
|
||||
|
||||
void gps_power_off()
|
||||
void gps_power_off(void)
|
||||
{
|
||||
GPIO_OUTPUT_SET_Low(GPS_EN_GPIO_INSTANCE,GPS_EN_GPIO_PIN);
|
||||
}
|
||||
@ -196,63 +196,103 @@ void gps_report_satellites_num(u16 type,u16 num)
|
||||
}
|
||||
}
|
||||
char gps_uart_read_char(unsigned int ms)
|
||||
{
|
||||
char ret_char = 0;
|
||||
#if 0
|
||||
u8 ret_num = 0;
|
||||
unsigned int t = ms/2;
|
||||
|
||||
aos_sleep(t);
|
||||
|
||||
if (NULL == gps_uart_handle) return ret_char;
|
||||
|
||||
ret_num = uart_read_dir(gps_uart_handle,&ret_char,1);
|
||||
if (ret_num >0) return ret_char;
|
||||
|
||||
aos_sleep(ms-t);
|
||||
ret_num = uart_read_dir(gps_uart_handle,&ret_char,1);
|
||||
#endif
|
||||
|
||||
return ret_char;
|
||||
{
|
||||
int cnt = 0;
|
||||
gps_uart_drv->Receive(read_buf, 1);
|
||||
|
||||
while((isRecvTimeout == false) && (isRecvComplete == false))
|
||||
{
|
||||
osDelay(1);
|
||||
if(cnt++ > ms)
|
||||
{
|
||||
// yak_log("-------gps uart read char timeout");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if(isRecvTimeout == true)
|
||||
{
|
||||
isRecvTimeout = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
isRecvComplete = false;
|
||||
}
|
||||
|
||||
// yak_log("-------gps uart read char, read_buf[0] = 0x%x", read_buf[0]);
|
||||
|
||||
return read_buf[0];
|
||||
}
|
||||
|
||||
char *gps_uart_read_string()
|
||||
{
|
||||
char *gps_uart_read_string(int cnt)
|
||||
{
|
||||
gps_uart_drv->Receive(read_buf, cnt);
|
||||
|
||||
while((isRecvTimeout == false) && (isRecvComplete == false))
|
||||
{
|
||||
osDelay(1);
|
||||
}
|
||||
|
||||
if(isRecvTimeout == true)
|
||||
{
|
||||
isRecvTimeout = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
isRecvComplete = false;
|
||||
}
|
||||
|
||||
return read_buf;
|
||||
}
|
||||
|
||||
|
||||
int gps_uart_send_byte(char byte)
|
||||
{
|
||||
return gps_uart_drv->Send((const void *)&byte,1);
|
||||
gps_uart_drv->Send((const void *)&byte,1);
|
||||
while((isSendComplete == false))
|
||||
{
|
||||
osDelay(10);
|
||||
}
|
||||
isSendComplete = false;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int gps_uart_send_buf(char *pBuf,int len)
|
||||
{
|
||||
return gps_uart_drv->Send((const void *)&pBuf,len);
|
||||
gps_uart_drv->Send((const void *)pBuf,len);
|
||||
while((isSendComplete == false))
|
||||
{
|
||||
osDelay(10);
|
||||
}
|
||||
isSendComplete = false;
|
||||
return len;
|
||||
}
|
||||
|
||||
void gps_uart_cb(uint32_t event)
|
||||
{
|
||||
if(event & ARM_USART_EVENT_RX_TIMEOUT)
|
||||
// yak_log("--------gps uart cb, event = 0x%x", event);
|
||||
if(event & ARM_USART_EVENT_RX_TIMEOUT) // 0x40
|
||||
{
|
||||
// yak_log("-------gps uart recv cb, 0x%x 0x%x", read_buf[0], read_buf[1]);
|
||||
isRecvTimeout = true;
|
||||
// SK_SendMsg_ToGpsUart(E_SK_Msg_Gps_Uart_recv,NULL,0);
|
||||
}
|
||||
if(event & ARM_USART_EVENT_RECEIVE_COMPLETE)
|
||||
|
||||
if(event & ARM_USART_EVENT_RECEIVE_COMPLETE) // 0x02
|
||||
{
|
||||
// yak_log("-------gps uart recv cb, 0x%x 0x%x", read_buf[0], read_buf[1]);
|
||||
isRecvComplete = true;
|
||||
// SK_SendMsg_ToGpsUart(E_SK_Msg_Gps_Uart_recv,NULL,0);
|
||||
}
|
||||
|
||||
if(event & ARM_USART_EVENT_SEND_COMPLETE)
|
||||
{
|
||||
isSendComplete = true;
|
||||
}
|
||||
|
||||
if(event & (ARM_USART_EVENT_RX_BREAK | ARM_USART_EVENT_RX_FRAMING_ERROR | ARM_USART_EVENT_RX_PARITY_ERROR))
|
||||
{
|
||||
gps_uart_drv->Control(ARM_USART_CONTROL_PURGE_COMM, 0);
|
||||
}
|
||||
|
||||
//SK_SendMsg_ToGpsUart(E_SK_Msg_Gps_Uart_recv,NULL,);
|
||||
}
|
||||
|
||||
static void gps_uart_init(void)
|
||||
@ -290,17 +330,12 @@ bool gps_firmware_version_check()
|
||||
|
||||
void gnss_location_cb(GpsLocation* location)
|
||||
{//定位回调函数
|
||||
|
||||
|
||||
yak_log("gps_location_cb:lat=%f,lon=%f,alt=%f,speed=%f,bearing=%f,time=%d",location->latitude,location->longitude,location->altitude,location->speed,location->bearing,location->timestamp);
|
||||
}
|
||||
|
||||
int gps_icoe_firmware_download()
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
icoe_load_fw(GPS_BOOTLOAD_PKG_NAME,GPS_FIRMWARE_PKG_NAME);
|
||||
|
||||
return ret;
|
||||
return icoe_load_fw(GPS_BOOTLOAD_PKG_NAME,GPS_FIRMWARE_PKG_NAME);
|
||||
}
|
||||
|
||||
static char *httpget_url_gen()
|
||||
@ -400,25 +435,26 @@ static INT32 httpGetDataEx(CHAR *getUrl, CHAR *buf, UINT32 len)
|
||||
}
|
||||
static void gps_uart_task_entry(void *thread_input)
|
||||
{
|
||||
//int ret;
|
||||
nmea_reader_init();
|
||||
nmea_gnss_set_callback(gnss_location_cb,NULL,NULL);
|
||||
gps_uart_init();
|
||||
gps_power_gpio_init();
|
||||
|
||||
#if 0
|
||||
while(1)
|
||||
{
|
||||
yak_strlog("gps read...");
|
||||
gps_uart_drv->Receive(read_buf,10);
|
||||
read_buf[10] = 0;
|
||||
yak_strlog(read_buf);
|
||||
|
||||
}
|
||||
#endif
|
||||
gps_power_gpio_init();
|
||||
// gps_power_on();
|
||||
|
||||
gps_state = E_GPS_State_init;
|
||||
|
||||
// gps_uart_drv->Receive(read_buf, GPS_UART_READ_Buf_MaxLen); // ?? uart start recv
|
||||
|
||||
gGpsUartTaskQueque = osMessageQueueNew(GPS_UART_TASK_QUEUE_SIZE, sizeof(SK_Msg_S), NULL);
|
||||
|
||||
if (NULL == gGpsUartTaskQueque)
|
||||
{
|
||||
yak_log("gps uart task queue create fail\r\n");
|
||||
return;
|
||||
}
|
||||
|
||||
SK_SendMsg_ToGpsUart(E_SK_Msg_Gps_firmware_dl, NULL, 0); // test
|
||||
|
||||
while(1)
|
||||
{
|
||||
SK_Msg_S msg = {0};
|
||||
@ -426,29 +462,41 @@ static void gps_uart_task_entry(void *thread_input)
|
||||
|
||||
if (osMessageQueueGet(gGpsUartTaskQueque, &msg, 0, osWaitForever) == osOK)
|
||||
{
|
||||
yak_log("gps uart queue recv msgid = %d\r\n", msg.msg_id);
|
||||
|
||||
//消息处理
|
||||
switch (msg.msg_id)
|
||||
{
|
||||
case E_SK_Msg_Gps_start:
|
||||
{}
|
||||
break;
|
||||
|
||||
case E_SK_Msg_Gps_Uart_recv:
|
||||
{
|
||||
//uint32_t r_len = 0;
|
||||
uint32_t len = gps_uart_drv->GetRxCount();
|
||||
|
||||
yak_log("uart recv len=%d\r\n", len);
|
||||
|
||||
while(len)
|
||||
{
|
||||
if (GPS_UART_READ_Buf_MaxLen<len)
|
||||
{
|
||||
gps_uart_drv->Receive(read_buf, GPS_UART_READ_Buf_MaxLen);
|
||||
len -= GPS_UART_READ_Buf_MaxLen;
|
||||
}
|
||||
else
|
||||
{
|
||||
gps_uart_drv->Receive(read_buf, len);
|
||||
read_buf[len] = 0;
|
||||
len = 0;
|
||||
//icoe_gps_nmea_parse();
|
||||
len = 0;
|
||||
}
|
||||
yak_strlog(read_buf);
|
||||
}
|
||||
|
||||
yak_strlog("uart recv data start\r\n");
|
||||
yak_strlog(read_buf);
|
||||
yak_strlog("uart recv data end\r\n");
|
||||
|
||||
icoe_gps_nmea_parse((unsigned char *)read_buf, len);
|
||||
|
||||
gps_uart_drv->Receive(read_buf, GPS_UART_READ_Buf_MaxLen);
|
||||
|
||||
}
|
||||
break;
|
||||
@ -460,7 +508,8 @@ static void gps_uart_task_entry(void *thread_input)
|
||||
if ((E_GPS_State_init == gps_state)||(E_GPS_State_stop == gps_state))
|
||||
{
|
||||
gps_state = E_GPS_State_downloading;
|
||||
|
||||
|
||||
yak_log("gps firmware download start");
|
||||
gps_icoe_firmware_download();
|
||||
|
||||
if (E_GPS_State_stop != gps_state)
|
||||
@ -578,14 +627,11 @@ int SK_GPS_UART_Task_Init(void)
|
||||
|
||||
gGpsUartTaskId = osThreadNew(gps_uart_task_entry, NULL, &threadAttr);
|
||||
|
||||
if (NULL == osThreadNew(gps_uart_task_entry, NULL, &threadAttr))
|
||||
if (NULL == gGpsUartTaskId)
|
||||
{
|
||||
yak_strlog("############## Failed to create gps uart thread\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
gGpsUartTaskQueque = osMessageQueueNew(GPS_UART_TASK_QUEUE_SIZE, sizeof(SK_Msg_S), NULL);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -380,12 +380,14 @@ void SK_MainTask_Entry(void *appInfo)
|
||||
//Led_Show_Update();
|
||||
|
||||
osDelay(3000);
|
||||
|
||||
slpManAONIOPowerOn(); // AGPIO
|
||||
|
||||
SK_SocketTask_Init();
|
||||
//Sk_FotaApp_Init();
|
||||
SK_PPG_Task_Init();
|
||||
//SK_LocationTask_Init();
|
||||
//SK_GPS_UART_Task_Init();
|
||||
SK_GPS_UART_Task_Init();
|
||||
|
||||
yak_log("----- long size=%d,double size=%d", sizeof(longsize), sizeof(doublesize));
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user