KDocs 研发资料库
  • 音频技术应用文档入口汇总
  • 杰理WINDOWS环境安装及其他事项
  • LINUX安装和编译
  • Linux环境编译SDK教程(ubuntu18.04)
  • 音频类补丁汇总表
  • 认证资料获取汇总(最新资料后台会更新)
  • 《Hi-Res申请指南v1.0》
  • FreeRTOS 开源协议版本
  • uCOS 开源协议版本信息
  • 各个模块关键资料汇总
  • 软件调试方法
  • Makefile编译
  • 提bug的规范
  • 常规设备使用指导
  • 对外特别发布开发注意点信息汇总
  • AD697X软件问题整理
  • AC700N软件问题整理
  • AC701X耳机软件问题整理
  • 951&961软件问题整理
  • AC104X软件问题整理
  • AC128N问题整理文档
  • 可视化工具调试问题整理
  • 耳机资料汇总
  • AC704N、 AC705N相关应用
  • AC695N&AC696N&AC608N音箱问题整理
  • JL701N音箱问题整理
  • AC692X软件问题整理
  • AC706N音箱问题整理
  • JL701N音箱问题整理(可视化工具SDK)
  • JL703N音箱问题整理
  • JL709N(JL689N)音箱问题整理
  • JL7094系列-入门到进阶开发指导
  • AC210N音箱问题整理
  • 无线麦系列版本支持指南
  • AW32N无线麦问题整理
  • lAD697X&JL701X 无线麦软件共性问题整理
  • AC706N无线麦问题整理
  • AW36N无线麦问题整理
  • AC710X无线麦问题整理
  • 唤醒源获取及唤醒IO设置
  • 电源
  • LVD
  • 长按复位配置方法
  • 低功耗应用
  • TIMER
  • UART
  • SPI
  • 内部FLASH空间添加用户自定义区域
  • IIC
  • GPIO
  • MCPWM
  • SD&U盘
  • 时钟&晶振
  • GPCNT
  • IO口crossbar映射功能
  • 文件系统使用总结
  • 复用应用
  • LINEIN_AUX相关应用
  • IIS音频接口应用
  • SPDIF模式相关(HDMI_ARC、光纤、同轴)
  • PDM LINK
  • 外设相关应用
  • 蓝牙相关
  • 杰理蓝牙距离调试文档
  • TWS耳机配对方式使用及生产把控指南
  • GFP谷歌快连及其认证流程指引
  • 蓝牙发射器(bt_emitter)相关
  • BLE应用
  • 关于提升BLE传输速率说明
  • BLE测试数据
  • MUSIC 模式相关应用
  • MIDI音乐实现
  • PC相关应用
  • FM相关应用
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20250107
  • fm应用详细设计说明书
  • 杰理FM硬件指南-20230315
  • ADC模块
  • AUDIO相关应用
  • 新Tools的音效调试使用
  • 混响应用使用说明
  • 音效调式
  • 音箱耳机低音小音量增强实现方法
  • DAC输出功率调试
  • DAC性能测试指南
  • 针对各类底噪、电流声分析流程
  • 录音相关应用
  • OPUS编解码相关
  • RTC相关应用
  • 升级相关
  • UI相关应用
  • 通话调试流程指南
  • 通话相关应用
  • 省电容mic使用手册
  • 如何测试验证手表通话系统的语音失真 V1.0
  • AC695X_AC696X_AD697X 常见通话问题处理参考资料
  • 通话调试问题确定步骤
  • 内置触摸调试指南
  • 低功耗内置触摸介绍V2.2
  • 触摸相关文档
  • AC697X、AC698X内置触摸调试及整改方法V1.0
  • 产测相关应用
  • AC63X BLE DUT测试介绍
  • 兆华序列使用简易说明
  • JL_1T2蓝牙测试盒音频文件更换说明
  • ENC相关应用入口汇总
  • ANC相关应用入口汇总
  • JL DMS通话调试手册-V3.9.4
  • ANC-ENC结构设计要点-20240407
  • 半入耳式ANC耳机器件选型与结构设计指南V1.0
  • JL 耳道自适应调试指南
  • ANC相关问题处理
  • ANC调试文档
  • 评估蓝牙耳机通话上行降噪性能的方法 V1.0 (2)
  • FCC 或者 BQB 认证相关应用
  • BQB profile 测试中常遇到的问题点汇总
  • 蓝牙参数整理20210811
  • 杰理科技认证问题参考
  • 无线音频产品开发指南
  • 无线麦系列从入门到进阶开发指导
  • 量产烧录相关说明
  • 一拖八烧录器远程过程调用说明
  • 量产相关建议
  • EffectTool(eq)调试工具说明文档
  • AC897AD697系列的EQ调试方法-V3
  • 杰理调音指南-20220622
  • 音效模块总结
  • 简要调音步骤指引(可视化)
  • 耳机充电与通信调试指南
  • 充电仓硬件调试指南
  • 充电仓软件问题整理
  • AC951常用说明
  • AC951_AC961_开发板使用说明V1.0
  • 彩屏仓AC982 入门指导及FAQ
  • 蓝牙音频APP相关应用
  • 手机APP的简介和开发流程
  • 蓝牙音频系列-硬件设计指南
  • 静电测试及整改方法-20220706
  • TWS耳机底噪整改指南V1.2
  • 杰理蓝牙距离调试文档
  • 蓝牙RF硬件设计与调试V1.1-20250219
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20241228
  • 音效调试指南
  • 无线话筒K歌音箱标准开发流程
  • 杰理科技 700N TWS耳机产品标准-202303
  • 杰理科技 701N 广播产品标准-202303
  • JL-HAT ANC高效产测自适应
  • 无线话筒测试板使用介绍
  • 一拖八频偏校准使用说明
  • 领夹麦产测工具使用介绍
  • Dongle量产测试说明
  • Dongle+Tws或头戴式 SDK通过工具绑定配对功能说明文档
  • 双麦ENC产测宏配置验证方法 V1.0
  • JL耳机方案麦克风声学测试指令_V1.0
  • JL耳机方案麦克风声学测试指令_V2.0
  • JL_ENC自动测试命令_V0.0.1
  • JL蓝牙测试盒用例说明
  • LDAC自测环境搭建_ubuntu
  • 延迟小板使用手册
  • 杰理库文件的制作及添加实现过程
  • 关于 AC635N&AC636N系列免晶振兼容性补丁 说明
  • 关于 AC63系列VM兼容性修复补丁_20250224 说明
  • 关于 AC632N &AE632N_ 蓝牙& 低功耗兼容性修复补丁 说明
  • AD698N和AC638N电压优化补丁V3说明
  • 关于 AC635N&AC636N漏电和E&G版兼容联合补丁 说明
  • AD698N和AC638N电压优化补丁V2说明
  • 702相关应用
  • 2024-4-30 发布歌词显示SDK开发注意事项
  • BQB RF & FCC 认证测试固件问题汇总及源码
  • BQB profile 测试中常遇到的问题点汇总
  • 进dut测试模式方法及固件
  • 704-频偏修改bin文件合集
  • 701手表BQB PROFILE认证注意事项
  • 认证的干扰规避整改
  • 海外CRA认证报告生成说明
  • JL700N可视化工具问题处理文档
  • JL701X可视化工具问题处理文档
  • JL701N_earphone_release_v1.6.0_ANC 低功耗问题补丁
  • JL708X可视化工具问题处理文档
  • JL709N可视化工具问题处理文档
  • JLstudio可视化工具使用说明
  • 一拖二-串口_蓝牙_app在线EQ、通话参数及调试方式和内置触摸调试
  • 可视化JL701M_DONGLE_SDK添加MIC为发射源
  • 可视化JL701M_DONGLE_SDK添加按键切换usb audio与MIC发射源
  • JL701M_DONGLE_SDK_1.0.0_dongle输入linein输出dac
  • 701可视化_a2dp_to_le_demo说明
  • 耳机系列demo汇总
  • JL7018F&JL7006F_7003F AUX IIS
  • 一键连接应用
  • 普通SDK动态开关一拖二功能
  • 蓝牙分析仪(EllisysBluetoothAnalyzer)抓包例程
  • TWS配对常见应用
  • APP自定义按键的demo
  • AC700N 播歌双EQ DEMO示例及说明
  • AC698V164 MIC与蓝牙音乐共同输出DAC demo
  • 添加第三方算法以及多算法授权流程
  • 空间音频配置方法
  • 普通高低电平TWS耳机控制通讯
  • 入耳检测状态更新demo解析
  • 资源优化(非可视化的SDK)
  • 资源优化(可视化SDK)
  • 翻译耳机、语音识别应用demo
  • 耳机抗干扰问题排查和优化
  • AC698D2 抗干扰优化
  • AC696X软件问题整理
  • AC695X软件问题整理
  • AC695X软件问题整理_1722249702
  • AC608X软件问题整理
  • JL701N_2T1_DUPLEX 应用软件问题汇总
  • le_audio_1.0.0_patch05 以及之前的版本IRkey 功能异常修改
  • AC706N-le_audio-200SDK有线_无线麦录音demo
  • jl701n_le_audio_v200patch02 IO串口升级修改串口单次发送字节长度的修改办法
  • 703创建IIS 输入dac输出音频流demo
  • 703将媒体流音频同时上传PC_mic录音demo实现
  • 703四路IIS输入输出demo
  • 底噪调试
  • AW328A烧录说明
  • 文档合集
  • AC706N_wireless_mic_release_PATCH_20240712 补丁 说明
  • AC706N_wireless_mic_release_PATCH_20240726 补丁 说明
  • AC706N_wireless_mic_release_V1.0.0、1.0.1、1.0.2 补丁 说明
  • AC706N_wireless_mic_release_V1.1.2 中的2T1应用 RX端不绑定配对,TX端实现绑定配对的修改方法
  • 各系列省晶振实现方法
  • iis tx rx说明文档
  • spdif信号
  • 蓝牙电话本
  • 安卓手机同步时间补丁
  • CDC配置
  • PC模式下增加Teams唤起功能
  • 杰理HDMIARC开发实现过程
  • AC701N patch06之前的版本用第三方算法节点实现新版本的pcm delay节点功能
  • (K歌音箱)各SDK音效配置相关说明
  • 长文件录音
  • 点阵屏歌词字库相关(蓝牙歌词,普通歌词)
  • 字模提取工具说明
  • 音箱可视化彩屏-入门到进阶开发指导
  • 彩屏LVGL UI设计及工具使用
  • 使用内部UI框架进行UI调试的系列步骤
  • AD101C使用强制升级工具spi 烧录不了问题处理(测试版本)
  • AD161扩展灯板说明文档
  • 歌词显示器开发注意项
  • 使用硬件数字增益控制通话下行音量(可视化)
  • 杰理小牛产测资料
  • ENC配置说明
  • 通话调试流程指引
  • ANC相关功能demo
  • 无线麦硬件资料汇总
  • 无线麦相关应用
  • 无线麦复杂功能补丁包汇总
  • 无线话筒形态SDK程序&开发经验&问题点分享
  • 双模式结合应用问题汇总
  • 无线麦距离优化案例
  • 无线麦系列中的双工形态(duplex)演变开发对讲机方案开发资料
  • 音箱入门到进阶指导文档(编写中)
  • 蓝牙耳机品控和生产技巧
  • 982过_欠压标志获取异常
  • 如何获取最新涂鸦SDK及库文件
  • 无线话筒K歌音响-调音标准流程
  • 无线话筒产测流程

