一、什么是 Key 文件?
Key 文件,简单理解,就是杰理为其蓝牙芯片专门设计的一个密码文件,用于对程序进行加密。可以把它想象成一把"软件锁"或"芯片的身份证"。它是杰理芯片特有的一种安全机制,已经延续了很久很久。
本质: 一个后缀名为 .key(或 .lkey、.ckey)的文件,由杰理独家分配。
二、Key 文件的作用是什么?
Key 文件的核心作用是保护程序不被非法读取和破解。
- 程序加密 :在编译生成最终固件(
.fw文件)时,开发环境会使用这个 Key 文件对用户的程序(.bin文件)进行加密。 - 防止破解 :杰理芯片采用 SOC 架构(控制器 + 外挂 SPI Flash 合封)。程序存放在外挂的 SPI Flash 中。如果没有加密,攻击者可以直接读出 Flash 里的程序进行破解。
- 引入 Key 后的安全性:
- 通过专用烧写器将 Key 写入芯片内部的控制器。
- 再将使用该 Key 加密后的程序烧录到外挂的 SPI Flash 中。
- 此时,即使攻击者读出了 Flash 的内容,得到的也是加密后的乱码,无法直接使用。
- 即使知道了 Key 文件,也无法从加密的
bin文件反推出原始程序,安全等级很高。
一句话总结:Key 文件是杰理低成本 SOC 架构下,保护开发者知识产权(固件程序)不被盗用的核心安全机制。
三、Key 文件在哪里可以用到?
Key 文件主要应用于两个环节:
- 开发阶段 :在工程师编译程序并下载到芯片时使用。需要将
.key文件添加到编译/下载脚本中,生成加密的固件再烧录。 - 量产阶段 :在工厂使用批量烧写器(如一拖二、一拖八烧写器)将 Key 文件预先写入芯片的控制器中,然后再烧录使用该 Key 加密后的固件程序。
四、是不是所有的编译下载的时候必须用到?
不一定,这取决于你的目标芯片是否已经烧录了 Key 文件。
- 情况1:目标芯片已烧录过 Key(如购买的开发板、量产芯片)
- 必须使用 Key 文件。 你编译的程序必须使用与芯片内 Key 匹配的
.key文件进行加密,才能成功下载和运行。否则会报错"KEY不匹配"。
- 必须使用 Key 文件。 你编译的程序必须使用与芯片内 Key 匹配的
- 情况2:目标芯片是空片(未烧录过 Key)
- 不能使用 Key 文件。 编译时不能添加
-key参数,生成不加密的程序进行下载。如果加了 Key 文件,也会报错"KEY不匹配"。
- 不能使用 Key 文件。 编译时不能添加
核心原则:芯片内的 Key 与 编译时使用的 Key 文件必须严格一致,否则无法正常运行。
五、编译下载时出现 Key 文件不匹配报错如何解决?
出现"KEY不匹配"的报错,核心是芯片内的 Key 状态与你的编译脚本参数不匹配。解决方法很简单,根据报错信息判断是哪种情况:
|----------------------------------|-------------------------------------------------------|--------------------------------------------------|---------------------------------------------------------------|
| 错误场景 | 典型报错信息 | 原因分析 | 解决方法 |
| 1. 芯片未烧录Key,但程序使用了Key | 错误:KEY不匹配!!! 芯片没有被烧写过KEY,请删除"-key <keyfile>"参数 | 目标芯片是空片,但你的脚本指定了 -key 参数,生成了加密程序。 | 删除 编译脚本中的 -key 参数,生成不加密的程序下载。 |
| 2. 芯片已烧录Key,但程序未指定或指定了错误的Key | 错误:KEY不匹配!!! 芯片被烧写过KEY,请使用"-key <keyfile>"参数指定KEY文件 | 芯片已烧录 Key,但你的脚本未指定 Key 文件,或指定的 Key 文件与芯片内的不一致。 | 在编译脚本中正确添加 -key 参数,并指向与芯片烧录 Key 一致的 .key 文件(从供应商处获取)。 |
| 3. 芯片已烧录一个Key,你用了另一个供应商的Key | 错误:KEY不匹配!!! 芯片被烧写过KEY,请使用"-key <keyfile>"参数指定KEY文件 | 你拿到的 Key 文件是清月电子的 (AC.key),但芯片内部烧录的是另一家供应商的 Key。 | 不能用你的 Key 去匹配别人的芯片。要么从原来的供应商获取正确的 Key,要么更换芯片。 |
| 4. 其他错误 | 错误:fw文件中已经存在要添加的文件 | 通常是重复打包固件时,目标文件已存在。 | 清理或重命名旧的输出文件,重新执行脚本。 |
六、Key 文件如何加入到程序中?在哪个位置添加?
Key 文件是通过在 编译/下载脚本 中添加一个参数来加入程序的。最常见的脚本是位于 SDK 工具目录下的 download.bat(Windows 批处理文件)。
具体步骤:
- 找到脚本文件 :在 SDK 目录中找到
download.bat文件。典型路径(以 AC696N/AC695N 为例):...\cpu\br23\tools\download\standard\download.bat - 修改脚本 :用记事本打开
download.bat,找到isd_download.exe命令。 - 添加 Key 参数 :在
isd_download.exe命令的最后,加上-key <你的key文件名>.key。 - 保存并运行 :保存修改后的
download.bat,双击运行它即可。执行该脚本后,开发环境会自动使用指定的 Key 对程序进行加密,生成最终的加密固件文件(.fw文件)。

