3. 下载目录介绍

本章节主要介绍下载目录.

SDK编译完成后,会在下载目录生成代码文件,并与资源文件整合形成烧录文件,通过CodeBlocks调用下载工具烧写到芯片系统FLASH中;


3.1. 下载目录介绍

下载目录位于app\post_build\sh5x\对应工程(工程名称,如:voice_toy),一共分为三种文件:

(一)生产相关文件

  • app.bin:编译生成的代码文件

  • jl_isd.bin:FLASH烧录文件,包含代码文件和资源文件

  • jl_isd.fw:用于我司一拖二/八工具批量生产的FLASH烧录文件

(二)资源文件

  • dir文件:通过打包工具生成的打包文件,通常用于存放音频资源

(三)下载工具

  • download_bat.c:下载批处理文件,可指定内置和外挂FLASH烧写内容

  • isd_config.ini:工程配置文件

  • 下载目录工具更新.jlxproj:该工具可在线更新下载目录的exe工具

本小节着重介绍下载工具的download_bat.c以及isd_config.ini文件;

dowload_bat.c 文件介绍:
isd_config.ini文件介绍:
外挂资源flash下载需要:
  1. 外挂资源flash下载

  2. 外挂资源flash下载引脚配置 -EX_FLASH & EX_FLASH_IO


3.2. dowload_bat.c 文件介绍

download.bat脚本由download_bat.c文件编译生成,download_bat.c文件支持把代码和资源文件以及部分配置烧写到系统FLASH,也支持将指定资源文件烧写到外挂FLASH

具体参数如下:

  • -app app.bin 0x20000:

    该指令指定了烧写代码文件app.bin,并且指定了代码存放的系统FLASH区域大小固定为0x20000,即无论app.bin大小为多少,代码区域都会暂用指定的大小,预留出空间,方便后续代码修改后升级使用;用户也可以去掉0x20000,不指定代码存放区域的大小,系统会根据app.bin大小自动分配,但代码改动可能导致资源位置变化,需要重新下载所有资源。

  • -res xxx:

    该指令会把指定的资源文件烧写进入系统FLASH,不同资源文件以空格隔开。

  • -format vm:

    该指令会擦除isd_config.ini文件中指定的“VM”区域。 注:需要注意区分”VM”区域以及VM掉电存储功能。前者为isd_config_ini文件中指定的一块名为“VM”的FLASH空间区域,一般用于存放AD14N内置FLASH的录音数据;后者为代码中的VM断电保存功能,其实际存放在isd_config.ini文件中指定的一块名为“EEPROM”的FLASH空间区域中!

  • -format all:

    该指令会擦除整颗系统FLASH数据。

  • -key *.key:

    该指令会加密烧写文件。参数*.key为申请的key文件,不同系列不可混用key文件。

"dowload_bat.c介绍“

dowload_bat.c介绍


3.3. 外挂资源flash下载

download_bat.c支持将资源文件下载到外挂资源flash中,不同芯片配置参数不同,其中:

一、AD14N / AD15N / AC104N下载外挂Flash命令

  • -wflash dir_xxx 0 [PA05_1B_NULL]:

    1. dir_xxx:要烧写的文件名(文件需在download_bat.c所在的目录下);

    2. 0 :文件烧录到外挂资源flash的起始地址;

    3. [PA05] :外挂资源flash的CS片选引脚(注意,不能选USBDP、USBDM);

    4. [1B] :选择芯片的spi1,B端口引脚,端口只能选择B/C;

    5. [NULL] :选择“NULL”时为双线,DO、DI分开连接,选择“NUL0”时为单线,DO&DI短接;

二、AD17N / AD18N / AD24N 下载外挂Flash命令

  • -ex_flash dir_song_ext:

该指令会根据isd_config.ini中定义的外挂flash引脚(详情请看EX_FLASH与EX_FLASH_IO说明),将指定的资源文件下载到外挂flash中,外挂flash引脚配置将于后文isd_config.ini文件介绍中说明。

