1、Makefile 与 CodeBlocks 编译单元对齐,补 make pack / BURN_KEY,增加 build.bat 与固件打包脚本
2、下载脚本同时生成无 Key / 带 Key 镜像,USB 默认烧无 Key,build.bat key 烧带 Key 3、配对超时从 60s 改为 120s 4、增加需求文档
This commit is contained in:
@@ -1,8 +1,14 @@
|
|||||||
|
|
||||||
# make 编译并下载
|
# make 编译并下载,成功后自动打包到 release/
|
||||||
|
# make pack 仅打包(需已编译生成 jl_isd.fw)
|
||||||
# make VERBOSE=1 显示编译详细过程
|
# make VERBOSE=1 显示编译详细过程
|
||||||
# make clean 清除编译临时文件
|
# make clean 清除编译临时文件
|
||||||
#
|
#
|
||||||
|
# USB 烧录(两套镜像都会生成,只烧其中一套):
|
||||||
|
# .\build.bat 或 .\build.bat nokey -> 烧不带 Key
|
||||||
|
# .\build.bat key -> 烧带 Key
|
||||||
|
# make BURN_KEY=1 与 build.bat key 相同
|
||||||
|
#
|
||||||
# 注意: Linux 下编译方式:
|
# 注意: Linux 下编译方式:
|
||||||
# 1. 从 http://pkgman.jieliapp.com/doc/all 处找到下载链接
|
# 1. 从 http://pkgman.jieliapp.com/doc/all 处找到下载链接
|
||||||
# 2. 下载后,解压到 /opt/jieli 目录下,保证
|
# 2. 下载后,解压到 /opt/jieli 目录下,保证
|
||||||
@@ -31,6 +37,11 @@ export PATH:=$(TOOL_DIR);$(PATH)
|
|||||||
FIXBAT := tools\utils\fixbat.exe # 用于处理 utf8->gbk 编码问题
|
FIXBAT := tools\utils\fixbat.exe # 用于处理 utf8->gbk 编码问题
|
||||||
POST_SCRIPT := cpu/br28/tools/download.bat
|
POST_SCRIPT := cpu/br28/tools/download.bat
|
||||||
RUN_POST_SCRIPT := cpu\br28\tools\download.bat
|
RUN_POST_SCRIPT := cpu\br28\tools\download.bat
|
||||||
|
PACK_SCRIPT := powershell -NoProfile -ExecutionPolicy Bypass -File tools\pack_firmware.ps1
|
||||||
|
# USB: 1/key/yes = flash keyed image; default = nokey
|
||||||
|
ifneq ($(filter 1 key yes,$(BURN_KEY)),)
|
||||||
|
export JL_BURN_KEY := 1
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
# Linux 下工具链位置
|
# Linux 下工具链位置
|
||||||
TOOL_DIR := /opt/jieli/pi32v2/bin
|
TOOL_DIR := /opt/jieli/pi32v2/bin
|
||||||
@@ -53,6 +64,7 @@ export PATH:=$(TOOL_DIR):$(PATH)
|
|||||||
FIXBAT := touch # Linux下不需要处理 bat 编码问题
|
FIXBAT := touch # Linux下不需要处理 bat 编码问题
|
||||||
POST_SCRIPT := cpu/br28/tools/download.sh
|
POST_SCRIPT := cpu/br28/tools/download.sh
|
||||||
RUN_POST_SCRIPT := bash $(POST_SCRIPT)
|
RUN_POST_SCRIPT := bash $(POST_SCRIPT)
|
||||||
|
PACK_SCRIPT :=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CC := $(TOOL_DIR)/$(CC)
|
CC := $(TOOL_DIR)/$(CC)
|
||||||
@@ -266,17 +278,9 @@ c_SRC_FILES := \
|
|||||||
apps/common/audio/audio_utils.c \
|
apps/common/audio/audio_utils.c \
|
||||||
apps/common/audio/decode/audio_key_tone.c \
|
apps/common/audio/decode/audio_key_tone.c \
|
||||||
apps/common/audio/decode/decode.c \
|
apps/common/audio/decode/decode.c \
|
||||||
apps/common/audio/demo/audio_demo.c \
|
|
||||||
apps/common/audio/online_debug/aud_data_export.c \
|
|
||||||
apps/common/audio/online_debug/aud_mic_dut.c \
|
|
||||||
apps/common/audio/online_debug/aud_spatial_effect_dut.c \
|
|
||||||
apps/common/audio/online_debug/audio_online_debug.c \
|
|
||||||
apps/common/audio/sine_make.c \
|
apps/common/audio/sine_make.c \
|
||||||
apps/common/audio/uartPcmSender.c \
|
apps/common/audio/uartPcmSender.c \
|
||||||
apps/common/audio/wm8978/iic.c \
|
|
||||||
apps/common/audio/wm8978/wm8978.c \
|
|
||||||
apps/common/bt_common/bt_test_api.c \
|
apps/common/bt_common/bt_test_api.c \
|
||||||
apps/common/cJSON/cJSON.c \
|
|
||||||
apps/common/config/app_config.c \
|
apps/common/config/app_config.c \
|
||||||
apps/common/config/bt_profile_config.c \
|
apps/common/config/bt_profile_config.c \
|
||||||
apps/common/config/ci_transport_uart.c \
|
apps/common/config/ci_transport_uart.c \
|
||||||
@@ -286,35 +290,6 @@ c_SRC_FILES := \
|
|||||||
apps/common/dev_manager/dev_manager.c \
|
apps/common/dev_manager/dev_manager.c \
|
||||||
apps/common/dev_manager/dev_reg.c \
|
apps/common/dev_manager/dev_reg.c \
|
||||||
apps/common/dev_manager/dev_update.c \
|
apps/common/dev_manager/dev_update.c \
|
||||||
apps/common/device/gSensor/SC7A20.c \
|
|
||||||
apps/common/device/gSensor/STK8321.c \
|
|
||||||
apps/common/device/gSensor/da230.c \
|
|
||||||
apps/common/device/gSensor/gSensor_manage.c \
|
|
||||||
apps/common/device/gSensor/mpu6050.c \
|
|
||||||
apps/common/device/gx8002_npu/gx8002_enc/gx8002_enc.c \
|
|
||||||
apps/common/device/gx8002_npu/gx8002_npu.c \
|
|
||||||
apps/common/device/gx8002_npu/gx8002_npu_event_deal.c \
|
|
||||||
apps/common/device/gx8002_npu/gx8002_upgrade/app_upgrade/gx_uart_upgrade_app.c \
|
|
||||||
apps/common/device/gx8002_npu/gx8002_upgrade/app_upgrade/gx_uart_upgrade_tws.c \
|
|
||||||
apps/common/device/gx8002_npu/gx8002_upgrade/gx_uart_upgrade.c \
|
|
||||||
apps/common/device/gx8002_npu/gx8002_upgrade/gx_uart_upgrade_porting.c \
|
|
||||||
apps/common/device/gx8002_npu/gx8002_upgrade/sdfile_upgrade/gx_uart_upgrade_sdfile.c \
|
|
||||||
apps/common/device/gx8002_npu/gx8002_upgrade/spp_upgrade/gx_fifo.c \
|
|
||||||
apps/common/device/gx8002_npu/gx8002_upgrade/spp_upgrade/gx_uart_upgrade_spp.c \
|
|
||||||
apps/common/device/imu_sensor/icm_42670p/icm_42670p.c \
|
|
||||||
apps/common/device/imu_sensor/icm_42670p/inv_imu_apex.c \
|
|
||||||
apps/common/device/imu_sensor/icm_42670p/inv_imu_driver.c \
|
|
||||||
apps/common/device/imu_sensor/icm_42670p/inv_imu_transport.c \
|
|
||||||
apps/common/device/imu_sensor/imuSensor_manage.c \
|
|
||||||
apps/common/device/imu_sensor/lsm6dsl/lsm6dsl.c \
|
|
||||||
apps/common/device/imu_sensor/mpu6887/mpu6887p.c \
|
|
||||||
apps/common/device/imu_sensor/mpu9250/mpu9250.c \
|
|
||||||
apps/common/device/imu_sensor/qmi8658/qmi8658c.c \
|
|
||||||
apps/common/device/imu_sensor/sh3001/sh3001.c \
|
|
||||||
apps/common/device/in_ear_detect/in_ear_detect.c \
|
|
||||||
apps/common/device/in_ear_detect/in_ear_manage.c \
|
|
||||||
apps/common/device/ir_sensor/ir_manage.c \
|
|
||||||
apps/common/device/ir_sensor/jsa1221.c \
|
|
||||||
apps/common/device/key/adkey.c \
|
apps/common/device/key/adkey.c \
|
||||||
apps/common/device/key/adkey_rtcvdd.c \
|
apps/common/device/key/adkey_rtcvdd.c \
|
||||||
apps/common/device/key/ctmu_touch_key.c \
|
apps/common/device/key/ctmu_touch_key.c \
|
||||||
@@ -324,7 +299,6 @@ c_SRC_FILES := \
|
|||||||
apps/common/device/key/touch_key.c \
|
apps/common/device/key/touch_key.c \
|
||||||
apps/common/device/key/uart_key.c \
|
apps/common/device/key/uart_key.c \
|
||||||
apps/common/device/norflash/norflash_sfc.c \
|
apps/common/device/norflash/norflash_sfc.c \
|
||||||
apps/common/device/ntc/ntc_det.c \
|
|
||||||
apps/common/device/usb/device/cdc.c \
|
apps/common/device/usb/device/cdc.c \
|
||||||
apps/common/device/usb/device/descriptor.c \
|
apps/common/device/usb/device/descriptor.c \
|
||||||
apps/common/device/usb/device/hid.c \
|
apps/common/device/usb/device/hid.c \
|
||||||
@@ -346,43 +320,11 @@ c_SRC_FILES := \
|
|||||||
apps/common/device/usb/host/usb_storage.c \
|
apps/common/device/usb/host/usb_storage.c \
|
||||||
apps/common/device/usb/usb_config.c \
|
apps/common/device/usb/usb_config.c \
|
||||||
apps/common/device/usb/usb_host_config.c \
|
apps/common/device/usb/usb_host_config.c \
|
||||||
apps/common/ezxml/ezxml.c \
|
|
||||||
apps/common/ezxml/ezxml_example.c \
|
|
||||||
apps/common/fat_nor/cfg_private.c \
|
apps/common/fat_nor/cfg_private.c \
|
||||||
apps/common/fat_nor/virfat_flash.c \
|
apps/common/fat_nor/virfat_flash.c \
|
||||||
apps/common/file_operate/file_bs_deal.c \
|
apps/common/file_operate/file_bs_deal.c \
|
||||||
apps/common/file_operate/file_manager.c \
|
apps/common/file_operate/file_manager.c \
|
||||||
apps/common/icsd/adt/icsd_adt.c \
|
|
||||||
apps/common/icsd/adt/icsd_adt_app.c \
|
|
||||||
apps/common/icsd/anc/icsd_anc_app.c \
|
|
||||||
apps/common/icsd/anc/icsd_anc_board.c \
|
|
||||||
apps/common/icsd/anc/icsd_anc_data.c \
|
|
||||||
apps/common/jl_kws/jl_kws_algo.c \
|
|
||||||
apps/common/jl_kws/jl_kws_audio.c \
|
|
||||||
apps/common/jl_kws/jl_kws_event.c \
|
|
||||||
apps/common/jl_kws/jl_kws_main.c \
|
|
||||||
apps/common/music/breakpoint.c \
|
|
||||||
apps/common/music/music_decrypt.c \
|
|
||||||
apps/common/music/music_id3.c \
|
|
||||||
apps/common/music/music_player.c \
|
|
||||||
apps/common/temp_trim/dtemp_pll_trim.c \
|
apps/common/temp_trim/dtemp_pll_trim.c \
|
||||||
apps/common/test/fs_test.c \
|
|
||||||
apps/common/test/os_test.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_ll_demo/ll_demo.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_ll_demo/ll_task.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_protocol/ble_qiot_import.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_protocol/ble_qiot_llsync_data.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_protocol/ble_qiot_llsync_device.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_protocol/ble_qiot_llsync_event.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_protocol/ble_qiot_llsync_ota.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_protocol/ble_qiot_service.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_protocol/ble_qiot_template.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_protocol/ble_qiot_utils_base64.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_protocol/ble_qiot_utils_crc.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_protocol/ble_qiot_utils_hmac.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_protocol/ble_qiot_utils_log.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_protocol/ble_qiot_utils_md5.c \
|
|
||||||
apps/common/third_party_profile/Tecent_LL/tecent_protocol/ble_qiot_utils_sha1.c \
|
|
||||||
apps/common/third_party_profile/common/3th_profile_api.c \
|
apps/common/third_party_profile/common/3th_profile_api.c \
|
||||||
apps/common/third_party_profile/common/custom_cfg.c \
|
apps/common/third_party_profile/common/custom_cfg.c \
|
||||||
apps/common/third_party_profile/common/mic_rec.c \
|
apps/common/third_party_profile/common/mic_rec.c \
|
||||||
@@ -399,7 +341,6 @@ c_SRC_FILES := \
|
|||||||
apps/common/third_party_profile/jieli/JL_rcsp/adv_app_setting/adv_anc_voice_key.c \
|
apps/common/third_party_profile/jieli/JL_rcsp/adv_app_setting/adv_anc_voice_key.c \
|
||||||
apps/common/third_party_profile/jieli/JL_rcsp/adv_app_setting/adv_bt_name_setting.c \
|
apps/common/third_party_profile/jieli/JL_rcsp/adv_app_setting/adv_bt_name_setting.c \
|
||||||
apps/common/third_party_profile/jieli/JL_rcsp/adv_app_setting/adv_eq_setting.c \
|
apps/common/third_party_profile/jieli/JL_rcsp/adv_app_setting/adv_eq_setting.c \
|
||||||
apps/common/third_party_profile/jieli/JL_rcsp/adv_app_setting/adv_hearing_aid_setting.c \
|
|
||||||
apps/common/third_party_profile/jieli/JL_rcsp/adv_app_setting/adv_high_low_vol_setting.c \
|
apps/common/third_party_profile/jieli/JL_rcsp/adv_app_setting/adv_high_low_vol_setting.c \
|
||||||
apps/common/third_party_profile/jieli/JL_rcsp/adv_app_setting/adv_key_setting.c \
|
apps/common/third_party_profile/jieli/JL_rcsp/adv_app_setting/adv_key_setting.c \
|
||||||
apps/common/third_party_profile/jieli/JL_rcsp/adv_app_setting/adv_led_setting.c \
|
apps/common/third_party_profile/jieli/JL_rcsp/adv_app_setting/adv_led_setting.c \
|
||||||
@@ -416,85 +357,26 @@ c_SRC_FILES := \
|
|||||||
apps/common/third_party_profile/jieli/JL_rcsp/rcsp_updata/rcsp_adv_user_update.c \
|
apps/common/third_party_profile/jieli/JL_rcsp/rcsp_updata/rcsp_adv_user_update.c \
|
||||||
apps/common/third_party_profile/jieli/JL_rcsp/rcsp_updata/rcsp_ch_loader_download.c \
|
apps/common/third_party_profile/jieli/JL_rcsp/rcsp_updata/rcsp_ch_loader_download.c \
|
||||||
apps/common/third_party_profile/jieli/JL_rcsp/rcsp_updata/rcsp_user_update.c \
|
apps/common/third_party_profile/jieli/JL_rcsp/rcsp_updata/rcsp_user_update.c \
|
||||||
apps/common/third_party_profile/jieli/le_hogp.c \
|
|
||||||
apps/common/third_party_profile/jieli/online_db/online_db_deal.c \
|
apps/common/third_party_profile/jieli/online_db/online_db_deal.c \
|
||||||
apps/common/third_party_profile/jieli/online_db/spp_online_db.c \
|
apps/common/third_party_profile/jieli/online_db/spp_online_db.c \
|
||||||
apps/common/third_party_profile/jieli/trans_data_demo/le_trans_data.c \
|
|
||||||
apps/common/third_party_profile/jieli/trans_data_demo/spp_trans_data.c \
|
|
||||||
apps/common/third_party_profile/jieli/wireless_mic/le_wireless_mic_client.c \
|
|
||||||
apps/common/third_party_profile/jieli/wireless_mic/le_wireless_mic_server.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/app/demo/tuya_ble_app_demo.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/app/demo/tuya_ota.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/app/product_test/tuya_ble_app_production_test.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/app/uart_common/tuya_ble_app_uart_common_handler.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/extern_components/mbedtls/aes.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/extern_components/mbedtls/ccm.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/extern_components/mbedtls/hmac.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/extern_components/mbedtls/md5.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/extern_components/mbedtls/sha1.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/extern_components/mbedtls/sha256.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/port/tuya_ble_port.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/port/tuya_ble_port_JL.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/port/tuya_ble_port_peripheral.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_api.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_bulk_data.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_data_handler.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_event.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_event_handler.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_event_handler_weak.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_feature_weather.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_gatt_send_queue.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_heap.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_main.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_mem.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_mutli_tsf_protocol.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_queue.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_storage.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_unix_time.c \
|
|
||||||
apps/common/third_party_profile/tuya_protocol/sdk/src/tuya_ble_utils.c \
|
|
||||||
apps/common/ui/lcd_simple/lcd_simple_api.c \
|
|
||||||
apps/common/ui/lcd_simple/ui.c \
|
|
||||||
apps/common/ui/lcd_simple/ui_mainmenu.c \
|
|
||||||
apps/common/update/testbox_update.c \
|
apps/common/update/testbox_update.c \
|
||||||
apps/common/update/update.c \
|
apps/common/update/update.c \
|
||||||
apps/common/update/update_tws.c \
|
apps/common/update/update_tws.c \
|
||||||
apps/common/update/update_tws_new.c \
|
apps/common/update/update_tws_new.c \
|
||||||
apps/earphone/aec/br28/audio_aec.c \
|
|
||||||
apps/earphone/aec/br28/audio_aec_demo.c \
|
|
||||||
apps/earphone/aec/br28/audio_aec_dms.c \
|
|
||||||
apps/earphone/aec/br28/audio_aec_online.c \
|
|
||||||
apps/earphone/aec/br28/audio_cvp_3mic.c \
|
|
||||||
apps/earphone/aec/br28/audio_cvp_ais_3mic.c \
|
|
||||||
apps/earphone/app_ancbox.c \
|
|
||||||
apps/earphone/app_anctool.c \
|
|
||||||
apps/earphone/app_main.c \
|
apps/earphone/app_main.c \
|
||||||
apps/earphone/app_protocol_deal.c \
|
|
||||||
apps/earphone/app_task_switch.c \
|
apps/earphone/app_task_switch.c \
|
||||||
apps/earphone/app_testbox.c \
|
apps/earphone/app_testbox.c \
|
||||||
apps/earphone/audio_enc_mpt_cvp_ctr.c \
|
|
||||||
apps/earphone/audio_enc_mpt_self.c \
|
|
||||||
apps/earphone/ble_adv.c \
|
apps/earphone/ble_adv.c \
|
||||||
apps/earphone/board/br28/board_jl7016g_hybrid.c \
|
|
||||||
apps/earphone/board/br28/board_jl7018f_demo.c \
|
|
||||||
apps/earphone/board/br28/board_jl701n_anc.c \
|
|
||||||
apps/earphone/board/br28/board_jl701n_btemitter.c \
|
|
||||||
apps/earphone/board/br28/board_jl701n_demo.c \
|
apps/earphone/board/br28/board_jl701n_demo.c \
|
||||||
apps/earphone/bt_auto_test.c \
|
apps/earphone/bt_auto_test.c \
|
||||||
apps/earphone/bt_background.c \
|
apps/earphone/bt_background.c \
|
||||||
apps/earphone/bt_ble.c \
|
apps/earphone/bt_ble.c \
|
||||||
apps/earphone/bt_ble_hid.c \
|
|
||||||
apps/earphone/bt_emitter.c \
|
|
||||||
apps/earphone/bt_tws.c \
|
|
||||||
apps/earphone/default_event_handler.c \
|
apps/earphone/default_event_handler.c \
|
||||||
apps/earphone/dual_update_demo.c \
|
apps/earphone/dual_update_demo.c \
|
||||||
apps/earphone/earphone.c \
|
apps/earphone/earphone.c \
|
||||||
apps/earphone/eartch_event_deal.c \
|
apps/earphone/eartch_event_deal.c \
|
||||||
apps/earphone/font/fontinit.c \
|
|
||||||
apps/earphone/idle.c \
|
apps/earphone/idle.c \
|
||||||
apps/earphone/key_event_deal.c \
|
apps/earphone/key_event_deal.c \
|
||||||
apps/earphone/kws_voice_event_deal.c \
|
|
||||||
apps/earphone/linein/linein.c \
|
|
||||||
apps/earphone/ll_sync_demo/ll_sync_demo.c \
|
|
||||||
apps/earphone/log_config/app_config.c \
|
apps/earphone/log_config/app_config.c \
|
||||||
apps/earphone/log_config/lib_btctrler_config.c \
|
apps/earphone/log_config/lib_btctrler_config.c \
|
||||||
apps/earphone/log_config/lib_btstack_config.c \
|
apps/earphone/log_config/lib_btstack_config.c \
|
||||||
@@ -502,53 +384,44 @@ c_SRC_FILES := \
|
|||||||
apps/earphone/log_config/lib_media_config.c \
|
apps/earphone/log_config/lib_media_config.c \
|
||||||
apps/earphone/log_config/lib_system_config.c \
|
apps/earphone/log_config/lib_system_config.c \
|
||||||
apps/earphone/log_config/lib_update_config.c \
|
apps/earphone/log_config/lib_update_config.c \
|
||||||
apps/earphone/music/sd_music.c \
|
|
||||||
apps/earphone/pbg_demo.c \
|
|
||||||
apps/earphone/pc/pc.c \
|
apps/earphone/pc/pc.c \
|
||||||
apps/earphone/power_manage/app_charge.c \
|
apps/earphone/power_manage/app_charge.c \
|
||||||
apps/earphone/power_manage/app_chargestore.c \
|
|
||||||
apps/earphone/power_manage/app_power_manage.c \
|
apps/earphone/power_manage/app_power_manage.c \
|
||||||
apps/earphone/power_manage/app_umidigi_chargestore.c \
|
|
||||||
apps/earphone/rcsp/jl_phone_app.c \
|
apps/earphone/rcsp/jl_phone_app.c \
|
||||||
apps/earphone/rcsp/rcsp_adv.c \
|
apps/earphone/rcsp/rcsp_adv.c \
|
||||||
apps/earphone/tone_table.c \
|
apps/earphone/tone_table.c \
|
||||||
apps/earphone/trans_data_demo/trans_data_demo.c \
|
|
||||||
apps/earphone/tuya/tuya_app.c \
|
|
||||||
apps/earphone/tuya/tuya_demo.c \
|
|
||||||
apps/earphone/ui/lcd_simple/my_demo.c \
|
|
||||||
apps/earphone/ui_manage.c \
|
apps/earphone/ui_manage.c \
|
||||||
apps/earphone/user_cfg.c \
|
apps/earphone/user_cfg.c \
|
||||||
apps/earphone/version.c \
|
apps/earphone/version.c \
|
||||||
apps/earphone/vol_sync.c \
|
apps/usr_jb_proto/Protocol/jb_product.c \
|
||||||
apps/earphone/wireless_mic/app_main_wireless_mic.c \
|
apps/usr_jb_proto/Protocol/jb_protocol.c \
|
||||||
apps/earphone/wireless_mic/audio/adapter_adc.c \
|
apps/usr_jb_proto/Utils/jb_common.c \
|
||||||
apps/earphone/wireless_mic/audio/adapter_media.c \
|
apps/usr_jb_proto/Utils/jb_ringbuffer.c \
|
||||||
apps/earphone/wireless_mic/audio/wireless/adapter_wireless_dec.c \
|
apps/usr_jb_proto/usr_jb_main.c \
|
||||||
apps/earphone/wireless_mic/audio/wireless/adapter_wireless_enc.c \
|
apps/usr_periph/usr_rtc.c \
|
||||||
apps/earphone/wireless_mic/bt/bt_edr_fun.c \
|
apps/usr_periph/bsp_hw.c \
|
||||||
apps/earphone/wireless_mic/bt/bt_status_event.c \
|
apps/usr_app/app_led.c \
|
||||||
apps/earphone/wireless_mic/idev/adapter_idev.c \
|
apps/usr_app/led.c \
|
||||||
apps/earphone/wireless_mic/idev/idev_bt/adapter_idev_bt.c \
|
apps/usr_app/led_manager.c \
|
||||||
apps/earphone/wireless_mic/idev/idev_bt/idev_ble/adapter_idev_ble.c \
|
apps/usr_app/key.c \
|
||||||
apps/earphone/wireless_mic/idev/idev_mic/adapter_idev_mic.c \
|
apps/usr_app/key_manager.c \
|
||||||
apps/earphone/wireless_mic/odev/adapter_odev.c \
|
apps/usr_app/app_mode.c \
|
||||||
apps/earphone/wireless_mic/odev/odev_bt/adapter_odev_bt.c \
|
apps/usr_app/app_power.c \
|
||||||
apps/earphone/wireless_mic/odev/odev_bt/odev_ble/adapter_odev_ble.c \
|
apps/usr_app/app_pair.c \
|
||||||
apps/earphone/wireless_mic/odev/odev_bt/odev_ble/odev_ble_wireless.c \
|
apps/usr_app/app_boot.c \
|
||||||
apps/earphone/wireless_mic/odev/odev_bt/odev_edr/adapter_odev_edr.c \
|
apps/usr_app/app_function.c \
|
||||||
apps/earphone/wireless_mic/odev/odev_dac/adapter_odev_dac.c \
|
apps/usr_le_code/ble_proto.c \
|
||||||
apps/earphone/wireless_mic/process/adapter_process.c \
|
apps/usr_le_code/bleproto.c \
|
||||||
|
apps/usr_le_code/bleproto_packer.c \
|
||||||
|
apps/usr_le_code/thirdpart/mjson/mjson.c \
|
||||||
|
apps/usr_le_code/usr_le_adv.c \
|
||||||
|
apps/usr_le_code/usr_le_recieve.c \
|
||||||
cpu/br28/adc_api.c \
|
cpu/br28/adc_api.c \
|
||||||
cpu/br28/aec_tool.c \
|
|
||||||
cpu/br28/app_audio.c \
|
cpu/br28/app_audio.c \
|
||||||
cpu/br28/audio_anc.c \
|
|
||||||
cpu/br28/audio_anc_fade_ctr.c \
|
|
||||||
cpu/br28/audio_anc_mult_scene.c \
|
|
||||||
cpu/br28/audio_capture.c \
|
cpu/br28/audio_capture.c \
|
||||||
cpu/br28/audio_codec_clock.c \
|
cpu/br28/audio_codec_clock.c \
|
||||||
cpu/br28/audio_common/audio_mic_codec.c \
|
cpu/br28/audio_common/audio_mic_codec.c \
|
||||||
cpu/br28/audio_cvp_dut.c \
|
cpu/br28/audio_cvp_dut.c \
|
||||||
cpu/br28/audio_cvp_sync.c \
|
|
||||||
cpu/br28/audio_dec.c \
|
cpu/br28/audio_dec.c \
|
||||||
cpu/br28/audio_dec/audio_dec_file.c \
|
cpu/br28/audio_dec/audio_dec_file.c \
|
||||||
cpu/br28/audio_dec/audio_dec_iis.c \
|
cpu/br28/audio_dec/audio_dec_iis.c \
|
||||||
@@ -556,17 +429,8 @@ c_SRC_FILES := \
|
|||||||
cpu/br28/audio_dec/audio_dec_pcm.c \
|
cpu/br28/audio_dec/audio_dec_pcm.c \
|
||||||
cpu/br28/audio_dec/audio_usb_mic.c \
|
cpu/br28/audio_dec/audio_usb_mic.c \
|
||||||
cpu/br28/audio_dec_eff.c \
|
cpu/br28/audio_dec_eff.c \
|
||||||
cpu/br28/audio_demo/audio_adc_demo.c \
|
|
||||||
cpu/br28/audio_demo/audio_dac_demo.c \
|
|
||||||
cpu/br28/audio_demo/audio_fft_demo.c \
|
|
||||||
cpu/br28/audio_demo/audio_matrix_demo.c \
|
|
||||||
cpu/br28/audio_demo/audio_wind_detect_demo.c \
|
|
||||||
cpu/br28/audio_effect_develop.c \
|
|
||||||
cpu/br28/audio_enc.c \
|
cpu/br28/audio_enc.c \
|
||||||
cpu/br28/audio_general.c \
|
cpu/br28/audio_general.c \
|
||||||
cpu/br28/audio_hearing/audio_hearing_aid.c \
|
|
||||||
cpu/br28/audio_hearing/audio_hearing_aid_lp.c \
|
|
||||||
cpu/br28/audio_hearing/audio_sidetone.c \
|
|
||||||
cpu/br28/audio_link.c \
|
cpu/br28/audio_link.c \
|
||||||
cpu/br28/audio_sync.c \
|
cpu/br28/audio_sync.c \
|
||||||
cpu/br28/charge.c \
|
cpu/br28/charge.c \
|
||||||
@@ -574,7 +438,6 @@ c_SRC_FILES := \
|
|||||||
cpu/br28/clock_manager.c \
|
cpu/br28/clock_manager.c \
|
||||||
cpu/br28/eq_config.c \
|
cpu/br28/eq_config.c \
|
||||||
cpu/br28/hw_fft.c \
|
cpu/br28/hw_fft.c \
|
||||||
cpu/br28/icsd_anc_user.c \
|
|
||||||
cpu/br28/iic_hw.c \
|
cpu/br28/iic_hw.c \
|
||||||
cpu/br28/iic_soft.c \
|
cpu/br28/iic_soft.c \
|
||||||
cpu/br28/irflt.c \
|
cpu/br28/irflt.c \
|
||||||
@@ -595,50 +458,13 @@ c_SRC_FILES := \
|
|||||||
cpu/br28/pwm_led.c \
|
cpu/br28/pwm_led.c \
|
||||||
cpu/br28/rdec.c \
|
cpu/br28/rdec.c \
|
||||||
cpu/br28/setup.c \
|
cpu/br28/setup.c \
|
||||||
cpu/br28/smart_voice/aispeech_asr.c \
|
|
||||||
cpu/br28/smart_voice/jl_kws_platform.c \
|
|
||||||
cpu/br28/smart_voice/kws_event.c \
|
|
||||||
cpu/br28/smart_voice/nn_vad.c \
|
|
||||||
cpu/br28/smart_voice/smart_voice_config.c \
|
|
||||||
cpu/br28/smart_voice/smart_voice_core.c \
|
|
||||||
cpu/br28/smart_voice/user_asr.c \
|
|
||||||
cpu/br28/smart_voice/vad_clock_trim.c \
|
|
||||||
cpu/br28/smart_voice/vad_mic.c \
|
|
||||||
cpu/br28/smart_voice/voice_mic_data.c \
|
|
||||||
cpu/br28/sound_device.c \
|
cpu/br28/sound_device.c \
|
||||||
cpu/br28/spatial_effect/spatial_effect.c \
|
|
||||||
cpu/br28/spatial_effect/spatial_effect_imu.c \
|
|
||||||
cpu/br28/spatial_effect/spatial_effect_test.c \
|
|
||||||
cpu/br28/spatial_effect/spatial_effect_tws.c \
|
|
||||||
cpu/br28/spatial_effect/spatial_imu_trim.c \
|
|
||||||
cpu/br28/spi.c \
|
cpu/br28/spi.c \
|
||||||
cpu/br28/tone_player.c \
|
cpu/br28/tone_player.c \
|
||||||
cpu/br28/tws_audio.c \
|
cpu/br28/tws_audio.c \
|
||||||
cpu/br28/uart_dev.c \
|
cpu/br28/uart_dev.c \
|
||||||
cpu/br28/umidigi_chargestore.c \
|
cpu/br28/uart_test.c
|
||||||
apps/usr_jb_proto/Protocol/jb_product.c \
|
|
||||||
apps/usr_jb_proto/Protocol/jb_protocol.c \
|
|
||||||
apps/usr_jb_proto/Utils/jb_common.c \
|
|
||||||
apps/usr_jb_proto/Utils/jb_ringbuffer.c \
|
|
||||||
apps/usr_jb_proto/usr_jb_main.c \
|
|
||||||
apps/usr_periph/usr_rtc.c \
|
|
||||||
apps/usr_periph/bsp_hw.c \
|
|
||||||
apps/usr_app/app_led.c \
|
|
||||||
apps/usr_app/app_mode.c \
|
|
||||||
apps/usr_app/app_power.c \
|
|
||||||
apps/usr_app/app_pair.c \
|
|
||||||
apps/usr_app/app_boot.c \
|
|
||||||
apps/usr_app/app_function.c \
|
|
||||||
apps/usr_app/led.c \
|
|
||||||
apps/usr_app/led_manager.c \
|
|
||||||
apps/usr_app/key.c \
|
|
||||||
apps/usr_app/key_manager.c \
|
|
||||||
apps/usr_le_code/ble_proto.c \
|
|
||||||
apps/usr_le_code/bleproto.c \
|
|
||||||
apps/usr_le_code/bleproto_packer.c \
|
|
||||||
apps/usr_le_code/thirdpart/mjson/mjson.c \
|
|
||||||
apps/usr_le_code/usr_le_adv.c \
|
|
||||||
apps/usr_le_code/usr_le_recieve.c \
|
|
||||||
|
|
||||||
|
|
||||||
# 需要编译的 .S 文件
|
# 需要编译的 .S 文件
|
||||||
@@ -800,7 +626,7 @@ LINK_AT ?= 1
|
|||||||
# 表示下面的不是一个文件的名字,无论是否存在 all, clean, pre_build 这样的文件
|
# 表示下面的不是一个文件的名字,无论是否存在 all, clean, pre_build 这样的文件
|
||||||
# 还是要执行命令
|
# 还是要执行命令
|
||||||
# see: https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
|
# see: https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
|
||||||
.PHONY: all clean pre_build
|
.PHONY: all clean pre_build pack
|
||||||
|
|
||||||
# 不要使用 make 预设置的规则
|
# 不要使用 make 预设置的规则
|
||||||
# see: https://www.gnu.org/software/make/manual/html_node/Suffix-Rules.html
|
# see: https://www.gnu.org/software/make/manual/html_node/Suffix-Rules.html
|
||||||
@@ -809,7 +635,18 @@ LINK_AT ?= 1
|
|||||||
all: pre_build $(OUT_ELF)
|
all: pre_build $(OUT_ELF)
|
||||||
$(info +POST-BUILD)
|
$(info +POST-BUILD)
|
||||||
$(QUITE) $(RUN_POST_SCRIPT) sdk
|
$(QUITE) $(RUN_POST_SCRIPT) sdk
|
||||||
|
ifneq ($(PACK_SCRIPT),)
|
||||||
|
$(info +PACK-FIRMWARE)
|
||||||
|
$(QUITE) $(PACK_SCRIPT)
|
||||||
|
endif
|
||||||
|
|
||||||
|
pack:
|
||||||
|
$(info +PACK-FIRMWARE)
|
||||||
|
ifneq ($(PACK_SCRIPT),)
|
||||||
|
$(QUITE) $(PACK_SCRIPT)
|
||||||
|
else
|
||||||
|
$(error pack script is Windows-only)
|
||||||
|
endif
|
||||||
|
|
||||||
pre_build:
|
pre_build:
|
||||||
$(info +PRE-BUILD)
|
$(info +PRE-BUILD)
|
||||||
|
|||||||
+20
-20
@@ -38,50 +38,50 @@ typedef struct {
|
|||||||
/* 节拍以 ms=0 结尾,循环播放。同向连续步进只改占空比,换向才刹车。 */
|
/* 节拍以 ms=0 结尾,循环播放。同向连续步进只改占空比,换向才刹车。 */
|
||||||
|
|
||||||
static const AppModeStep_t s_mode1[] = { /* 弹力呼吸:慢加速放、慢加速收,最长 2s */
|
static const AppModeStep_t s_mode1[] = { /* 弹力呼吸:慢加速放、慢加速收,最长 2s */
|
||||||
STEP_OUT(600, DUTY_MID), STEP_OUT(2000, DUTY_RUN), STEP_OUT(500, DUTY_PUNCH),
|
STEP_OUT(500, DUTY_MID), STEP_OUT(1200, DUTY_RUN), STEP_OUT(500, DUTY_PUNCH),
|
||||||
STEP_STOP(400),
|
STEP_STOP(400),
|
||||||
STEP_IN(600, DUTY_MID), STEP_IN(2000, DUTY_RUN), STEP_IN(500, DUTY_PUNCH),
|
STEP_IN(500, DUTY_MID), STEP_IN(1200, DUTY_RUN), STEP_IN(500, DUTY_PUNCH),
|
||||||
STEP_STOP(400),
|
STEP_STOP(400),
|
||||||
STEP_END
|
STEP_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const AppModeStep_t s_mode2[] = { /* 飞鸟俯冲:快冲出去,2s 慢慢收回 */
|
static const AppModeStep_t s_mode2[] = { /* 飞鸟俯冲:快冲出去,2s 慢慢收回 */
|
||||||
STEP_OUT(150, DUTY_PUNCH), STEP_OUT(250, DUTY_RUN),
|
STEP_OUT(500, DUTY_PUNCH), STEP_OUT(500, DUTY_RUN),
|
||||||
STEP_STOP(150),
|
STEP_STOP(400),
|
||||||
STEP_IN(2000, DUTY_SOFT), STEP_IN(800, DUTY_MID),
|
STEP_IN(2800, DUTY_MID),
|
||||||
STEP_STOP(400),
|
STEP_STOP(400),
|
||||||
STEP_END
|
STEP_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const AppModeStep_t s_mode3[] = { /* 云阶陀螺:短步往返加长,力度一档档加 */
|
static const AppModeStep_t s_mode3[] = { /* 云阶陀螺:短步往返加长,力度一档档加 */
|
||||||
STEP_OUT(220, DUTY_SOFT), STEP_IN(220, DUTY_SOFT),
|
STEP_OUT(800, DUTY_SOFT), STEP_IN(800, DUTY_SOFT),
|
||||||
STEP_OUT(220, DUTY_MID), STEP_IN(220, DUTY_MID),
|
STEP_OUT(800, DUTY_MID), STEP_IN(800, DUTY_MID),
|
||||||
STEP_OUT(220, DUTY_RUN), STEP_IN(220, DUTY_RUN),
|
STEP_OUT(800, DUTY_RUN), STEP_IN(800, DUTY_RUN),
|
||||||
STEP_STOP(400),
|
STEP_STOP(400),
|
||||||
STEP_END
|
STEP_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const AppModeStep_t s_mode4[] = { /* 起伏攻防:2s 慢逗再猛收 */
|
static const AppModeStep_t s_mode4[] = { /* 起伏攻防:2s 慢逗再猛收 */
|
||||||
STEP_OUT(500, DUTY_SOFT), STEP_OUT(2000, DUTY_MID), STEP_OUT(400, DUTY_RUN),
|
STEP_OUT(500, DUTY_SOFT), STEP_OUT(1200, DUTY_MID), STEP_OUT(500, DUTY_RUN),
|
||||||
STEP_STOP(250),
|
STEP_STOP(400),
|
||||||
STEP_IN(180, DUTY_PUNCH), STEP_IN(400, DUTY_MID),
|
STEP_IN(500, DUTY_PUNCH), STEP_IN(500, DUTY_MID),
|
||||||
STEP_STOP(500),
|
STEP_STOP(400),
|
||||||
STEP_END
|
STEP_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const AppModeStep_t s_mode5[] = { /* 微风拂动:轻点后歇 2s */
|
static const AppModeStep_t s_mode5[] = { /* 微风拂动:轻点后歇 2s */
|
||||||
STEP_OUT(200, DUTY_MID), STEP_STOP(2000),
|
STEP_OUT(500, DUTY_MID), STEP_STOP(1000),
|
||||||
STEP_IN(200, DUTY_MID), STEP_STOP(2000),
|
STEP_IN(500, DUTY_MID), STEP_STOP(1200),
|
||||||
STEP_OUT(400, DUTY_RUN), STEP_STOP(800),
|
STEP_OUT(500, DUTY_RUN), STEP_STOP(800),
|
||||||
STEP_IN(400, DUTY_RUN), STEP_STOP(1500),
|
STEP_IN(500, DUTY_RUN), STEP_STOP(1500),
|
||||||
STEP_END
|
STEP_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const AppModeStep_t s_mode6[] = { /* 闪电快闪:两下轻、两下重,短停防 LVD */
|
static const AppModeStep_t s_mode6[] = { /* 闪电快闪:两下轻、两下重,短停防 LVD */
|
||||||
STEP_OUT(200, DUTY_MID), STEP_IN(200, DUTY_MID),
|
STEP_OUT(400, DUTY_MID), STEP_IN(400, DUTY_MID),
|
||||||
STEP_OUT(400, DUTY_RUN), STEP_IN(400, DUTY_RUN),
|
STEP_OUT(800, DUTY_RUN), STEP_IN(800, DUTY_RUN),
|
||||||
STEP_OUT(100, DUTY_PUNCH), STEP_IN(100, DUTY_PUNCH),
|
STEP_OUT(500, DUTY_PUNCH), STEP_IN(500, DUTY_PUNCH),
|
||||||
STEP_OUT(100, DUTY_PUNCH), STEP_IN(100, DUTY_PUNCH),
|
STEP_OUT(700, DUTY_PUNCH), STEP_IN(700, DUTY_PUNCH),
|
||||||
STEP_STOP(300),
|
STEP_STOP(300),
|
||||||
STEP_END
|
STEP_END
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ AppPairEvt_t app_pair_tick_1ms(uint16_t dt)
|
|||||||
if (s_pair.elapsed_ms >= BOARD_PAIR_TIMEOUT_MS) {
|
if (s_pair.elapsed_ms >= BOARD_PAIR_TIMEOUT_MS) {
|
||||||
s_pair.active = 0;
|
s_pair.active = 0;
|
||||||
s_pair.elapsed_ms = 0;
|
s_pair.elapsed_ms = 0;
|
||||||
log_info("pair timeout 60s, stay on\n");
|
log_info("pair timeout 120s, stay on\n");
|
||||||
return APP_PAIR_EVT_FAIL;
|
return APP_PAIR_EVT_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@
|
|||||||
#define BOARD_KEY_POWER_MS 3000 /**< 深睡:按住 3s 开机;开机中:按住 3s 深睡 */
|
#define BOARD_KEY_POWER_MS 3000 /**< 深睡:按住 3s 开机;开机中:按住 3s 深睡 */
|
||||||
#define BOARD_KEY_PAIR_MS 5000 /**< 深睡:按住 5s 开机并进配对(开机中继续按不住配对) */
|
#define BOARD_KEY_PAIR_MS 5000 /**< 深睡:按住 5s 开机并进配对(开机中继续按不住配对) */
|
||||||
#define BOARD_KEY_DEBOUNCE_MS 20 /**< 按键消抖 */
|
#define BOARD_KEY_DEBOUNCE_MS 20 /**< 按键消抖 */
|
||||||
#define BOARD_PAIR_TIMEOUT_MS (60u * 1000u) /**< 配对超时,失败后保持开机 */
|
#define BOARD_PAIR_TIMEOUT_MS (120u * 1000u) /**< 配对超时 120s,失败后保持开机 */
|
||||||
|
|
||||||
#define BOARD_LED_FAST_ON_MS 100 /**< 配对绿快闪:亮 */
|
#define BOARD_LED_FAST_ON_MS 100 /**< 配对绿快闪:亮 */
|
||||||
#define BOARD_LED_FAST_OFF_MS 100 /**< 配对绿快闪:灭 */
|
#define BOARD_LED_FAST_OFF_MS 100 /**< 配对绿快闪:灭 */
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
@echo off
|
||||||
|
chcp 65001 >nul
|
||||||
|
cd /d "%~dp0"
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
|
||||||
|
REM JieLi make / mkdir_win / rm / fixbat live in tools\utils, not in system PATH
|
||||||
|
set "PATH=%~dp0tools\utils;%PATH%"
|
||||||
|
|
||||||
|
REM USB burn: default nokey. build.bat key / build.bat nokey
|
||||||
|
set "JL_BURN_KEY=0"
|
||||||
|
set "MAKE_ARGS="
|
||||||
|
|
||||||
|
for %%A in (%*) do (
|
||||||
|
if /i "%%~A"=="key" (
|
||||||
|
set "JL_BURN_KEY=1"
|
||||||
|
) else if /i "%%~A"=="nokey" (
|
||||||
|
set "JL_BURN_KEY=0"
|
||||||
|
) else (
|
||||||
|
set "MAKE_ARGS=!MAKE_ARGS! %%~A"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if "!JL_BURN_KEY!"=="1" (
|
||||||
|
echo [build] USB burn: WITH key
|
||||||
|
) else (
|
||||||
|
echo [build] USB burn: NO key
|
||||||
|
)
|
||||||
|
|
||||||
|
make !MAKE_ARGS!
|
||||||
|
exit /b !errorlevel!
|
||||||
@@ -10,10 +10,57 @@ copy ..\..\ota.bin .
|
|||||||
copy ..\..\anc_coeff.bin .
|
copy ..\..\anc_coeff.bin .
|
||||||
copy ..\..\anc_gains.bin .
|
copy ..\..\anc_gains.bin .
|
||||||
|
|
||||||
..\..\isd_download.exe ..\..\isd_config.ini -tonorflash -dev br28 -boot 0x120000 -div8 -wait 300 -uboot ..\..\uboot.boot -app ..\..\app.bin -res ..\..\cfg_tool.bin tone.cfg p11_code.bin -uboot_compress -key RS-5B88.key
|
set "ISD_CMD=..\..\isd_download.exe ..\..\isd_config.ini -dev br28 -boot 0x120000 -div8 -wait 300 -uboot ..\..\uboot.boot -app ..\..\app.bin -res ..\..\cfg_tool.bin tone.cfg p11_code.bin -uboot_compress"
|
||||||
|
|
||||||
:: -format all
|
REM JL_BURN_KEY=1/key : USB flash keyed image; still generate nokey files
|
||||||
::-reboot 2500
|
REM default / 0 / nokey : USB flash nokey image; still generate keyed files
|
||||||
|
set "NOKEY_FLASH="
|
||||||
|
set "KEY_FLASH="
|
||||||
|
if /i "%JL_BURN_KEY%"=="1" goto :usb_key
|
||||||
|
if /i "%JL_BURN_KEY%"=="key" goto :usb_key
|
||||||
|
if /i "%JL_BURN_KEY%"=="yes" goto :usb_key
|
||||||
|
set "NOKEY_FLASH=-tonorflash"
|
||||||
|
echo [download] USB burn: NO key
|
||||||
|
goto :do_isd
|
||||||
|
|
||||||
|
:usb_key
|
||||||
|
set "KEY_FLASH=-tonorflash"
|
||||||
|
echo [download] USB burn: WITH key
|
||||||
|
|
||||||
|
:do_isd
|
||||||
|
REM ---- nokey image ----
|
||||||
|
%ISD_CMD% %NOKEY_FLASH%
|
||||||
|
if exist jl_isd.fw copy /y jl_isd.fw jl_isd_nokey.fw >nul
|
||||||
|
..\..\ufw_maker.exe -fw_to_ufw jl_isd.fw
|
||||||
|
if exist jl_isd.ufw (
|
||||||
|
copy /y jl_isd.ufw update.ufw >nul
|
||||||
|
copy /y jl_isd.ufw update_nokey.ufw >nul
|
||||||
|
del jl_isd.ufw
|
||||||
|
)
|
||||||
|
if exist db_update_data.bin copy /y db_update_data.bin db_update_data_nokey.bin >nul
|
||||||
|
|
||||||
|
REM ---- keyed image ----
|
||||||
|
if exist RS-5B88.key (
|
||||||
|
%ISD_CMD% %KEY_FLASH% -key RS-5B88.key
|
||||||
|
REM isd_download returns -11 when USB is offline; image is still generated
|
||||||
|
if exist jl_isd.fw copy /y jl_isd.fw jl_isd_key.fw >nul
|
||||||
|
..\..\ufw_maker.exe -fw_to_ufw jl_isd.fw
|
||||||
|
if exist jl_isd.ufw (
|
||||||
|
copy /y jl_isd.ufw update_key.ufw >nul
|
||||||
|
del jl_isd.ufw
|
||||||
|
)
|
||||||
|
if exist db_update_data.bin copy /y db_update_data.bin db_update_data_key.bin >nul
|
||||||
|
) else (
|
||||||
|
if /i not "%KEY_FLASH%"=="" (
|
||||||
|
echo [download] ERROR: RS-5B88.key not found, cannot USB-burn keyed image
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
REM keep default names as nokey for tools that still look for jl_isd.fw
|
||||||
|
if exist jl_isd_nokey.fw copy /y jl_isd_nokey.fw jl_isd.fw >nul
|
||||||
|
if exist update_nokey.ufw copy /y update_nokey.ufw update.ufw >nul
|
||||||
|
if exist db_update_data_nokey.bin copy /y db_update_data_nokey.bin db_update_data.bin >nul
|
||||||
|
|
||||||
@rem delete temp files
|
@rem delete temp files
|
||||||
if exist *.mp3 del *.mp3
|
if exist *.mp3 del *.mp3
|
||||||
@@ -22,15 +69,6 @@ if exist *.TAB del *.TAB
|
|||||||
if exist *.res del *.res
|
if exist *.res del *.res
|
||||||
if exist *.sty del *.sty
|
if exist *.sty del *.sty
|
||||||
|
|
||||||
..\..\ufw_maker.exe -fw_to_ufw jl_isd.fw
|
|
||||||
copy jl_isd.ufw update.ufw
|
|
||||||
del jl_isd.ufw
|
|
||||||
|
|
||||||
@rem generate config ufw (disabled)
|
|
||||||
::ufw_maker.exe -chip AC800X %ADD_KEY% -output config.ufw -res bt_cfg.cfg
|
|
||||||
|
|
||||||
::IF EXIST jl_696x.bin del jl_696x.bin
|
|
||||||
|
|
||||||
if exist script.ver del script.ver
|
if exist script.ver del script.ver
|
||||||
if exist tone.cfg del tone.cfg
|
if exist tone.cfg del tone.cfg
|
||||||
if exist p11_code.bin del p11_code.bin
|
if exist p11_code.bin del p11_code.bin
|
||||||
@@ -39,9 +77,9 @@ if exist anc_coeff.bin del anc_coeff.bin
|
|||||||
if exist anc_gains.bin del anc_gains.bin
|
if exist anc_gains.bin del anc_gains.bin
|
||||||
|
|
||||||
@rem common isd_download flags
|
@rem common isd_download flags
|
||||||
@rem -format vm
|
@rem -format vm erase VM area
|
||||||
@rem -format cfg
|
@rem -format cfg erase BT CFG area
|
||||||
@rem -format 0x3f0-2
|
@rem -format 0x3f0-2 erase 2 sectors from 0x3f0 (1st arg hex/dec, 2nd must be decimal)
|
||||||
|
|
||||||
ping /n 2 127.1>null
|
ping /n 2 127.1>null
|
||||||
IF EXIST null del null
|
IF EXIST null del null
|
||||||
|
|||||||
@@ -0,0 +1,131 @@
|
|||||||
|
# 门夹弹力绳 需求文档(V1.1)
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 产品名称 | 门夹弹力绳(智能逗宠玩具) |
|
||||||
|
| 型号 | PICBC2 / CBC2 |
|
||||||
|
| 主控 | 杰理 AC7016C |
|
||||||
|
| 日期 | 2026-08-25 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 产品简介
|
||||||
|
|
||||||
|
门夹弹力绳是一款智能逗宠玩具。设备夹在门板上,内部电机带动弹力绳收放,让绳端玩具按不同"玩法"动起来逗宠物玩。支持手机 App 通过远程控制,也支持按键本地操作。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 核心功能
|
||||||
|
|
||||||
|
### 2.1 开关机
|
||||||
|
|
||||||
|
| 操作 | 行为 |
|
||||||
|
| --- | --- |
|
||||||
|
| 深睡状态下按 3 秒 | 开机 |
|
||||||
|
| 深睡状态下按 5 秒 | 开机并进入配对模式 |
|
||||||
|
| 开机状态下按 3 秒 | 关机(深睡省电) |
|
||||||
|
| 插着充电线时上电 | 自动开机,不用按键 |
|
||||||
|
| 刚上电没按按键 | 保持深睡,不误开机 |
|
||||||
|
|
||||||
|
- 深睡状态下,按按键(3 秒/5 秒)或插充电线均可唤醒开机。
|
||||||
|
|
||||||
|
### 2.2 开关(App 控制)
|
||||||
|
|
||||||
|
- App 可开/关设备功能;关闭后电机停转,蓝牙不断开,可随时再开。
|
||||||
|
- 拔掉充电线会自动进入低功耗状态(电机停转、LED 关闭、蓝牙保持连接)。
|
||||||
|
|
||||||
|
### 2.3 自动玩法(6 种,App 或按键选择)
|
||||||
|
|
||||||
|
| 玩法 | 效果 |
|
||||||
|
| --- | --- |
|
||||||
|
| 停止复位 | 停转 |
|
||||||
|
| 弹力伪装 | 绳子慢慢放出去再慢慢收回来,来回一次 |
|
||||||
|
| 飞鸟俯冲 | 快速冲出去,再慢慢收回,模拟小鸟飞扑 |
|
||||||
|
| 云阶小陀螺 | 小幅度来回抖动,力度逐渐加大,像陀螺转动 |
|
||||||
|
| 起伏攻防战 | 慢慢逗弄两秒,突然猛收一下 |
|
||||||
|
| 微风拂动 | 轻轻动一下,歇两秒,像被风吹动 |
|
||||||
|
| 闪电快闪 | 快速连续来回抽动,动作急促 |
|
||||||
|
|
||||||
|
- 玩法会循环播放,直到切换或停止。
|
||||||
|
- 运行中可随时切换到其他玩法或停止。
|
||||||
|
|
||||||
|
### 2.4 手动控制(App 控制)
|
||||||
|
|
||||||
|
- App 可手动点动:控制电机**收绳**或**放绳**,松手/点停止后电机停止。
|
||||||
|
- 手动控制进行中,自动玩法暂停。
|
||||||
|
|
||||||
|
### 2.5 按键控制
|
||||||
|
|
||||||
|
| 操作 | 行为 |
|
||||||
|
| --- | --- |
|
||||||
|
| 短按(<1 秒) | 切换玩法:停 → 玩法1 → 玩法2 → … → 玩法6 → 停,循环 |
|
||||||
|
| 长按 3 秒 | 关机 |
|
||||||
|
| 充电中 / 配对中 | 按键无效 |
|
||||||
|
|
||||||
|
### 2.6 电量与充电
|
||||||
|
|
||||||
|
- 电量按电压换算:满电 4.2V = 100%,3.2V = 0%,电量自动上报 App 显示。
|
||||||
|
- **低电量**(电池电压低于 **3.7V**):App 上报警告,指示灯红灯慢闪;持续 1 分钟未充电则自动关机保护电池。
|
||||||
|
- **电量极低**(低于 3.2V):直接自动关机。
|
||||||
|
- **插入充电线**:电机立即停止、进入充电状态,只有红灯常亮,表示充电中,充满转绿灯常亮;充电期间不执行玩法,按键无效。
|
||||||
|
- **充电中拔掉充电线**:设备自动进入低功耗状态(电机停转、LED关闭、蓝牙保持连接),需按短按按键或 App 重新开启后才能使用。
|
||||||
|
- 电池:锂电池,USB 5V 充电,充满自动转灯。
|
||||||
|
|
||||||
|
### 2.7 指示灯
|
||||||
|
|
||||||
|
| 状态 | 灯效 |
|
||||||
|
| --- | --- |
|
||||||
|
| 正常待机 | 绿灯常亮 |
|
||||||
|
| 充电中 | 红灯常亮 |
|
||||||
|
| 充满 | 绿灯常亮 |
|
||||||
|
| 低电量 | 红灯慢闪 |
|
||||||
|
| 配对中 | 绿灯快闪 |
|
||||||
|
| 配对成功 | 绿灯常亮 3 秒 |
|
||||||
|
| 配对失败 | 红绿交替闪 3 秒 |
|
||||||
|
| 按键切玩法 | 绿灯闪两下 |
|
||||||
|
|
||||||
|
### 2.8 配对
|
||||||
|
|
||||||
|
- 首次使用:深睡状态长按 5 秒开机并进入配对,App 扫码连接即可。
|
||||||
|
- 配对窗口 120 秒:期间连接成功绿灯 3 秒;超时未连接保持开机,可重新配对。
|
||||||
|
- App 可解绑设备,解绑后设备清除配对信息,重新配对即可再次使用。
|
||||||
|
|
||||||
|
### 2.9 时间同步
|
||||||
|
|
||||||
|
- 设备带实时时钟,连接后自动与手机对时(时区跟随手机)。
|
||||||
|
|
||||||
|
### 2.10 固件升级(OTA)
|
||||||
|
|
||||||
|
- 支持 App 远程升级固件,升级协议已打通。
|
||||||
|
- 当前版本:固件 V1.0.0、硬件 V1.0.0。
|
||||||
|
- 实际升级流程(写入芯片、校验、版本判断)待开发。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 性能要求(功耗)
|
||||||
|
|
||||||
|
| 状态 | 要求 |
|
||||||
|
| --- | --- |
|
||||||
|
| 关机(深睡) | ≤ 8 uA |
|
||||||
|
| 待机(空闲,未接充电) | ≤ 300 uA |
|
||||||
|
| 待机 + 指示灯常亮 | ≤ 600 uA |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 待完善功能(当前仅预留,未实现)
|
||||||
|
|
||||||
|
| 功能 | 说明 |
|
||||||
|
| --- | --- |
|
||||||
|
| 绳索校准 | App 下发校准命令,用于校准绳子位置 |
|
||||||
|
| 绳索圈数设置 | App 设置圈数,用于限制收绳行程 |
|
||||||
|
| 勿扰模式 | App 开关,控制设备在某些时段不动作 |
|
||||||
|
| 手动力度/百分比 | 手动控制时调节收放力度,预留 |
|
||||||
|
| OTA 实际升级 | 协议已就绪,芯片写入逻辑待开发 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. 使用注意
|
||||||
|
|
||||||
|
- 设备空闲时自动进入低功耗省电模式,有操作时自动唤醒。
|
||||||
|
- 电机换向、停止均做过安全处理,避免损坏电机和电池。
|
||||||
|
- 换硬件板子时,只需改引脚配置文件,业务逻辑不变。
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
@echo off
|
||||||
|
chcp 65001 >nul
|
||||||
|
cd /d "%~dp0"
|
||||||
|
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0pack_firmware.ps1"
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo.
|
||||||
|
echo pack failed.
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
echo.
|
||||||
|
pause
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
# pack_firmware.ps1
|
||||||
|
# Extract JieLi burn files and zip as Project_Version_Date.
|
||||||
|
# ASCII only: Windows PowerShell 5.1 mis-parses UTF-8 without BOM.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# .\build.bat - build + download.bat + pack
|
||||||
|
# make pack - pack only
|
||||||
|
# tools\pack_firmware.bat
|
||||||
|
|
||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[string]$ProjectName = "PICBC2",
|
||||||
|
[string]$SdkRoot = ""
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
$exitCode = 0
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
if ([string]::IsNullOrWhiteSpace($SdkRoot)) {
|
||||||
|
$SdkRoot = Split-Path -Parent $PSScriptRoot
|
||||||
|
}
|
||||||
|
|
||||||
|
$VersionHeader = Join-Path $SdkRoot "apps\usr_jb_proto\Protocol\jb_product.h"
|
||||||
|
$DownloadDir = Join-Path $SdkRoot "cpu\br28\tools\download\earphone"
|
||||||
|
$ReleaseRoot = Join-Path $SdkRoot "release"
|
||||||
|
|
||||||
|
function Read-FwVersion {
|
||||||
|
param([string]$HeaderPath)
|
||||||
|
|
||||||
|
if (-not (Test-Path -LiteralPath $HeaderPath)) {
|
||||||
|
throw "version header not found: $HeaderPath"
|
||||||
|
}
|
||||||
|
|
||||||
|
$text = Get-Content -LiteralPath $HeaderPath -Raw -Encoding UTF8
|
||||||
|
$major = $null
|
||||||
|
$minor = $null
|
||||||
|
$patch = $null
|
||||||
|
|
||||||
|
if ($text -match '(?m)^\s*#define\s+JB_MCU_SW_VERSION_MAJOR\s+(\d+)') {
|
||||||
|
$major = $Matches[1]
|
||||||
|
}
|
||||||
|
if ($text -match '(?m)^\s*#define\s+JB_MCU_SW_VERSION_MINOR\s+(\d+)') {
|
||||||
|
$minor = $Matches[1]
|
||||||
|
}
|
||||||
|
if ($text -match '(?m)^\s*#define\s+JB_MCU_SW_VERSION_PATCH\s+(\d+)') {
|
||||||
|
$patch = $Matches[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
if (($null -eq $major) -or ($null -eq $minor) -or ($null -eq $patch)) {
|
||||||
|
throw "cannot parse JB_MCU_SW_VERSION_* from $HeaderPath"
|
||||||
|
}
|
||||||
|
|
||||||
|
return "V$major.$minor.$patch"
|
||||||
|
}
|
||||||
|
|
||||||
|
$PackItems = @(
|
||||||
|
@{ Name = "jl_isd_nokey.fw"; Fallback = "jl_isd.fw"; Suffix = "_nokey_burner.fw"; Required = $true; NoteKey = "burner_nokey" },
|
||||||
|
@{ Name = "update_nokey.ufw"; Fallback = "update.ufw"; Suffix = "_nokey_app_ota.ufw"; Required = $false; NoteKey = "app_nokey" },
|
||||||
|
@{ Name = "db_update_data_nokey.bin"; Fallback = "db_update_data.bin"; Suffix = "_nokey_gateway_ota.bin"; Required = $false; NoteKey = "gw_nokey" },
|
||||||
|
@{ Name = "jl_isd_key.fw"; Fallback = ""; Suffix = "_key_burner.fw"; Required = $false; NoteKey = "burner_key" },
|
||||||
|
@{ Name = "update_key.ufw"; Fallback = ""; Suffix = "_key_app_ota.ufw"; Required = $false; NoteKey = "app_key" },
|
||||||
|
@{ Name = "db_update_data_key.bin"; Fallback = ""; Suffix = "_key_gateway_ota.bin"; Required = $false; NoteKey = "gw_key" }
|
||||||
|
)
|
||||||
|
|
||||||
|
$NoteZh = @{}
|
||||||
|
$notesFile = Join-Path $PSScriptRoot "pack_notes_zh.txt"
|
||||||
|
Get-Content -LiteralPath $notesFile -Encoding UTF8 | ForEach-Object {
|
||||||
|
if ($_ -match '^([^|]+)\|(.*)$') {
|
||||||
|
$NoteZh[$Matches[1].Trim()] = $Matches[2].Trim()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "========================================"
|
||||||
|
Write-Host " pack firmware"
|
||||||
|
Write-Host "========================================"
|
||||||
|
|
||||||
|
$version = Read-FwVersion -HeaderPath $VersionHeader
|
||||||
|
$dateStr = Get-Date -Format "yyMMddHHmm"
|
||||||
|
$pkgName = "${ProjectName}_${version}_${dateStr}"
|
||||||
|
|
||||||
|
Write-Host "project : $ProjectName"
|
||||||
|
Write-Host "version : $version (from jb_product.h)"
|
||||||
|
Write-Host "date : $dateStr"
|
||||||
|
Write-Host "source : $DownloadDir"
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
if (-not (Test-Path -LiteralPath $DownloadDir)) {
|
||||||
|
throw "download dir not found, compile the project first: $DownloadDir"
|
||||||
|
}
|
||||||
|
|
||||||
|
$copied = @()
|
||||||
|
foreach ($item in $PackItems) {
|
||||||
|
$src = Join-Path $DownloadDir $item.Name
|
||||||
|
if (-not (Test-Path -LiteralPath $src) -and $item.Fallback) {
|
||||||
|
$src = Join-Path $DownloadDir $item.Fallback
|
||||||
|
}
|
||||||
|
if (Test-Path -LiteralPath $src) {
|
||||||
|
$item.Src = $src
|
||||||
|
$item.Dest = $pkgName + $item.Suffix
|
||||||
|
$copied += $item
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if ($item.Required) {
|
||||||
|
throw "missing required file: $($item.Name); please build the firmware first."
|
||||||
|
}
|
||||||
|
Write-Host "[skip] $($item.Name) not generated"
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($copied.Count -eq 0) {
|
||||||
|
throw "no firmware files found in $DownloadDir"
|
||||||
|
}
|
||||||
|
|
||||||
|
$pkgDir = Join-Path $ReleaseRoot $pkgName
|
||||||
|
if (Test-Path -LiteralPath $pkgDir) {
|
||||||
|
Remove-Item -LiteralPath $pkgDir -Recurse -Force
|
||||||
|
}
|
||||||
|
New-Item -ItemType Directory -Path $pkgDir -Force | Out-Null
|
||||||
|
|
||||||
|
foreach ($item in $copied) {
|
||||||
|
Copy-Item -LiteralPath $item.Src -Destination (Join-Path $pkgDir $item.Dest) -Force
|
||||||
|
$size = (Get-Item -LiteralPath $item.Src).Length
|
||||||
|
Write-Host ("[copy] {0,-28} -> {1} ({2} bytes)" -f (Split-Path $item.Src -Leaf), $item.Dest, $size)
|
||||||
|
}
|
||||||
|
|
||||||
|
$fileList = New-Object System.Collections.Generic.List[string]
|
||||||
|
foreach ($item in $copied) {
|
||||||
|
$note = $NoteZh[$item.NoteKey]
|
||||||
|
[void]$fileList.Add((" {0}" -f $item.Dest))
|
||||||
|
[void]$fileList.Add((" {0}" -f $note))
|
||||||
|
}
|
||||||
|
|
||||||
|
$tplPath = Join-Path $PSScriptRoot "pack_readme_zh.txt"
|
||||||
|
$readme = Get-Content -LiteralPath $tplPath -Raw -Encoding UTF8
|
||||||
|
$readme = $readme.Replace("{{PKG_NAME}}", $pkgName)
|
||||||
|
$readme = $readme.Replace("{{PROJECT}}", $ProjectName)
|
||||||
|
$readme = $readme.Replace("{{VERSION}}", $version)
|
||||||
|
$readme = $readme.Replace("{{DATE}}", (Get-Date -Format "yyyy-MM-dd HH:mm:ss"))
|
||||||
|
$readme = $readme.Replace("{{FILE_LIST}}", ($fileList -join "`r`n"))
|
||||||
|
$readme = $readme -replace "`n", "`r`n"
|
||||||
|
$readme = $readme -replace "`r`r`n", "`r`n"
|
||||||
|
[System.IO.File]::WriteAllText(
|
||||||
|
(Join-Path $pkgDir "README.txt"),
|
||||||
|
$readme,
|
||||||
|
[System.Text.UTF8Encoding]::new($true)
|
||||||
|
)
|
||||||
|
|
||||||
|
$zipPath = Join-Path $ReleaseRoot "$pkgName.zip"
|
||||||
|
if (Test-Path -LiteralPath $zipPath) {
|
||||||
|
Remove-Item -LiteralPath $zipPath -Force
|
||||||
|
}
|
||||||
|
|
||||||
|
Compress-Archive -Path (Join-Path $pkgDir "*") -DestinationPath $zipPath -CompressionLevel Optimal
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "folder : $pkgDir"
|
||||||
|
Write-Host "zip : $zipPath"
|
||||||
|
Write-Host "done."
|
||||||
|
Write-Host "========================================"
|
||||||
|
|
||||||
|
} catch {
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "pack failed: $($_.Exception.Message)"
|
||||||
|
$exitCode = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
exit $exitCode
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
burner_nokey|不带 Key:产线批量烧录器镜像(调试、未加密芯片)
|
||||||
|
app_nokey|不带 Key:手机 APP / 小程序 OTA(UFW)
|
||||||
|
gw_nokey|不带 Key:55AA 服务器 OTA / 网关 OTA(杰理双备份包)
|
||||||
|
burner_key|带 Key:产线批量烧录器镜像(烧录器需配置同一把 key)
|
||||||
|
app_key|带 Key:手机 APP / 小程序 OTA(UFW)
|
||||||
|
gw_key|带 Key:55AA 服务器 OTA / 网关 OTA(杰理双备份包)
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
包名 : {{PKG_NAME}}
|
||||||
|
项目 : {{PROJECT}}
|
||||||
|
版本 : {{VERSION}}
|
||||||
|
日期 : {{DATE}}
|
||||||
|
|
||||||
|
文件说明:
|
||||||
|
{{FILE_LIST}}
|
||||||
|
|
||||||
|
使用说明:
|
||||||
|
1. 批量烧录器:打开 *_burner.fw。
|
||||||
|
2. 杰理 UFW 通道(部分 APP / 小程序):上传 *_app_ota.ufw。
|
||||||
|
3. 走本协议 55AA 的服务器 OTA(APP / 小程序 / 网关都一样):上传 *_gateway_ota.bin。
|
||||||
|
Type=0x02(BLE),不要传 ufw / fw / 普通 app.bin。
|
||||||
|
4. 杰理网关若单独吃双备份包:同样用 *_gateway_ota.bin。
|
||||||
|
|
||||||
|
不带 Key(*_nokey_*):调试、未加密芯片。
|
||||||
|
带 Key(*_key_*):加密镜像,烧录器 / 升级工具必须配置同一把 key(RS-5B88)。
|
||||||
|
|
||||||
|
本包不包含 .key 文件,请不要把工厂 key 发给终端用户。
|
||||||
|
本机 USB:.\build.bat 默认烧 nokey;.\build.bat key 烧带 Key。两套文件都会打包。
|
||||||
Reference in New Issue
Block a user