规避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 ^
|
.\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 .\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 .\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 ^
|
-pkgmode 1 ^
|
||||||
-banoldtool 1 ^
|
-banoldtool 1 ^
|
||||||
-productname %PKG_PRODUCT% ^
|
-productname %PKG_PRODUCT% ^
|
||||||
|
@ -81,8 +81,8 @@ flash xip address(from both ap/cp view): 0x00800000---0x01000000
|
|||||||
#else
|
#else
|
||||||
#define AP_FLASH_LOAD_ADDR (0x00891000)
|
#define AP_FLASH_LOAD_ADDR (0x00891000)
|
||||||
|
|
||||||
#define AP_FLASH_LOAD_SIZE (0x67B000)//6636KB
|
#define AP_FLASH_LOAD_SIZE (0x644000)// (0x67B000 - 0x37000)//6636KB - gnss_fw - gnss_bl
|
||||||
#define AP_FLASH_LOAD_UNZIP_SIZE (0x6D6000)//7000KB ,for ld
|
#define AP_FLASH_LOAD_UNZIP_SIZE (0x966000)//(0x6D6000)//7000KB ,for ld
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//hib bakcup addr and size
|
//hib bakcup addr and size
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
#define AP_PKGIMG_LNA (0x00891000)
|
#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)
|
#define CP_PKGIMG_LIMIT_SIZE (0x64000)
|
||||||
|
|
||||||
@ -35,5 +35,13 @@
|
|||||||
#define XPKGDCMN_VIRTIMG_MERGE_LNA (0x0)
|
#define XPKGDCMN_VIRTIMG_MERGE_LNA (0x0)
|
||||||
#define XPKG_VIRTIMG_LOAD_SIZE (0x100000)
|
#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
|
#endif
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#if !defined _DB_VERSION_H
|
#if !defined _DB_VERSION_H
|
||||||
#define _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
|
#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
|
#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)
|
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_ERROR_DATA;
|
||||||
return SZ_OK;
|
return SZ_OK;
|
||||||
}
|
}
|
||||||
#endif
|
// #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)
|
PLAT_BL_UNCOMP_FLASH_TEXT void MY_FAST_CALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit)
|
||||||
{
|
{
|
||||||
unsigned len = (unsigned)p->remainLen;
|
unsigned len = (unsigned)p->remainLen;
|
||||||
@ -905,7 +905,7 @@ PLAT_BL_UNCOMP_FLASH_TEXT static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p,
|
|||||||
*bufOut = buf;
|
*bufOut = buf;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
#endif
|
// #endif
|
||||||
void LzmaDec_InitDicAndState(CLzmaDec *p, BoolInt initDic, BoolInt initState);
|
void LzmaDec_InitDicAndState(CLzmaDec *p, BoolInt initDic, BoolInt initState);
|
||||||
PLAT_BL_UNCOMP_FLASH_TEXT 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_ERROR_DATA; // for strict mode
|
||||||
// return SZ_OK; // for relaxed 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,
|
PLAT_BL_UNCOMP_FLASH_TEXT SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen,
|
||||||
ELzmaFinishMode finishMode, ELzmaStatus *status)
|
ELzmaFinishMode finishMode, ELzmaStatus *status)
|
||||||
@ -1248,7 +1248,7 @@ PLAT_BL_UNCOMP_FLASH_TEXT SRes __attribute__((noinline)) LzmaDec_DecodeToBuf(CLz
|
|||||||
return SZ_OK;
|
return SZ_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
// #endif
|
||||||
|
|
||||||
PLAT_BL_UNCOMP_FLASH_TEXT void LzmaDec_FreeProbs(CLzmaDec *p, ISzAllocPtr alloc)
|
PLAT_BL_UNCOMP_FLASH_TEXT void LzmaDec_FreeProbs(CLzmaDec *p, ISzAllocPtr alloc)
|
||||||
{
|
{
|
||||||
|
@ -297,7 +297,7 @@ static configuration for USB/UART relatded feature
|
|||||||
/* device */
|
/* device */
|
||||||
#define RTE_SPI_EN 1
|
#define RTE_SPI_EN 1
|
||||||
#define RTE_USB_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
|
#define RTE_TWO_UART_AT 0
|
||||||
|
|
||||||
/* feature */
|
/* feature */
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
#ifndef __GPS_UART_READ_H__
|
#ifndef __GPS_UART_READ_H__
|
||||||
#define __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);
|
void gps_uart_set_baudrate(unsigned int rate);
|
||||||
|
|
||||||
char gps_uart_read_char(unsigned int ms);
|
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_byte(char byte);
|
||||||
int gps_uart_send_buf(char *pBuf,int len);
|
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 SK_SendMsg_ToGpsUart(Enum_SK_Msg msg_id,void *param,int len);
|
||||||
|
|
||||||
|
void gps_power_on(void);
|
||||||
|
void gps_power_off(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -100,6 +100,7 @@ typedef enum
|
|||||||
E_SK_Msg_Location_offline_update,
|
E_SK_Msg_Location_offline_update,
|
||||||
E_SK_Msg_Location_Gps_test,
|
E_SK_Msg_Location_Gps_test,
|
||||||
|
|
||||||
|
E_SK_Msg_Gps_start,
|
||||||
E_SK_Msg_Gps_firmware_dl,
|
E_SK_Msg_Gps_firmware_dl,
|
||||||
E_SK_Msg_Gps_OfflineEph_dl,
|
E_SK_Msg_Gps_OfflineEph_dl,
|
||||||
E_SK_Msg_Gps_Eph_Inject,
|
E_SK_Msg_Gps_Eph_Inject,
|
||||||
@ -151,7 +152,7 @@ void yak_strlog(char *logstr);
|
|||||||
extern char yak_logbuf[];
|
extern char yak_logbuf[];
|
||||||
|
|
||||||
#define yak_log(fmt, ...) do{\
|
#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);\
|
yak_strlog(yak_logbuf);\
|
||||||
}while(0)
|
}while(0)
|
||||||
|
|
||||||
|
@ -97,10 +97,12 @@ void icoe_adap_delay_ms(unsigned int ms)
|
|||||||
|
|
||||||
void icoe_adap_set_reset_or_power_low(void)
|
void icoe_adap_set_reset_or_power_low(void)
|
||||||
{
|
{
|
||||||
|
gps_power_off();
|
||||||
}
|
}
|
||||||
|
|
||||||
void icoe_adap_set_reset_or_power_high(void)
|
void icoe_adap_set_reset_or_power_high(void)
|
||||||
{
|
{
|
||||||
|
gps_power_on();
|
||||||
}
|
}
|
||||||
|
|
||||||
int icoe_adap_uart_clear_data(void)
|
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)
|
char icoe_adap_uart_get_char(unsigned int ms)
|
||||||
{
|
{
|
||||||
unsigned char data = 0;
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
|
||||||
unsigned int count = 0;
|
unsigned int count = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@ -168,9 +169,12 @@ char icoe_adap_uart_get_char(unsigned int ms)
|
|||||||
count++;
|
count++;
|
||||||
icoe_adap_delay_ms(1);
|
icoe_adap_delay_ms(1);
|
||||||
} while (count < ms);
|
} while (count < ms);
|
||||||
#endif
|
|
||||||
|
|
||||||
return data;
|
#else
|
||||||
|
|
||||||
|
return gps_uart_read_char(ms);
|
||||||
|
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
char *icoe_adap_mem_malloc(unsigned int size)
|
char *icoe_adap_mem_malloc(unsigned int size)
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
#include "icoe_gps.h"
|
#include "icoe_gps.h"
|
||||||
#include "icoe_xmodem.h"
|
#include "icoe_xmodem.h"
|
||||||
|
|
||||||
|
#include "pkg_718um_mapdef.h"
|
||||||
|
#include "gps_uart_read.h"
|
||||||
|
|
||||||
char* gps_dl_send_buf;
|
char* gps_dl_send_buf;
|
||||||
int gps_file_exist;
|
int gps_file_exist;
|
||||||
|
|
||||||
@ -16,7 +19,7 @@ int icoe_entry_load_mode_by_hw(void)
|
|||||||
|
|
||||||
char cmd[] = {"M!TM!TM!T"};
|
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)
|
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_muti(cmd,strlen(cmd)+1); //TODO
|
||||||
icoe_adap_uart_send_bytes(cmd,strlen(cmd)+1);
|
icoe_adap_uart_send_bytes(cmd,strlen(cmd)+1);
|
||||||
|
|
||||||
|
#if 1
|
||||||
c = icoe_adap_uart_get_char(5); //TODO timeout is 5ms
|
c = icoe_adap_uart_get_char(5); //TODO timeout is 5ms
|
||||||
|
|
||||||
if (c == 'Y')
|
if (c == 'Y')
|
||||||
@ -44,7 +48,13 @@ int icoe_entry_load_mode_by_hw(void)
|
|||||||
c = icoe_adap_uart_get_char(5);//把c读出来
|
c = icoe_adap_uart_get_char(5);//把c读出来
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
char *p = gps_uart_read_string(2);
|
||||||
|
if (strchr(p, 'Y') && strchr(p, 'C'))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (cnt > 20)
|
if (cnt > 20)
|
||||||
{
|
{
|
||||||
ICOE_DEBUG_LOG("------ Gps bootloader waiting for YC Error..\r\n");
|
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 icoe_load_fw(char *bl_filename,char *fw_filename)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
// int ret = 0;
|
||||||
|
|
||||||
FILE* pBL_File = NULL;
|
// FILE* pBL_File = NULL;
|
||||||
FILE* pFW_File = NULL;
|
// FILE* pFW_File = NULL;
|
||||||
//unsigned char baudrate_cmd[] = {"$CFGPRT,,h0,921600,1,35\r\n"};
|
//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 boot_size = 0;
|
||||||
uint32_t fw_size = 0;
|
uint32_t fw_size = 0;
|
||||||
u32 read_size = 0;
|
// u32 read_size = 0;
|
||||||
uint32_t send_size = 0;
|
uint32_t send_size = 0;
|
||||||
int send_cnt = 0;
|
int send_cnt = 0;
|
||||||
int ack_id = 0;
|
int ack_id = 0;
|
||||||
@ -92,7 +102,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
|
|
||||||
//===========================
|
//===========================
|
||||||
// tick = xTaskGetTickCount();
|
// tick = xTaskGetTickCount();
|
||||||
|
#if 0
|
||||||
if ((NULL == bl_filename)||(NULL == fw_filename))
|
if ((NULL == bl_filename)||(NULL == fw_filename))
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
@ -132,20 +142,25 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
gps_file_exist = 1;
|
gps_file_exist = 1;
|
||||||
yak_log("------------ read gps firmware (%s) fopen ok! size = %d\n",fw_filename,fw_size);
|
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)
|
if(icoe_entry_load_mode_by_hw() < 0)
|
||||||
{
|
{
|
||||||
gps_file_exist = 0;
|
gps_file_exist = 0;
|
||||||
fclose(pBL_File);
|
// fclose(pBL_File);
|
||||||
fclose(pFW_File);
|
// fclose(pFW_File);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//===================================
|
//===================================
|
||||||
ICOE_DEBUG_LOG("------------- Gps get YC, ready to download bootloader...\r\n");
|
ICOE_DEBUG_LOG("------------- Gps get YC, ready to download bootloader...\r\n");
|
||||||
|
|
||||||
fseek(pBL_File,0,SEEK_SET);
|
// fseek(pBL_File,0,SEEK_SET);
|
||||||
fseek(pFW_File,0,SEEK_SET);
|
// fseek(pFW_File,0,SEEK_SET);
|
||||||
|
|
||||||
send_size = 0;
|
send_size = 0;
|
||||||
send_cnt = 0;
|
send_cnt = 0;
|
||||||
@ -161,6 +176,8 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
if(ack_id == XMODEM_ACK)
|
if(ack_id == XMODEM_ACK)
|
||||||
{
|
{
|
||||||
memset(gps_dl_send_buf,0,WRITE_BUF_SIZE+1);
|
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);
|
read_size = fread(gps_dl_send_buf,1,WRITE_BUF_SIZE,pBL_File);
|
||||||
if (0 == read_size)
|
if (0 == read_size)
|
||||||
{
|
{
|
||||||
@ -172,12 +189,13 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
return -1;
|
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]);
|
//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++;
|
send_cnt++;
|
||||||
|
|
||||||
icoe_xmodem_send_frame(gps_dl_send_buf,send_cnt,WRITE_BUF_SIZE);
|
icoe_xmodem_send_frame(gps_dl_send_buf,send_cnt,WRITE_BUF_SIZE);
|
||||||
ack_id = icoe_adap_uart_get_char(10);
|
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)
|
if (ack_id == XMODEM_ACK)
|
||||||
{
|
{
|
||||||
send_size += WRITE_BUF_SIZE;
|
send_size += WRITE_BUF_SIZE;
|
||||||
@ -191,12 +209,20 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
succ_flag=0;
|
succ_flag=0;
|
||||||
return -1;
|
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
|
else
|
||||||
{
|
{
|
||||||
if(ack_id == XMODEM_ACK)
|
if(ack_id == XMODEM_ACK)
|
||||||
{
|
{
|
||||||
memset(gps_dl_send_buf,0,WRITE_BUF_SIZE + 1);
|
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);
|
read_size = fread(gps_dl_send_buf,1,WRITE_BUF_SIZE,pBL_File);
|
||||||
if (0 == read_size)
|
if (0 == read_size)
|
||||||
{
|
{
|
||||||
@ -208,6 +234,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
return -1;
|
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]);
|
//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++;
|
send_cnt++;
|
||||||
icoe_xmodem_send_frame(gps_dl_send_buf,send_cnt,boot_size-send_size);
|
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)
|
if(retry_num++ > 3)
|
||||||
{
|
{
|
||||||
ICOE_DEBUG_LOG("------------- boot loader fail:=3=\r\n");
|
ICOE_DEBUG_LOG("------------- boot loader fail:=3=\r\n");
|
||||||
fclose(pBL_File);
|
// fclose(pBL_File);
|
||||||
fclose(pFW_File);
|
// fclose(pFW_File);
|
||||||
succ_flag = 0;
|
succ_flag = 0;
|
||||||
gps_file_exist = 0;
|
gps_file_exist = 0;
|
||||||
return -1;
|
return -1;
|
||||||
@ -243,8 +270,8 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
else if (ack_id == XMODEM_CAN)
|
else if (ack_id == XMODEM_CAN)
|
||||||
{
|
{
|
||||||
ICOE_DEBUG_LOG("------------- boot loader fail:=4=\r\n");
|
ICOE_DEBUG_LOG("------------- boot loader fail:=4=\r\n");
|
||||||
fclose(pBL_File);
|
// fclose(pBL_File);
|
||||||
fclose(pFW_File);
|
// fclose(pFW_File);
|
||||||
succ_flag = 0;
|
succ_flag = 0;
|
||||||
gps_file_exist = 0;
|
gps_file_exist = 0;
|
||||||
return -1;
|
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)
|
if(succ_flag)
|
||||||
{
|
{
|
||||||
@ -263,12 +290,12 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
ICOE_DEBUG_LOG("------------- boot loader fail:=6=\r\n");
|
ICOE_DEBUG_LOG("------------- boot loader fail:=6=\r\n");
|
||||||
fclose(pFW_File);
|
// fclose(pFW_File);
|
||||||
succ_flag = 0;
|
succ_flag = 0;
|
||||||
gps_file_exist = 0;
|
gps_file_exist = 0;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
ret = 0;
|
// ret = 0;
|
||||||
ICOE_DEBUG_LOG("------------- wait for gps chip to run bootloader\r\n");
|
ICOE_DEBUG_LOG("------------- wait for gps chip to run bootloader\r\n");
|
||||||
succ_flag = 0;
|
succ_flag = 0;
|
||||||
|
|
||||||
@ -295,7 +322,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
ret ++;
|
ret ++;
|
||||||
}
|
}
|
||||||
while(ret < 1000);
|
while(ret < 1000);
|
||||||
#else
|
#elif 0
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
char c = icoe_adap_uart_get_char(5);
|
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)
|
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;
|
succ_flag = 1;
|
||||||
//gps_dl_recv_buf[0] = 0;
|
//gps_dl_recv_buf[0] = 0;
|
||||||
break;
|
break;
|
||||||
@ -316,25 +343,25 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
while(ret < 1000);
|
while(ret < 1000);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(succ_flag)
|
// if(succ_flag)
|
||||||
{
|
// {
|
||||||
ICOE_DEBUG_LOG("------------- bootloader run ok.\r\n");
|
// ICOE_DEBUG_LOG("------------- bootloader run ok.\r\n");
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
ICOE_DEBUG_LOG("------------- bootloader run fail.\r\n");
|
// ICOE_DEBUG_LOG("------------- bootloader run fail.\r\n");
|
||||||
fclose(pFW_File);
|
// // fclose(pFW_File);
|
||||||
succ_flag = 0;
|
// succ_flag = 0;
|
||||||
gps_file_exist = 0;
|
// gps_file_exist = 0;
|
||||||
return -1;
|
// return -1;
|
||||||
}
|
// }
|
||||||
|
|
||||||
ICOE_DEBUG_LOG("------------- Download firmware...\r\n");
|
ICOE_DEBUG_LOG("------------- Download firmware...\r\n");
|
||||||
|
|
||||||
|
|
||||||
//icoe_adap_delay_ms(5);
|
//icoe_adap_delay_ms(5);
|
||||||
//memcpy(cmd,"2\n",3);
|
// memcpy(cmd,"2\n",3);
|
||||||
icoe_adap_uart_send_bytes(cmd,2);
|
// icoe_adap_uart_send_bytes(cmd,2);
|
||||||
|
|
||||||
succ_flag = 0;
|
succ_flag = 0;
|
||||||
#if 0
|
#if 0
|
||||||
@ -375,7 +402,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
icoe_adap_delay_ms(25);
|
icoe_adap_delay_ms(25);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
icoe_adap_delay_ms(5);
|
icoe_adap_delay_ms(25);
|
||||||
|
|
||||||
//icoe_adap_uart_send_bytes(baudrate_cmd,2);
|
//icoe_adap_uart_send_bytes(baudrate_cmd,2);
|
||||||
//icoe_adap_delay_ms(5);
|
//icoe_adap_delay_ms(5);
|
||||||
@ -397,6 +424,8 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
if(ack_id == XMODEM_ACK)
|
if(ack_id == XMODEM_ACK)
|
||||||
{
|
{
|
||||||
memset(gps_dl_send_buf,0,WRITE_BUF_SIZE+1);
|
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);
|
read_size = fread(gps_dl_send_buf,1,WRITE_BUF_SIZE,pFW_File);
|
||||||
if (0 == read_size)
|
if (0 == read_size)
|
||||||
{
|
{
|
||||||
@ -407,11 +436,13 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
return -1;
|
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]);
|
//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++;
|
send_cnt++;
|
||||||
|
|
||||||
icoe_xmodem_send_frame(gps_dl_send_buf,send_cnt,WRITE_BUF_SIZE);
|
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)
|
if (ack_id == XMODEM_ACK)
|
||||||
{
|
{
|
||||||
send_size += WRITE_BUF_SIZE;
|
send_size += WRITE_BUF_SIZE;
|
||||||
@ -425,12 +456,26 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
succ_flag=0;
|
succ_flag=0;
|
||||||
return -1;
|
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
|
else
|
||||||
{
|
{
|
||||||
if(ack_id == XMODEM_ACK)
|
if(ack_id == XMODEM_ACK)
|
||||||
{
|
{
|
||||||
memset(gps_dl_send_buf,0,WRITE_BUF_SIZE + 1);
|
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);
|
read_size = fread(gps_dl_send_buf,1,WRITE_BUF_SIZE,pFW_File);
|
||||||
if (0 == read_size)
|
if (0 == read_size)
|
||||||
{
|
{
|
||||||
@ -442,6 +487,7 @@ int icoe_load_fw(char *bl_filename,char *fw_filename)
|
|||||||
return -1;
|
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]);
|
//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++;
|
send_cnt++;
|
||||||
icoe_xmodem_send_frame(gps_dl_send_buf,send_cnt,fw_size-send_size);
|
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)
|
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;
|
ack_id = XMODEM_EOT;
|
||||||
while (ack_id != XMODEM_ACK)
|
while (ack_id != XMODEM_ACK)
|
||||||
{
|
{
|
||||||
if(retry_num++ > 3)
|
if(retry_num++ > 3)
|
||||||
{
|
{
|
||||||
ICOE_DEBUG_LOG("------------- gps firmware fail:=3=\r\n");
|
ICOE_DEBUG_LOG("------------- gps firmware fail:=3=\r\n");
|
||||||
fclose(pBL_File);
|
// fclose(pBL_File);
|
||||||
fclose(pFW_File);
|
// fclose(pFW_File);
|
||||||
succ_flag = 0;
|
succ_flag = 0;
|
||||||
gps_file_exist = 0;
|
gps_file_exist = 0;
|
||||||
return -1;
|
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");
|
ICOE_DEBUG_LOG("------------- gps firmware fail:=4=\r\n");
|
||||||
|
|
||||||
fclose(pFW_File);
|
// fclose(pFW_File);
|
||||||
succ_flag = 0;
|
succ_flag = 0;
|
||||||
gps_file_exist = 0;
|
gps_file_exist = 0;
|
||||||
return -1;
|
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)
|
if(succ_flag)
|
||||||
{
|
{
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
#include "HTTPClient.h"
|
#include "HTTPClient.h"
|
||||||
#include "icoe_offline_eph.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);
|
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);
|
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);
|
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 gps_uart_read_char(unsigned int ms)
|
||||||
{
|
{
|
||||||
char ret_char = 0;
|
int cnt = 0;
|
||||||
#if 0
|
gps_uart_drv->Receive(read_buf, 1);
|
||||||
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;
|
|
||||||
|
|
||||||
|
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;
|
return read_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int gps_uart_send_byte(char byte)
|
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)
|
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)
|
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;
|
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;
|
isRecvComplete = true;
|
||||||
|
// SK_SendMsg_ToGpsUart(E_SK_Msg_Gps_Uart_recv,NULL,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event & ARM_USART_EVENT_SEND_COMPLETE)
|
if(event & ARM_USART_EVENT_SEND_COMPLETE)
|
||||||
{
|
{
|
||||||
isSendComplete = true;
|
isSendComplete = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event & (ARM_USART_EVENT_RX_BREAK | ARM_USART_EVENT_RX_FRAMING_ERROR | ARM_USART_EVENT_RX_PARITY_ERROR))
|
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);
|
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)
|
static void gps_uart_init(void)
|
||||||
@ -290,17 +330,12 @@ bool gps_firmware_version_check()
|
|||||||
|
|
||||||
void gnss_location_cb(GpsLocation* location)
|
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 gps_icoe_firmware_download()
|
||||||
{
|
{
|
||||||
int ret = 0;
|
return icoe_load_fw(GPS_BOOTLOAD_PKG_NAME,GPS_FIRMWARE_PKG_NAME);
|
||||||
|
|
||||||
icoe_load_fw(GPS_BOOTLOAD_PKG_NAME,GPS_FIRMWARE_PKG_NAME);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *httpget_url_gen()
|
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)
|
static void gps_uart_task_entry(void *thread_input)
|
||||||
{
|
{
|
||||||
//int ret;
|
|
||||||
nmea_reader_init();
|
nmea_reader_init();
|
||||||
nmea_gnss_set_callback(gnss_location_cb,NULL,NULL);
|
nmea_gnss_set_callback(gnss_location_cb,NULL,NULL);
|
||||||
gps_uart_init();
|
gps_uart_init();
|
||||||
gps_power_gpio_init();
|
gps_power_gpio_init();
|
||||||
|
// gps_power_on();
|
||||||
#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_state = E_GPS_State_init;
|
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)
|
while(1)
|
||||||
{
|
{
|
||||||
SK_Msg_S msg = {0};
|
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)
|
if (osMessageQueueGet(gGpsUartTaskQueque, &msg, 0, osWaitForever) == osOK)
|
||||||
{
|
{
|
||||||
|
yak_log("gps uart queue recv msgid = %d\r\n", msg.msg_id);
|
||||||
|
|
||||||
//消息处理
|
//消息处理
|
||||||
switch (msg.msg_id)
|
switch (msg.msg_id)
|
||||||
{
|
{
|
||||||
|
case E_SK_Msg_Gps_start:
|
||||||
|
{}
|
||||||
|
break;
|
||||||
|
|
||||||
case E_SK_Msg_Gps_Uart_recv:
|
case E_SK_Msg_Gps_Uart_recv:
|
||||||
{
|
{
|
||||||
//uint32_t r_len = 0;
|
|
||||||
uint32_t len = gps_uart_drv->GetRxCount();
|
uint32_t len = gps_uart_drv->GetRxCount();
|
||||||
|
|
||||||
|
yak_log("uart recv len=%d\r\n", len);
|
||||||
|
|
||||||
while(len)
|
while(len)
|
||||||
{
|
{
|
||||||
if (GPS_UART_READ_Buf_MaxLen<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;
|
len -= GPS_UART_READ_Buf_MaxLen;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gps_uart_drv->Receive(read_buf, len);
|
|
||||||
read_buf[len] = 0;
|
read_buf[len] = 0;
|
||||||
len = 0;
|
len = 0;
|
||||||
//icoe_gps_nmea_parse();
|
|
||||||
}
|
}
|
||||||
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;
|
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))
|
if ((E_GPS_State_init == gps_state)||(E_GPS_State_stop == gps_state))
|
||||||
{
|
{
|
||||||
gps_state = E_GPS_State_downloading;
|
gps_state = E_GPS_State_downloading;
|
||||||
|
|
||||||
|
yak_log("gps firmware download start");
|
||||||
gps_icoe_firmware_download();
|
gps_icoe_firmware_download();
|
||||||
|
|
||||||
if (E_GPS_State_stop != gps_state)
|
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);
|
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");
|
yak_strlog("############## Failed to create gps uart thread\n");
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
gGpsUartTaskQueque = osMessageQueueNew(GPS_UART_TASK_QUEUE_SIZE, sizeof(SK_Msg_S), NULL);
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -380,12 +380,14 @@ void SK_MainTask_Entry(void *appInfo)
|
|||||||
//Led_Show_Update();
|
//Led_Show_Update();
|
||||||
|
|
||||||
osDelay(3000);
|
osDelay(3000);
|
||||||
|
|
||||||
|
slpManAONIOPowerOn(); // AGPIO
|
||||||
|
|
||||||
SK_SocketTask_Init();
|
SK_SocketTask_Init();
|
||||||
//Sk_FotaApp_Init();
|
//Sk_FotaApp_Init();
|
||||||
SK_PPG_Task_Init();
|
SK_PPG_Task_Init();
|
||||||
//SK_LocationTask_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));
|
yak_log("----- long size=%d,double size=%d", sizeof(longsize), sizeof(doublesize));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user