注意:准备下载到外挂flash的dir文件,需要经过packres.exe指定下载地址再次打包生成新的dir文件,才可使用-ex_flash命令。 例如将dir_song文件下载到外挂flash,需要通过packres脚本添加“packres.exe -n res -o dir_song_ext dir_song 0 -normal”命令, 指定0地址将dir_song文件打包成dir_song_ext文件,在download_bat.c中添加-ex_flash dir_song_ext指令即可将dir_song文件完整烧写至外挂flash中。


3.4. isd_config.ini文件介绍

isd_config.ini 是一个工程配置文件,用于配置程序中的烧写和启动相关参数,并在下载和生成生产烧写文件时起作用。

3.5. AD24N的isd_config.ini文件重要变化介绍

AD24N 的 isd_config.ini 文件是通过 isd_config.ini.c 在工程的预编译过程中生成的。

如果开发人员需要修改相关参数,应修改 isd_config.ini.c 文件。

isd_config.ini.c 及其生成的 isd_config.ini 文件,位于 app/post_build/ 目录下的芯片子目录中的工程目录。

例如,以 AD24N 的 voice_toy 工程为例,文件路径为:app/post_build/sh58/voice_toy/。

3.6. isd_config.ini文件指令介绍

(一)EXTRG_CFG_PARAM
  • PID: 工程标识,不可超过16个字节;

  • VID: 工程版本号,用于升级判断;

  • NEED_RESERVED_4K: 4K保留区配置,详情请看《RESERVED_AREA区域说明》;

    NEED_RESERVED_4K = YES:保留4K配置区;

    NEED_RESERVED_4K = NO:不保留4K配置区;

  • SPECIAL_OPT:选择是否实时根据FLASH支持的对齐方式组织文件;

    SPECIAL_OPT = 0:根据下载时所连样机FLASH的对齐方式组织文件,只生成1份4K或者256对齐的烧录文件;

    SPECIAL_OPT 不存在:生成多份不同对齐方式的烧录文件;

    注:烧录文件在组织过程中支持按4K或者256字节对齐;若用256字节对齐的烧录文件,去生产最小擦除单位为4K字节的芯片内置FLASH,会出现开不了机的问题!!!注释该配置会关闭该功能,默认生成多份不同对齐方式的文件,由烧写器判断烧写哪一份。

  • FORCE_4K_ALIGN:选择是否强制只生成1份4K字节对齐的FLASH烧录文件

    注:如果方案需要在线升级,建议使用强制4K对齐,SDK默认只生成1份4K对齐的烧录文件!

  • FLASH_SIZE:指定FLASH大小,用于生成指定大小的烧录文件

    ① 0x800000:按照8M字节的FLASH的空间生成烧录文件,如果在线下载时发现实际的FLASH与指定的大小不匹配,则会报错;

注:在没有直接指定FLASH大小的情况下,最后生成的下载文件会以市面FLASH能支持的最小文件的形式组织;例如:

1、当所有文件小于256K字节时,系统会以总大小为256K为标准为录音分配剩余空间;

2、当所有文件大小等于300K时,系统会以512K为标准为录音分配剩余空间;