关于VM、蓝牙配置区和4K预留区

📎 原始文档:https://www.kdocs.cn/l/ciXKzmpZQUMy 关于VM、蓝牙配置区和4K预留区

  1. VM、蓝牙配置区和4K预留区在flash中的分布 各区域配置由isd_config_rule.c或者isd_config.ini文件决定
  2. 单备份
uboot
code
VM(VMIF)
蓝牙配置区(BTIF)
其他预留区(可有可无)自定义区域1
自定义区域2
......
4K预留区
  1. 双备份
uboot
code1
code2
VM(VMIF)
蓝牙配置区(BTIF)
其他预留区(可有可无)自定义区域1
自定义区域2
......
4K预留区
  1. VM 在代码中,VM的地址、大小配置,最终由isd_config_rule.c或者isd_config.ini文件决定
    image

VM_ADR

此项的值表示VM区的起始地址,此项的值为0时,表示VM地址由程序自动分配,否则VM地址固定为指定地址(按照flash物理地址来分配,例如flash 8Mbit,想要把VM区放在flash倒数第4个4K的位置,则可配置为0xfc000),但要注意指定的地址不能与其他区域冲突或者超过flash大小。
双备份的代码结构下,建议固定地址,避免空间浪费,还能避免代码空间变化导致VM被擦除,常用的地址为0xfc000(flash 8Mbit,下面的VM_LEN=8K)。

