2.10. 第三方数据(认证码)烧写功能

2.10.1. 应用场景

在SDK开发开发过程中,需要用到第三方的数据,如认证码(序列号,三元组),可在烧写目标芯片程序过程中,同时将第三方数据烧写到目标芯片指定位置,既可以实现在SDK开发中对烧写到芯片内第三方数据的利用。

2.10.2. 认证码数据准备

2.10.2.1. 准备要烧写的数据

认证码数据编辑格式所示,将SDK需要使用到的认证码数据在记事本进行编辑,一行数据代表一个认证码(一个认证码数据长度不能超过127字节,1颗芯片只烧写1个认证码即SDK只能获取到其中一行数据); 编辑好数据后将your_product_key.txt文件修改后缀名或另存为your_product_key.csv文件。

认证码数据编辑格式

2.10.2.2. 待烧写的数据格式转换

待烧写的数据需要进行格式转换,才能被烧写器识别并烧写到目标芯片。

  1. 把待转换的.csv文件认证码数据和转换工具 license_to_auth_csv.exe(点击此处下载) 放到同一目录;

  2. 同时按住键盘windows + R,输``cmd`,打开命令行界面;

  3. 如文件存放目录E:\test,进入目录并执行license_to_auth_csv.exe your_product_key.csv,最终生成烧写器可识别的数据文件JL_your_product_key.csv。如认证码数据格式转换认证码转换后的数据格式所示。

认证码数据格式转换

认证码转换后的数据格式

Note

默认情况下,.csv文件中,每一行的内容是以文本形式写入的。如果每一行的内容是二进制内容的 hex 形式,则可以将 .csv 文件后缀名修改为 .hex,这样烧录的时候会按二进制形式写入。

例如,对于 .csv 文件中的一行

112233

以文本形式写入的时候,写入的是 “112233” 共 6 个字节,分别是 ‘1’, ‘1’, ‘2’, ‘2’, ‘3’, ‘3’。

对于 .hex 文件中的一行

112233

则会以二进制的形式写入,写入的是 “\x11\x22\x33” 共 3 个字节,分别是 0x11, 0x22, 0x33。

2.10.3. 认证码数据烧写流程

2.10.3.1. 制作支持认证码烧写的fw文件

认证码烧写需要对应的fw烧写文件支持才能实现烧写,制作支持认证码烧写的fw文件分实现步骤如支持认证码烧写的fw文件制作所示:

  1. 打开SDK工程下载目录下的isd_config.ini文件,

  2. isd_config.ini文件 [SYS_CFG_PARAM] 段增加AUTH_CODE=1;配置项后保存文件;

  3. 双击运行下载目录下的download.bat脚本;

  4. 重新生成可支持认证码烧写的jl_isd.fw文件。

Important

SDK 中的 isd_config.ini 文件,可能是经过预处理工具生成的。 所以如果直接修改 isd_config.ini 后,点击编译(而不是双击运行download.bat),可能会被预处理工具生成新的 isd_config.ini 文件覆盖。

一些 SDK 可能会通过 isd_config_rule.c 预处理生成 isd_config.ini。 如果你发现,修改后的 isd_config.ini,在编译 SDK 后被还原了,请确认是否是这个原因导致的。 如果是这种情况,请直接修改 isd_config_rule.c

支持认证码烧写的fw文件制作

2.10.3.2. 更新fw烧写程序和认证码文件到烧写器

请参考《烧写器固件版本确认及更新》章节内容相关步骤,打开更新目标芯片程序控制界面,这里选择更新AC897N芯片对应程序进行演示。首先是对《制作支持认证码烧写的fw文件》制作的支持认证码烧写的fw文件进行授权,这里选择无限制模式授权生成jl_isd_AC897N_auth_code\_\[已授权\].fw文件。然后按如部署fw文件和认证码文件到烧写器所示相关步骤操作:

  1. 打开并选择支持认证码烧写并已经授权的fw文件;

  2. 打开并选择认证码数据文件(不选择认证码文件仅更新fw文件到烧写器,不带认证码烧写功能);

  3. 配置烧写选项中选择是否强制更新认证码(勾选,如芯片已烧有认证码会覆盖烧写一个新的认证码,避免浪费一般不勾选)

  4. 点击“部署”,部署成功后有“部署烧写器成功,请重新上电”提示;

  5. 部署完毕对烧写器重新上电;

Note

重新烧录程序的时候,不同的选项会影响认证码是否会被擦除:

是否选择认证码文件

是否勾选强制更新认证码

行为

选择认证码文件

未勾选

保留芯片已有的认证码(如果有)

选择认证码文件

勾选强制更新

总是覆盖认证码

未选择

未勾选

擦除芯片中已有的认证码

Important

如果在部署界面上未显示认证码相关的选项,请确认选择了fw文件,且当前选择的fw文件是否指定了需要烧录认证码,详见上一节制作支持认证码烧写的fw文件

部署fw文件和认证码文件到烧写器

Important

如果在部署界面上未显示认证码相关的选项,请确认选择了fw文件,且当前选择的fw文件是否指定了需要烧录认证码,详见上一节制作支持认证码烧写的fw文件

2.10.3.3. 认证码数据烧写到芯片

  1. 认证码烧写是按认证码数据文件可用序号递增的形式进行烧写,也就是认证码具有唯一性,烧到每个芯片的认证码都不同。在烧写芯片程序的同时,烧写器会把认证码数据也烧写到目标芯片,因此烧录流程同单一fw文件烧写流程是一致的。

  2. 显示屏显示烧写信息部分显示有可用认证码个数,程序烧写成功后对应通道也进度条也显示有烧写成功的认证码序号(与认证码数据文件对应序号一致)。

2.10.4. 导出认证码

2.10.4.1. 查看认证码烧写情况导出

请参考《更新目标芯片程序到烧写器》章节内容相关步骤,打开更新目标芯片程序控制界面,如导出认证码信息所示,

  1. 点击导出认证码,弹出保存对话框;

  2. 点击保存,保存导出的认证码文件到指定路径;

导出认证码信息

打开导出的认证码文件,如认证码使用情况所示,已经使用过的认证码,对应的位置标识有“TRUE”表示认证码已被烧写到对应的芯片。

认证码使用情况

2.10.4.2. 更新烧写程序时导出

如果在认证码未使用完时更新烧写程序, 为了避免认证码丢失会提示还有未使用完的认证码。如导出认证码到指定位置所示,

  1. 加载完待更新的目标芯片程序,点击部署,会跳出提示框提示“烧写器中存在认证码,为了避免认证码丢失请先导出

  2. 点击提示框“OK”,选择保存路径点击保存,保存未使用完的认证码文件;如果不保存,那么将无法更新烧写文件。

导出认证码到指定位置

2.10.5. 注意事项

  1. 认证码数据需要使用csv文件方式导入,建议认证码最大长度不超过127bytes。

  2. 每台烧写器导入认证码时,请导入合理数量的认证码,并且烧写完所有认证码后再更新烧写文件。

  3. 如果确实需要在认证码未烧录完时更换烧写文件,请自行管理好导出的认证码文件。当再次需要烧录之前未烧录完的认证码,为了避免认证码重复烧写或者丢失,请仔细检查导入的认证码文件。

  4. 在 SDK 中访问认证码的方式,每个 SDK 可能略有差异。具体咨询可以咨询提供 SDK 的人。