123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739 |
- /*================================================================
- Copyright (c) 2020 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution 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
- ------------ ------- -------------------------------------------------------------------------------
- =================================================================*/
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include "ql_app_feature_config.h"
- #include "ql_api_osi.h"
- #include "ql_log.h"
- #include "ql_pin_cfg.h"
- #include "nw_demo.h"
- #include "gpio_demo.h"
- #include "gpio_int_demo.h"
- #include "datacall_demo.h"
- #include "osi_demo.h"
- #include "ql_dev_demo.h"
- #include "adc_demo.h"
- #include "led_cfg_demo.h"
- #include "ql_sim_demo.h"
- #include "power_demo.h"
- #include "ql_api_dev.h"
- #include "app_loader.h"
- #include "hal_config.h"
- #ifdef QL_APP_FEATURE_USB
- #include "usb_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_MMS
- #include "mms_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_UART
- #include "uart_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_RS485
- #include "rs485_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_AUDIO
- #include "audio_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_LCD
- #include "lcd_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_LVGL
- #include "lvgl_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_HTTP
- #include "http_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_FTP
- #include "ftp_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_MQTT
- #include "mqtt_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_SSL
- #include "ssl_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_PING
- #include "ping_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_NTP
- #include "ntp_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_LBS
- #include "lbs_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_QTHSDK
- #include "qthsdk_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_SOCKET
- #include "socket_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_FILE_ZIP
- #include "zip_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_BT
- #ifdef QL_APP_FEATURE_BT_SPP
- #include "bt_spp_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_BT_HFP
- #include "bt_hfp_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_BT_A2DP_AVRCP
- #include "bt_a2dp_avrcp_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_BLE_GATT
- #include "ble_gatt_demo.h"
- #endif
- #endif
- #ifdef QL_APP_FEATURE_FILE
- #include "ql_fs_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_SMS
- #include "sms_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_VOICE_CALL
- #include "voice_call_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_GNSS
- #include "gnss_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_HD_GNSS
- #include "hd_gnss_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_SPI
- #include "spi_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_SPI_NOR_FLASH
- #include "spi_nor_flash_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_SPI4_EXT_NOR_SFFS
- #include "spi4_ext_nor_sffs_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_SPI6_EXT_NOR
- #include "spi6_ext_nor_flash_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_SPI_NAND_FLASH
- #include "spi_nand_flash_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_CAMERA
- #include "camera_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_WIFISCAN
- #include "wifi_scan_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_HTTP_FOTA
- #include "fota_http_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_FTP_FOTA
- #include "fota_ftp_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_DECODER
- #include "decoder_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_APP_IMG_AT
- #include "app_img_at_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_VOLTE
- #include "volte_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_VSIM_ADAPT
- #include "vsim_adapt_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_KEYPAD
- #include "keypad_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_RTC
- #include "ql_rtc_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_SECURE_BOOT
- #include "ql_api_dev.h"
- #endif
- #ifdef QL_APP_FEATURE_USB_CHARGE
- #include "charge_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_QCLOUD_IOT
- #include "qcloud_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_VIRT_AT
- #include "ql_virt_at_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_TTS
- #include "tts_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_I2C
- #include "I2C_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_PBK
- #include "ql_pbk_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_SDMMC
- #include "ql_sdmmc_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_ALI_LINKSDK
- #include "ali_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_USBNET
- #include "usbnet_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_FS_NAND_FLASH
- #include "fs_nand_flash_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_FS_NOR_FLASH
- #include "fs_nor_flash_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_SFTP
- #include "sftp_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_MXML
- #include "mxml_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_CLOUDOTA
- #include "cloudota_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_EMBED_NOR_FLASH
- #include "embed_nor_flash_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_EXT_NOR_FLASH
- #include "ext_nor_flash_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_HILINK
- #include "hilink.h"
- #endif
- #ifdef QL_APP_FEATURE_PSM
- #include "psm_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_STK
- #include "stk_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_GPRS_DATA_TRANSFER
- #include "gprs_data_transfer_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_TP
- #include "tp_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_ALIOTSMARTCARD
- #include "aliotsmartcard_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_ALIPAY_IOT_SDK
- extern void ql_alipay_iot_sdk_app_init(void);
- #endif
- #ifdef QL_APP_FEATURE_NTRIP_RTK
- #include "ntrip_rtk_demo.h"
- #endif
- #ifdef QL_APP_FEATURE_ETHERNET
- #include "ethernet_demo.h"
- #endif
- #define QL_INIT_LOG_LEVEL QL_LOG_LEVEL_INFO
- #define QL_INIT_LOG(msg, ...) QL_LOG(QL_INIT_LOG_LEVEL, "ql_INIT", msg, ##__VA_ARGS__)
- #define QL_INIT_LOG_PUSH(msg, ...) QL_LOG_PUSH("ql_INIT", msg, ##__VA_ARGS__)
- static void prvInvokeGlobalCtors(void)
- {
- extern void (*__init_array_start[])();
- extern void (*__init_array_end[])();
- size_t count = __init_array_end - __init_array_start;
- for (size_t i = 0; i < count; ++i)
- __init_array_start[i]();
- }
- static void ql_init_demo_thread(void *param)
- {
- QL_INIT_LOG("init demo thread enter, param 0x%x", param);
- /*Caution:If the macro of secure boot and the function are opened, download firmware and restart will enable secure boot.
- the secret key cannot be changed forever*/
- #ifdef QL_APP_FEATURE_SECURE_BOOT
- //ql_dev_enable_secure_boot();
- #endif
- #if 0
- ql_gpio_app_init();
- ql_gpioint_app_init();
- #endif
- #ifdef QL_APP_FEATURE_LEDCFG
- ql_ledcfg_app_init();
- #endif
- /*
- 1. 验证usb虚拟U盘功能需要在target.config中打开宏CONFIG_QUEC_PROJECT_FEATURE_USB_MASS_STORAGE
- 2. 映射sd卡到PC端需要打开sd卡demo(ql_sdmmc_app_init)去挂载sd卡文件系统
- 3. 映射6线flash到PC端需要打开6线flash demo(ql_spi6_ext_nor_flash_demo_init)挂载6线flash文件系统
- */
- #ifdef QL_APP_FEATURE_USB
- //ql_usb_app_init();
- #endif
- #ifdef QL_APP_FEATURE_AUDIO
- //ql_audio_app_init();
- #ifdef QL_APP_FEATURE_HEADSET_DET
- //ql_headset_det_app_init();
- #endif
- #endif
- #ifdef QL_APP_FEATURE_TTS
- /*
- *demo1直接调用TTS库和audio播放api进行TTS播放,
- *demo2对TTS库和audio的播放api进行封装,封装后的TTS api与我司asr系列的TTS api类似
- *注意:由于audio播放器只有一个,因此这两个demo只能运行一个,不能两个demo同时播放
- *用户如需将TTS库放到内核,则在target.config中将 CONFIG_QUEC_PROJECT_FEATURE_TTS_IN_KERNEL 置为 y,
- 并修改分区,将内核分区增大250k左右,其余的内容不变
- */
- //ql_tts_demo1_init();
- //ql_tts_demo2_init();
- #endif
- #ifdef QL_APP_FEATURE_LCD
- //ql_lcd_app_init();
- #endif
- #ifdef QL_APP_FEATURE_LVGL
- //ql_lvgl_app_init();
- #endif
- //ql_nw_app_init();
- //ql_datacall_app_init();
- //ql_osi_demo_init();
-
- #ifdef QL_APP_FEATURE_SDMMC
- //ql_sdmmc_app_init();
- #endif
- #ifdef QL_APP_FEATURE_FILE
- //ql_fs_demo_init();
- #endif
- //ql_dev_app_init();
- //ql_adc_app_init();
-
- #ifdef QL_APP_FEATURE_UART
- //ql_uart_app_init();
- //ql_uart_rb_app_init();
- #endif
- #ifdef QL_APP_FEATURE_RS485
- //ql_rs485_app_init();
- #endif
- #ifdef QL_APP_FEATURE_BT
- #ifdef QL_APP_FEATURE_BT_SPP
- #endif
- #ifdef QL_APP_FEATURE_BLE_GATT
- //ql_ble_gatt_server_demo_init();
- //ql_ble_gatt_client_demo_init();
- #endif
- #ifdef QL_APP_FEATURE_BT_HFP
- //ql_bt_hfp_demo_init();
- #endif
- #ifdef QL_APP_FEATURE_BT_A2DP_AVRCP
- //ql_bt_a2dp_avrcp_app_init();
- #endif
- #endif
- //ql_sim_app_init();
- ql_power_app_init();
- #ifdef QL_APP_FEATURE_PSM
- //ql_psm_app_init();
- #endif
- #ifdef QL_APP_FEATURE_CLOUDOTA
- //ql_cloudota_app_init();
- #endif
- #ifdef QL_APP_FEATURE_PWK
- //ql_pwrkey_app_init();
- #endif
- #ifdef QL_APP_FEATURE_FTP
- //ql_ftp_app_init();
- #endif
- #ifdef QL_APP_FEATURE_HTTP
- //ql_http_app_init();
- //ql_http_post_app_init();
- //ql_http_put_app_init();
- //ql_https_get_app_init();
- #endif
- #ifdef QL_APP_FEATURE_MQTT
- //ql_mqtt_app_init();
- #endif
- #ifdef QL_APP_FEATURE_SSL
- //ql_ssl_app_init();
- #endif
- #ifdef QL_APP_FEATURE_PING
- //ql_ping_app_init();
- #endif
- #ifdef QL_APP_FEATURE_NTP
- //ql_ntp_app_init();
- #endif
- #ifdef QL_APP_FEATURE_LBS
- //ql_lbs_app_init();
- #if defined (QL_APP_FEATURE_WIFISCAN)
- //ql_lbs_wifi_app_init();
- #endif
- #endif
- #ifdef QL_APP_FEATURE_QTHSDK
- //ql_qthsdk_app_init();
- #endif
- #ifdef QL_APP_FEATURE_SOCKET
- //ql_socket_app_init();
- #endif
- #ifdef QL_APP_FEATURE_MMS
- //ql_mms_app_init();
- #endif
- #ifdef QL_APP_FEATURE_SMS
- //ql_sms_app_init();
- #endif
- #ifdef QL_APP_FEATURE_PBK
- //ql_pbk_app_init();
- #endif
- #ifdef QL_APP_FEATURE_STK
- // ql_stk_app_init();
- #endif
- #ifdef QL_APP_FEATURE_VOICE_CALL
- //ql_voice_call_app_init();
- #endif
- #ifdef QL_APP_FEATURE_VOLTE
- //ql_volte_app_init();
- #endif
- #ifdef QL_APP_FEATURE_VSIM_ADAPT
- //ql_vsim_adapt_init();
- #endif
- #ifdef QL_APP_FEATURE_GNSS //内置GNSS
- //ql_gnss_app_init();
- #endif
- #ifdef QL_APP_FEATURE_HD_GNSS //外挂华大GNSS
- //ql_hd_gnss_app_init();
- #endif
- #ifdef QL_APP_FEATURE_FILE_ZIP
- //ql_zip_app_init();
- #endif
- #ifdef QL_APP_FEATURE_SPI
- //ql_spi_demo_init();
- #endif
- #ifdef QL_APP_FEATURE_CAMERA
- /*因为camera被i2c用来演示功能,所以打开camera demo时不可同时打开i2c demo*/
- /*because camera as a demonstration for i2c, so camera demo can not be opened when the i2c demo open */
- //ql_camera_app_init();
- #endif
- #ifdef QL_APP_FEATURE_SPI_NOR_FLASH
- //ql_spi_nor_flash_demo_init();
- #endif
- #ifdef QL_APP_FEATURE_SPI4_EXT_NOR_SFFS
- //ql_spi4_ext_nor_sffs_demo_init();
- #endif
- #ifdef QL_APP_FEATURE_SPI6_EXT_NOR
- //ql_spi6_ext_nor_flash_demo_init();
- #endif
- #ifdef QL_APP_FEATURE_SPI_NAND_FLASH
- //ql_spi_nand_flash_demo_init();
- #endif
- #if defined (QL_APP_FEATURE_WIFISCAN)
- //ql_wifiscan_app_init();
- #endif
- #ifdef QL_APP_FEATURE_HTTP_FOTA
- //ql_fota_http_app_init();
- #endif
- #ifdef QL_APP_FEATURE_FTP_FOTA
- //ql_fota_ftp_app_init();
- #endif
- #ifdef QL_APP_FEATURE_DECODER
- //ql_decoder_app_init();
- #endif
- #ifdef QL_APP_FEATURE_APP_IMG_AT
- //ql_app_img_at_init();
- #endif
- #ifdef QL_APP_FEATURE_KEYPAD
- //ql_keypad_app_init();
- #endif
- #ifdef QL_APP_FEATURE_RTC
- //ql_rtc_app_init();
- #endif
- #ifdef QL_APP_FEATURE_USB_CHARGE
- //ql_charge_app_init();
- #endif
- #ifdef QL_APP_FEATURE_ALI_LINKSDK
- //ql_ali_sdk_mqtt_client_test_init(); /* mqtt_basic_demo.c */
- //ql_ali_sdk_bootstrap_test_init(); /* bootstrap_posix_demo.c */
- //ql_ali_sdk_cota_test_init(); /* cota_basic_demo.c */
- //ql_ali_sdk_das_test_init(); /* das_basic_demo.c */
- //ql_ali_sdk_data_model_test_init(); /* data_model_basic_demo.c */
- //ql_ali_sdk_devinfo_test_init(); /* devinfo_posix_demo.c */
- //ql_ali_sdk_diag_test_init(); /* diag_basic_demo.c */
- //ql_ali_sdk_dynreg_test_init(); /* dynreg_basic_demo.c */
- //ql_ali_sdk_dynregmq_test_init(); /* dynregmq_basic_demo.c */
- //ql_ali_sdk_fota_test_init(); /* fota_basic_demo.c */
- //ql_ali_sdk_http_client_test_init(); /* http_basic_demo.c */
- //ql_ali_sdk_logpost_test_init(); /* logpost_basic_demo.c */
- //ql_ali_sdk_mqtt_broadcast_test_init(); /* mqtt_broadcast_demo.c */
- //ql_ali_sdk_rrpc_test_init(); /* mqtt_rrpc_demo.c */
- //ql_ali_sdk_ntp_test_init(); /* ntp_posix_demo.c */
- //ql_ali_sdk_shadow_test_init(); /* shadow_basic_demo.c */
- #endif
- #ifdef QL_APP_FEATURE_QCLOUD_IOT
- //light_data_template_sample_start();/* light_data_template_sample_start_demo.c */
- //mqtt_sample_start(); /* mqtt_sample_start_demo.c */
- //data_template_sample_start(); /* data_template_sample_start_demo.c */
- //ota_mqtt_sample_start(); /* ota_mqtt_sample_start_demo.c */
- //raw_data_sample_start(); /* raw_data_sample_start_demo.c */
- //dynreg_dev_sample_start(); /* dynreg_dev_sample_start_demo.c */
- //gateway_sample_start(); /* gateway_sample_start_demo.c */
- #endif
-
- #ifdef QL_APP_FEATURE_VIRT_AT
- //ql_virt_at_app_init();
- #endif
- #ifdef QL_APP_FEATURE_I2C
- /*因为i2c通过camera来演示功能,所以打开i2c demo时不可同时打开camera demo*/
- /*because I2C uses the camera as a demonstration, so i2c demo can not be opened when the camera demo open */
- //ql_i2c_demo_init();
- #endif
- #ifdef QL_APP_FEATURE_USBNET
- //ql_usbnet_app_init();
- #endif
- #ifdef QL_APP_FEATURE_FS_NAND_FLASH
- //ql_fs_nand_flash_demo_init();
- #endif
- #ifdef QL_APP_FEATURE_FS_NOR_FLASH
- //ql_fs_nor_flash_demo_init();
- #endif
- #ifdef QL_APP_FEATURE_SFTP
- //ql_sftp_app_init();
- #endif
- #ifdef QL_APP_FEATURE_MXML
- //ql_mxml_app_init();
- #endif
- #ifdef QL_APP_FEATURE_EMBED_NOR_FLASH
- //ql_embed_nor_flash_app_init();
- #endif
- #ifdef QL_APP_FEATURE_EXT_NOR_FLASH
- //ql_ext_nor_flash_app_init();
- #endif
- #ifdef QL_APP_FEATURE_HILINK
- //hilink_main();
- #endif
- #ifdef QL_APP_FEATURE_GPRS_DATA_TRANSFER
- //ql_gprs_data_transfer_app_init();
- #endif
- #ifdef QL_APP_FEATURE_TP
- //ql_tp_demo_init();
- #endif
- #ifdef QL_APP_FEATURE_ALIPAY_IOT_SDK
- //ql_alipay_iot_sdk_app_init();
- #endif
- #ifdef QL_APP_FEATURE_ALIOTSMARTCARD
- //ql_aliotsmartcard_app_init();
- #endif
- #ifdef QL_APP_FEATURE_NTRIP_RTK
- //ql_ntrip_rtk_demo_init();
- #endif
- #ifdef QL_APP_FEATURE_ETHERNET
- //ql_ethernet_demo_init();
- #endif
- ql_rtos_task_sleep_ms(1000); /*Chaos change: set to 1000 for the camera power on*/
- /*To save logs to sdcard/nandflash, you must call this function after initializing sdcard/nandflash file system;*/
- /*Logs before this point can be output via USB or debug port, which can be configured in prvTraceInit of app_start*/
- //ql_fs_trace_init();
- #ifdef QL_APP_FEATURE_APPIMG2
- //void appimg_jump(void);
- //appimg_jump();
- #endif
- ql_rtos_task_delete(NULL);
- }
- int appimg_enter(void *param)
- {
- QlOSStatus err = QL_OSI_SUCCESS;
- ql_task_t ql_init_task = NULL;
-
- QL_INIT_LOG("init demo enter APP2: %s @ %s", QL_APP_VERSION, QL_APP_BUILD_RELEASE_TYPE);
- prvInvokeGlobalCtors();
- if(0 == strcasecmp(QL_APP_BUILD_RELEASE_TYPE, "release"))
- {
- ql_dev_cfg_wdt(1);
- //open the kernel log
- //ql_quec_trace_enable(1);
- }
- else
- {
- ql_dev_cfg_wdt(0);
- //close the kernel log
- //ql_quec_trace_enable(0);
- }
-
- err = ql_rtos_task_create(&ql_init_task, 1024*4, APP_PRIORITY_NORMAL, "ql_init", ql_init_demo_thread, NULL, 1);
- if(err != QL_OSI_SUCCESS)
- {
- QL_INIT_LOG("init failed");
- }
-
- return err;
- }
- void appimg_exit(void)
- {
- QL_INIT_LOG("init demo exit");
- }
- #ifdef QL_APP_FEATURE_APPIMG2
- void appimg_jump(void)
- {
- #if 1
- #ifdef CONFIG_APPIMG_LOAD_FLASH
- //备注:APPIMG分区编译生成的IMG只能在对应分区中运行;例如:APPIMG只能下载到在CONFIG_APPIMG_FLASH_ADDRESS到CONFIG_APPIMG_FLASH_SIZE区间内运行,
- // 如果下载到CONFIG_APPIMG2_FLASH_ADDRESS到CONFIG_APPIMG2_FLASH_SIZE的分区内是不能运行的,跳转的时候检查就会报错。
- const unsigned flash_img_address = (const unsigned)CONFIG_APPIMG_FLASH_ADDRESS;
- const unsigned flash_img_size = (const unsigned)CONFIG_APPIMG_FLASH_SIZE;
- const unsigned flash_ram_address = (const unsigned)CONFIG_APP_FLASHIMG_RAM_ADDRESS;
- const unsigned flash_ram_size = (const unsigned)CONFIG_APP_FLASHIMG_RAM_SIZE;
- #else
- const unsigned flash_ram_address = (const unsigned)CONFIG_APP_FILEIMG_RAM_ADDRESS;
- const unsigned flash_ram_size = (const unsigned)CONFIG_APP_FILEIMG_RAM_SIZE;
- #endif
- #else
- #ifdef CONFIG_APPIMG_LOAD_FLASH
- const unsigned flash_img_address = (const unsigned)CONFIG_APPIMG2_FLASH_ADDRESS;
- const unsigned flash_img_size = (const unsigned)CONFIG_APPIMG2_FLASH_SIZE;
- const unsigned flash_ram_address = (const unsigned)CONFIG_APP2_FLASHIMG_RAM_ADDRESS;
- const unsigned flash_ram_size = (const unsigned)CONFIG_APP2_FLASHIMG_RAM_SIZE;
- #else
- const unsigned flash_ram_address = (const unsigned)CONFIG_APP2_FILEIMG_RAM_ADDRESS;
- const unsigned flash_ram_size = (const unsigned)CONFIG_APP2_FILEIMG_RAM_SIZE;
- #endif
- #endif
- #ifdef CONFIG_APPIMG_LOAD_FLASH
- appImageHandler_t AppImgFlash = {};
- if(ql_app_image_from_flash(flash_img_address,flash_img_size,flash_ram_address,flash_ram_size,&AppImgFlash))
- {
- QL_INIT_LOG("Find app image at 0x%x", flash_img_address);
- AppImgFlash.enter(NULL);
- }
- else
- {
- QL_INIT_LOG("app jump failed");
- }
- #endif
- #ifdef CONFIG_APPIMG_LOAD_FILE
- appImageHandler_t AppImgFile = {};
- if(ql_app_image_from_file(CONFIG_APPIMG_LOAD_FILE_NAME,flash_ram_address,flash_ram_size,&AppImgFile))
- {
- QL_INIT_LOG("Find file image at " CONFIG_APPIMG_LOAD_FILE_NAME);
- AppImgFile.enter(NULL);
- }
- else
- {
- QL_INIT_LOG("app jump failed");
- }
- #endif
- }
- #endif
|