VM_LEN

此项的值表示VM区的最小值,当VM_ADR=0时,实际VM大小可能会大于VM_LEN,单备份代码需要测试盒无线升级时,VM_LEN要大于等于32K,双备份时可调整为8K节约空间。

VM_OPT

此项的值表示每次升级代码时需要对VM进行什么操作,为0时表示擦除VM,为1时表示不操作VM(但是当代码大小变动影响到VM地址或者VM大小时,VM也会被擦除),为2时表示保护VM(一般不用)。
该配置的作用范围是所有普通升级方式:强制升级工具升级、测试盒串口升级、测试盒蓝牙无线升级、杰理之家OTA;而第三方被动式双备份升级时不操作VM(使用db_update_data.bin文件升级的方式),比如涂鸦OTA。
3. 蓝牙配置区 image

BTIF_ADR

此项的值表示蓝牙配置区的地址,此项值不要改动,默认为AUTO,由程序自动分配。

BTIF_LEN

此项的值表示蓝牙配置区的大小,此项值不要改动。

BTIF_OPT

此项的值表示每次升级代码时需要对蓝牙配置区进行什么操作,为0时表示擦除蓝牙配置区,为1时表示不操作蓝牙配置区(因为蓝牙配置区始终排在VM后面,在无自定义区域的情况下,蓝牙配置区的地址会被固定在flash倒数第二个4K的位置,配置为1不会存在擦除蓝牙配置区的情况),为2时表示保护蓝牙配置区(一般不用)。
该配置的作用范围是所有普通升级方式:强制升级工具升级、测试盒串口升级、测试盒蓝牙无线升级、杰理之家OTA;而第三方被动式双备份升级时不操作蓝牙配置区(使用db_update_data.bin文件升级的方式),比如涂鸦OTA。
4. 4K预留区 4K预留区是大部分芯片SDK默认预留的flash空间,大小为4K,固定在flash最后4K的位置,用于存放一拖二、一拖八烧录的蓝牙地址、认证码等信息。
该区域一般只有在一拖二、一拖八烧录时才会被擦除。
5. ANC区域 SDK开启ANC功能后,会默认开辟存放anc参数的区域,不同的flash大小需要使用不同的anc区域地址,否则会报空间异常,具体修改isd_config_rule.c或者isd_config.ini中的ANCIF_ADR和ANCIF1_ADR
image 6. 自定义区域 用户可以自己在flash中开辟一块区域存放数据
新增自定义区域:修改isd_config_rule.c或者isd_config.ini,划一块区域使用,如需在区域中默认放一个文件,使用FILE配置
USER_FILE = user.bin //如需在区域中默认放一个文件,参考此配置
USER_ADR = 0x1f1000;
USER_LEN = 32K;
USER_OPT = 1;
image 读写demo(需要在apps\earphone\sdk_used_list.c中打开sdfile_vfs_ops):
image

    RESFILE *file = resfile_open("flash/app/USER");
    if(file){
        printf("file open suss\n");
        int ret = resfile_seek(file, 0, SEEK_SET);
        printf("file seek %d\n", ret);
        u8 data_w[32];
        for (int i = 0; i < 32; i++)
        {
            data_w[i] = rand32()%255;
        }
        struct resfile_attrs file_attrs = {0};
        ret = resfile_get_attrs(file, &file_attrs);
        printf("file attrs %d %d %d\n", ret, file_attrs.fsize, file_attrs.sclust);
        //擦除开始==================================================================
        u32 file_flash_addr = sdfile_cpu_addr2flash_addr(file_attrs.sclust);
        u32 erase_unit = 4096;
        u32 erase_size = 0;
        u32 total_size = file_attrs.fsize;
        u32 erase_cmd = IOCTL_ERASE_SECTOR;
        #include "boot.h"
        if (boot_info.vm.align == 1) {
            erase_unit = 256;
            erase_cmd = IOCTL_ERASE_PAGE;
        }
        do {
            int ret = norflash_ioctl(NULL, erase_cmd, file_flash_addr);
            printf("norflash_ioctl ret %d , 0x%x, %d, %d", ret, file_flash_addr, erase_size, total_size);
            file_flash_addr += erase_unit;
            erase_size += erase_unit;
        } while (erase_size < total_size);
        //擦除结束==================================================================
        ret = resfile_write(file, data_w, 32);//写入
        printf("file write %d\n", ret);
        u8 data_r[32];
        memset(data_r, 0, 32);
        ret = resfile_seek(file, 0, SEEK_SET);
        ret = resfile_read(file, data_r, 32);//读取
        printf("file read %d\n", ret);
        put_buf(data_r, 32);
        resfile_close(file);
    }
    else{
        printf("file open fail\n");
    }