(二)SYS_CFG_PARAM

  • SPI:芯片内置FLASH的SPI配置,配置说明如下图所示;

    注意:对于主频速度要求高的方案,尽量使用两线模式,有利于系统稳定性和功耗控制。

    ① 0_3_0:内置FLASH使用单线数据模式;

    ② 2_3_0:内置FLASH使用双线数据模式;

    ③ 4_3_0:内置FLASH使用四线数据模式;

    芯片

    AD14N / AC104N

    AD15N

    AD17N

    AD18N

    AD24N

    是否支持该功能

    支持

    支持

    支持

    支持

    支持

    "SPI配置参数说明“

    SPI配置参数说明

    "系统flash 1线/2线接法“

    系统flash 2线/1线接法

  • CACHE_WAY:芯片使用cache的WAY数(1 WAY = 4K字节);多出来的cache可以作为普通ram使用;

    注意:Cache会优先使用地址靠前的空间;例如AC104N有4条WAY共16K字节,若CACHE_WAY配置为2,系统会占用16K字节的前8K用于cache缓存,后8K字节可用作普通RAM,具体请参考AC104N SDK的ld文件;

    芯片

    AD14N / AC104N

    AD15N

    AD17N

    AD18N

    AD24N

    是否支持该功能

    支持,可选1~4

    支持,可选1~2

    不支持

    不支持

    不支持

  • BOOT_TYPE:AD14N / AD15N在2021年5月18日之后发布的SDK已经使用了新的工具生成芯片密钥。新的密钥系统支持芯片用户派生密钥(leaf key)为空的芯片;原厂密钥(root key)加上客户派生密钥(leaf key)组成完整的芯片密钥,方便客户备货;

    ① BOOT_TYPE = 0:芯片启动时发现KEY不一致,不启动工程;

    ② BOOT_TYPE = 非零:芯片启动时发现KEY不一致,新系统启动烧写芯片密钥的功能,之再尝试启动系统;如果芯片已有的KEY和现有的要烧进去的KEY冲突,有烧坏芯片密钥的可能!!!

    芯片

    AD14N / AC104N

    AD15N

    AD17N

    AD18N

    AD24N

    是否支持该功能

    支持

    支持

    不支持

    不支持

    支持

  • EOFFSET & EOFFSET2UP:代码偏移配置,部分芯片FLASH需要配置偏移参数;

    芯片

    AD14N / AC104N

    AD15N

    AD17N

    AD18N

    AD24N

    是否支持该功能

    支持

    支持

    不支持

    不支持

    支持

  • LRC:LRC=-1时,烧写器烧写时校准芯片LRC时钟,默认开启;

    芯片

    AD14N / AC104N

    AD15N

    AD17N

    AD18N

    AD24N

    是否支持该功能

    支持

    支持

    支持

    支持

    支持

  • EX_FLASH:外挂flash烧写配置(使用外挂flash下载资源需要打开该配置)

    ① PA05_1A_NULL:配置顺序为“CS-SPI端口-电源口”;

    ② 用VDDIO供电电源口参数为NULL,使用时配置CS脚I/O即可;

    芯片

    AD14N / AC104N

    AD15N

    AD17N

    AD18N

    AD24N

    是否支持该功能

    不支持

    不支持

    支持

    支持

    支持

  • EX_FLASH_IO:外挂flash烧写引脚配置(使用外挂flash下载资源需要打开该配置)

    ① 2_PA01_PA02_PA03_NULL_NULL:配置顺序为“数据宽度-CLK-DO-DI-D2-D3”;

    ② 双线模式时数据宽度为2,D2、D3口为NULL,即2_PA01_PA02_PA03_NULL_NULL;

    ③ 单线模式时数据宽度为0,D2、D3口为NULL,即0_PA01_PA02_PA03_NULL_NULL;

    ④ 四线模式时数据宽度为4,需要配置D2、D3口;

    芯片

    AD14N / AC104N

    AD15N

    AD17N

    AD18N

    AD24N

    是否支持该功能

    不支持

    不支持

    支持

    支持

    支持

(三)RESERVED_CONFIG

SDK默认开辟了以下区域:
  • VM区域:用于AD14N内置flash录音

  • EEPROM区域:用于VM掉电存储功能

需要分清楚VM区域与VM掉电存储功能!VM区域是flash一片空间的名称,VM掉电存储是一种功能

  • XXXX_ADR:区域起始地址

    ① 0:VM区域起始位置;

    ② AUTO:由工具自动分配起始地址;

  • XXXX_LEN:区域大小

  • XXXX_OPT:区域操作属性

    ① 0:下载代码时擦除指定区域;

    ② 1:下载代码时不操作指定区域;

注:VM区域的起始地址为0,且实际大小为系统剩余的空间,扩展录音空间可查看(一)中FLASH_SIZE配置的说明;EEPROM区域一般用于代码中的VM断电记忆存储,区域大小不少于8K,否则VM初始化会失败;用户可自行定义其他空间区域;