Initial import of NFC GNSS SDK project
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
/*==========================================================================================================
|
||||
Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved.
|
||||
Quectel Wireless Solutions Proprietary and Confidential.
|
||||
===========================================================================================================*/
|
||||
|
||||
/*==========================================================================================================
|
||||
|
||||
EDIT HISTORY FOR MODULE
|
||||
|
||||
This section contains comments describing changes made to the module.
|
||||
Notice that changes are listed in reverse chronological order.
|
||||
|
||||
WHEN WHO WHAT, WHERE, WHY
|
||||
------------ ------- -------------------------------------------------------------------------------
|
||||
09/04/2022 Pony.Ma 此文件服务内核加载APP,进行APP的 RO/RW/BSS的加载和初始化
|
||||
|
||||
09/04/2022 Sharon.li 在内核跳转APP之前,进行用户fs的挂载和初始化
|
||||
===========================================================================================================*/
|
||||
/*ASR 头文件*/
|
||||
#include "global_types.h"
|
||||
#include "utilities.h"
|
||||
#include "ptable.h"
|
||||
#include "csw_mem.h"
|
||||
#include "main.h"
|
||||
#include "LzmaLib.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "ql_ocpu_api.h"
|
||||
#include "ql_appinit.h"
|
||||
#include "quec_fs.h"
|
||||
#include "quec_spi_nor.h"
|
||||
#include "lfs_cache.h"
|
||||
#include "loadTable.h"
|
||||
#include "quec_init.h"
|
||||
|
||||
/*----------- External include files -----------------------------------------*/
|
||||
#if defined(__arm)
|
||||
#include <locale.h>
|
||||
#endif
|
||||
|
||||
#ifdef QUECTEL_OPEN_CPU
|
||||
|
||||
#define QUEC_OPEN_APP_BACKUP 1 /*APP备份功能 0:关闭,1:开启 */
|
||||
int quec_app_backup_enable = QUEC_OPEN_APP_BACKUP;
|
||||
|
||||
#ifdef QUEC_NORFLASH_ERASE_OPTIMIZE
|
||||
//用户补擦区域数组,默认开启customer_fs分区补擦,分区名字符串长度必须小于16
|
||||
const char USER_ERASE_RECORD_AREA[2][16]={"customer_fs", {0}};
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
*
|
||||
* Name:
|
||||
*
|
||||
* Description: 将app镜像拷贝到执行位置,如果是ramapp则将正ro+rw拷贝到ram_addr
|
||||
* 若是xipapp则只会将 rw拷贝到ram_addr
|
||||
*
|
||||
* Parameters: app_name app分区名;ram_addr appram地址
|
||||
*
|
||||
* Returns:
|
||||
*
|
||||
* Notes:
|
||||
*
|
||||
***********************************************************************/
|
||||
extern int copy_customer_app_from_flash_to_psram(char *app_name,unsigned int ram_addr);
|
||||
#ifdef QUEC_APP_FULL_FOTA
|
||||
extern BOOL IsFullfota_app(void);
|
||||
#endif
|
||||
void ql_boot(void);
|
||||
|
||||
|
||||
void ql_app_start_prepare(void)
|
||||
{
|
||||
#ifdef QUEC_APP_FULL_FOTA
|
||||
if(!IsFullfota_app())
|
||||
#endif
|
||||
{
|
||||
if(copy_customer_app_from_flash_to_psram("customer_app",(unsigned int)QUECTEL_OPEN_CPU_ENTRY)){
|
||||
//uart_printf("file:%s,function:%s,line:%d\r\n", __FILE__,__func__,__LINE__);
|
||||
ASSERT(0);
|
||||
}
|
||||
ql_boot();
|
||||
}
|
||||
}
|
||||
|
||||
void ql_boot(void)
|
||||
{
|
||||
ql_boot_2("customer_app",(unsigned int)QUECTEL_OPEN_CPU_ENTRY);
|
||||
}
|
||||
|
||||
void ql_kernel(void)
|
||||
{
|
||||
_ptentry* partition_entrance = NULL;
|
||||
|
||||
partition_entrance = ptable_find_entry("customer_fs");
|
||||
quec_app_log("0x%x , 0x%x",partition_entrance->vstart,partition_entrance->vstart & 0x80000000);
|
||||
//挂载文件系统
|
||||
#ifdef EXTERNAL_SPI_NORFLASH_FS
|
||||
if(partition_entrance->vstart >= 0x90000000){
|
||||
extern int quec_get_extflash_select_port(void);
|
||||
int port=quec_get_extflash_select_port();
|
||||
quec_app_log("SPI FS ADDR:0X%08x SIZE:0x%x",partition_entrance->start,partition_entrance->size);
|
||||
qextfs_init(U_DISK_SYM, "customer_fs",0,port, partition_entrance->start, partition_entrance->size);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
qfs_init(U_DISK_SYM, "customer_fs", 0);
|
||||
}
|
||||
#ifdef QUECTEL_OPEN_CPU //增加open项目在fs中配置audio参数文件功能
|
||||
#ifndef NO_AUDIO
|
||||
extern void ql_update_audio_parameters(void);
|
||||
ql_update_audio_parameters();
|
||||
|
||||
#if defined(ASR_PLATFORM_CRANELR) || defined(ASR_PLATFORM_CRANELRH)
|
||||
#include "AudioHAL.h"
|
||||
#if defined (__QUECTEL_PROJECT_EC600KCN_LC__) || defined(__QUECTEL_PROJECT_EC600KCN_CC__) || defined (__QUECTEL_PROJECT_EC600KCN_MC__)\
|
||||
|| defined(__QUECTEL_PROJECT_EC600KCN_LK__)|| defined(__QUECTEL_PROJECT_EC600KCN_CK__) || defined(__QUECTEL_PROJECT_EG600AKCN_91LC__)\
|
||||
|| defined(__QUECTEL_PROJECT_EG600AKCN_11LC__)|| defined(__QUECTEL_PROJECT_EG600AKCN_11LG__)
|
||||
AudioHAL_AifSetDevicePort(AUDIOHAL_PORT_SSP2);
|
||||
#elif defined(__QUECTEL_PROJECT_EC800KCN_LC__) || defined(__QUECTEL_PROJECT_EC800KCN_CC__) || defined(__QUECTEL_PROJECT_EG800KCN_GC__)\
|
||||
|| defined(__QUECTEL_PROJECT_EG800KEU_CC__)|| defined (__QUECTEL_PROJECT_EC800KCN_MD__) || defined(__QUECTEL_PROJECT_EC800KCN_MC__)\
|
||||
|| defined (__QUECTEL_PROJECT_EG800KLA_LC__) || defined (__QUECTEL_PROJECT_EG800KEU_LC__)|| defined (__QUECTEL_PROJECT_EG800KLA_CC__)\
|
||||
|| defined (__QUECTEL_PROJECT_EC800KCN_LK__)|| defined (__QUECTEL_PROJECT_EC800KCN_CK__)|| defined (__QUECTEL_PROJECT_EG915KEU_LA__) \
|
||||
|| defined (__QUECTEL_PROJECT_EG800AKCN_91LC__)|| defined (__QUECTEL_PROJECT_EG915KEU_LC__) || defined (__QUECTEL_PROJECT_EG915KEU_LG__)\
|
||||
|| defined (__QUECTEL_PROJECT_EG800AKEU_11LC__)|| defined (__QUECTEL_PROJECT_EG800AKEU_11LG__)|| defined (__QUECTEL_PROJECT_EG800AKLA_11LC__)\
|
||||
|| defined (__QUECTEL_PROJECT_EG800AKCN_11LN__)|| defined (__QUECTEL_PROJECT_EG915KLA_LC__)|| defined (__QUECTEL_PROJECT_EG915KLA_LA__)\
|
||||
|| defined (__QUECTEL_PROJECT_EG800AKLA_11LG__)
|
||||
AudioHAL_AifSetDevicePort(AUDIOHAL_PORT_SSP1);
|
||||
#endif
|
||||
quec_app_log("used audio port %d",AudioHAL_AifGetDevicePort());
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#ifdef QUEC_APP_FULL_FOTA
|
||||
if(!IsFullfota_app())
|
||||
#endif
|
||||
ql_kernel_2("customer_app",(unsigned int)QUECTEL_OPEN_CPU_ENTRY);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void ql_main(void * argv)
|
||||
{
|
||||
ql_main_2("customer_app",(unsigned int)QUECTEL_OPEN_CPU_ENTRY);
|
||||
quec_rtos_task_delete_ex(NULL);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user