特殊情况的处理

部分SDK对 [RESERVED_CONFIG] 的数量有限制,不能超过6个,如果超过6个会不开机,这个时候需要将用户自定义区域增加在 [RESERVED_EXPAND_CONFIG] 下,文件路径使用"flash/EXT_RESERVED/区域名"。
如果开了ANC,还需要把ANCIF的区域往前挪(自定义区域多大, ANCIF_ADR和 ANCIF1_ADR就往前挪多少)。
image 7. 查看各个区域实际地址和大小 image

单备份

-----------------------------------FLASH INFO------------------------------------
| FLASH_BIN_SIZE : 0xb9000 |
| FLASH_NEED_SIZE : 0xff000 |
| FLASH_REAL_SIZE : UNLIMITED |
| VM_REAL_SIZE : 0x45000 |VM区的实际大小
| VM_START_ADDR : 0xb9000 |VM区的起始地址
| VM_END_ADDR : 0xfe000 |VM区的结束地址
| BTIF_SIZE : 0x1000 |蓝牙配置区的大小
| BTIF_START_ADDR : 0xfe000 |蓝牙配置区的起始地址
| BTIF_END_ADDR : 0xff000 |蓝牙配置区的结束地址
| LAVE_SIZE : 0x3b000 |剩余未分配使用的空间
| ENTRY_ADDR : 0x6000100 |
| ERASE MODE : NONE |
| UBOOT VERSION : 2025-10-09 13:57:27,uboot-$-@20251009-$589b1b3 |
| OTA VERSION : 2025-07-25 11:44:50,OTA_LOADER-$-@20250725-$79186ddc |
代码区空间计算:
代码区空间 = VM_START_ADDR - UBOOT大小(4K对齐)
代码区剩余空间 = VM_START_ADDR - jl_isd.bin大小(含UBOOT)

双备份

---------------------------------FLASH INFO----------------------------------
| PID : AC700N |
| VID : 0.01 |
| FLASH_BIN_SIZE : 0x6a000 |
| FLASH_NEED_SIZE : 0xff000 |
| FLASH_REAL_SIZE : 0x100000 |
| VM_REAL_SIZE : 0x8000 |VM区的实际大小
| VM_START_ADDR : 0xf6000 |VM区的起始地址
| VM_END_ADDR : 0xfe000 |VM区的结束地址
| BTIF_RESERVED_START : 0xfe000 |蓝牙配置区的起始地址
| BTIF_RESERVED_END : 0xff000 |蓝牙配置区的结束地址
| CODE_BOUNDARY_LINE : 0x7b000 |双备份代码区code1和code2的分界线(双备 份才有)
| LAVE_SIZE : 0x11000 |剩余未分配使用的空间
| ENTRY_ADDR : 0x1e00100 |
| ERASE MODE : NONE |

UBOOT VERSION : 2023-01-06 18:58:49,UBOOT-$-@20230106-$a547aba
代码区空间计算:
代码区空间 = CODE_BOUNDARY_LINE - UBOOT大小(4K对齐)
代码区剩余空间 = 代码区空间 - db_update_data.bin大小(不含UBOOT)
jl_isd.bin ≈ db_update_data.bin + UBOOT
  1. 第三方配置文件 需要在代码区中加入第三方配置文件,使用download.bat打包。
    image 读取demo
#define RES_CUSTOM_CFG_FILE    FLASH_RES_PATH"user.bin"
void res_file_read_demo(void)
{
    RESFILE *fp = NULL;
    fp = resfile_open(RES_CUSTOM_CFG_FILE);
    if (!fp) {
        puts("file open fail");
        return;
    }
    u8 buf[512]; 
    fseek(fp, SEEK_SET, 0);
    int r_len = resfile_read(fp, (void *)buf, sizeof(buf));
    if (r_len != sizeof(buf)) {
        puts("file read cfg head fail\n");
        resfile_close(fp);
        return;
    }
    resfile_close(fp);
}