为每个 CYW920719B2Q40EVB 开发板(基于 Infineon/Cypress CYW20719 蓝牙芯片)设置唯一的 MAC 地址(通常称为 BD_ADDR),需要通过生产环节的单独烧录来实现。芯片本身不会在出厂时预存一个唯一的MAC地址(除非是特定订单),批量生产时需要你或制造商处理这个步骤。
以下是主要的实现方法:
方法 1: 使用 Infineon WICED/ModusToolbox 烧录工具烧写 "Manufacturing Data"
这是最推荐和通用的方法。蓝牙协议栈启动时会从这个特定区域读取 BD_ADDR。
理解 "Manufacturing Data" 区域:
- 在
CYW20719 的 Flash 布局中,存在一个专用的区域用于存储生产信息,包括 BD_ADDR、设备名等。
- 这个区域的起始地址通常是
0x000FD000 (请务必查阅最新的 CYW20719 数据手册或 WICED 文档确认,有时地址会因资源包大小略有差异)。
- BD_ADDR 是这个区域内的一个特定字段(通常是前6个字节)。
准备 BD_ADDR 数据文件:
- 你需要为每一块开发板单独生成一个 MAC 地址。
- 合法来源: 如果你有购买或分配的 OUI (Organizationally Unique Identifier,地址的前3字节),你可以自己分配后3字节确保唯一。或者使用随机生成的地址(避免冲突风险)。
- 创建一个包含该 MAC 地址值的特定格式的数据文件(通常是
.bin, .hex, 或特定格式的配置文件)。
- 简化方法 (WICED Studio):
- 在 WICED Studio 项目中,找到资源生成工具(如
uuid128),它们通常支持自动生成包含指定 BD_ADDR 的 Manufacturing Data。
- 修改
make target 中包含 BD_ADDR 的配置项 (例如 OTA_BOOTLOADER_ADV_NAME, MANUFACTURER_DATA_BD_ADDR 等,具体名称请查相应 SDK/platform 文档)。
- 手动方法:
- 创建一个包含6字节 MAC 地址的数据结构(按 Little-Endian 字节序),或者创建一个文件,内容是你设定的 MAC 地址值(按顺序)。
- 通常可以使用
srecord 工具或其他二进制编辑工具创建 .hex 或 .bin 文件,并将数据精确写到 0x000FD000 或其他指定地址。
烧录到芯片:
- 使用 Infineon 的专用烧录工具:
- WICED Programmer: WICED Studio 自带工具。连接到开发板,选择正确的串口或 SWD/JTAG 接口,加载包含 Manufacturing Data 的文件(
.bin, .hex 或项目特定文件),并指定写入地址为 0x000FD000 (确认地址!)。确保选择了"擦除+写入"或类似选项。对每一块板子执行此操作,每次使用不同的 MAC 文件。
- ModusToolbox Programmer: ModusToolbox 的图形化或命令行工具。过程类似。
- CySecureTools: 适用于更高级的安全烧录场景。
- 使用支持 Infineon 芯片的第三方烧录器: 如果有,确保它支持
CYW20719 并知道正确地址。
方法 2: 在首次运行固件时从外部存储器加载/设置 (不太常用,可能不符合某些认证)
- 这种方法适用于固件有能力在启动时从外部 EEPROM 或 Flash 分区的配置文件中读取预设的 BD_ADDR。
- 优点: 可以在产线设置完成后(例如校准后)再写入 MAC 地址。
- 缺点:
- 增加了软件复杂度。
- 需要保证固件在首次运行时就设置好 BD_ADDR,否则默认行为(如果芯片Flash Manufacturing Data区域为空)可能会导致无效地址或随机地址。
- 可能影响蓝牙栈的初始化和认证流程。
- 需要额外的存储空间。
- 实现:
- 在固件的初始化部分,检查外部存储器(或特定非易失性位置)是否有有效的 BD_ADDR。
- 如果没有,则在此处写入一个预设的地址(但如何预设?又回到了需要外部工具的问题)。
- 使用蓝牙栈提供的 API (例如
wiced_bt_set_local_bdaddr() 或类似函数) 在运行时设置这个加载到的地址。
推荐的生产流程 (使用方法1):
- 编写一个脚本,自动生成一批符合规则的唯一 MAC 地址列表(例如,前3字节OUI + 后3字节递增)。
- 在 WICED/ModusToolbox 项目中配置生成制造数据文件的流程。让脚本为每个MAC地址自动生成一个包含该BD_ADDR的制造数据文件(
.bin或.hex),或者自动修改项目配置并编译生成唯一的最终固件文件(如果你选择将MAC地址与固件一起编译)。
- 在生产线上,将每块PCB连接到编程器。
- 烧录工具首先擦除并写入通用的应用程序固件。然后,烧录工具再将包含该板唯一MAC地址的制造数据文件精确烧写到Flash的制造数据区域(如
0x000FD000)。
- 对每一块板子重复步骤3和4。
重要注意事项
- 地址确认: 绝对关键是确认
CYW20719 在你的 SDK 版本和目标板资源包中,Manufacturing Data 的确切地址和 BD_ADDR 字段偏移量。查阅 WICED/ModusToolbox SDK 文档、CYW20719 数据手册、参考设计、示例代码或咨询 Infineon 技术支持。
- OUI: 确保生成的 MAC 地址符合 IEEE OUI 规范。使用一个合法的 OUI(你公司注册的或项目特定的),或者生成遵循本地管理地址规范的地址 (第二字节的LSB为
10,例如 xx:xx:xx:xx:xx:xx -> xx:xx:xx:xx:xx 的二进制最低位是 10 b)。
- 工具链: 熟悉你选择的工具链(WICED Studio / ModusToolbox)中编程和数据生成的具体命令和配置文件。
- 默认固件行为: 确认空白芯片或未配置制造数据区域时,固件如何处理 BD_ADDR。通常固件期望从制造数据区域读取。
- 验证: 在产线加入验证步骤,例如通过串口读取或蓝牙扫描工具确认写入的BD_ADDR是否正确。
总结:
为大批量生产 CYW920719B2Q40EVB 设置唯一 MAC 地址的核心是使用 Infineon 的烧录工具(如 WICED Programmer 或 ModusToolbox Programmer),将包含唯一 BD_ADDR 的数据文件精确烧写到芯片 Flash 中 Manufacturing Data 区域的指定地址。这需要在生产线上对每个设备单独操作。务必确认该地址的正确性。
为每个 CYW920719B2Q40EVB 开发板(基于 Infineon/Cypress CYW20719 蓝牙芯片)设置唯一的 MAC 地址(通常称为 BD_ADDR),需要通过生产环节的单独烧录来实现。芯片本身不会在出厂时预存一个唯一的MAC地址(除非是特定订单),批量生产时需要你或制造商处理这个步骤。
以下是主要的实现方法:
方法 1: 使用 Infineon WICED/ModusToolbox 烧录工具烧写 "Manufacturing Data"
这是最推荐和通用的方法。蓝牙协议栈启动时会从这个特定区域读取 BD_ADDR。
理解 "Manufacturing Data" 区域:
- 在
CYW20719 的 Flash 布局中,存在一个专用的区域用于存储生产信息,包括 BD_ADDR、设备名等。
- 这个区域的起始地址通常是
0x000FD000 (请务必查阅最新的 CYW20719 数据手册或 WICED 文档确认,有时地址会因资源包大小略有差异)。
- BD_ADDR 是这个区域内的一个特定字段(通常是前6个字节)。
准备 BD_ADDR 数据文件:
- 你需要为每一块开发板单独生成一个 MAC 地址。
- 合法来源: 如果你有购买或分配的 OUI (Organizationally Unique Identifier,地址的前3字节),你可以自己分配后3字节确保唯一。或者使用随机生成的地址(避免冲突风险)。
- 创建一个包含该 MAC 地址值的特定格式的数据文件(通常是
.bin, .hex, 或特定格式的配置文件)。
- 简化方法 (WICED Studio):
- 在 WICED Studio 项目中,找到资源生成工具(如
uuid128),它们通常支持自动生成包含指定 BD_ADDR 的 Manufacturing Data。
- 修改
make target 中包含 BD_ADDR 的配置项 (例如 OTA_BOOTLOADER_ADV_NAME, MANUFACTURER_DATA_BD_ADDR 等,具体名称请查相应 SDK/platform 文档)。
- 手动方法:
- 创建一个包含6字节 MAC 地址的数据结构(按 Little-Endian 字节序),或者创建一个文件,内容是你设定的 MAC 地址值(按顺序)。
- 通常可以使用
srecord 工具或其他二进制编辑工具创建 .hex 或 .bin 文件,并将数据精确写到 0x000FD000 或其他指定地址。
烧录到芯片:
- 使用 Infineon 的专用烧录工具:
- WICED Programmer: WICED Studio 自带工具。连接到开发板,选择正确的串口或 SWD/JTAG 接口,加载包含 Manufacturing Data 的文件(
.bin, .hex 或项目特定文件),并指定写入地址为 0x000FD000 (确认地址!)。确保选择了"擦除+写入"或类似选项。对每一块板子执行此操作,每次使用不同的 MAC 文件。
- ModusToolbox Programmer: ModusToolbox 的图形化或命令行工具。过程类似。
- CySecureTools: 适用于更高级的安全烧录场景。
- 使用支持 Infineon 芯片的第三方烧录器: 如果有,确保它支持
CYW20719 并知道正确地址。
方法 2: 在首次运行固件时从外部存储器加载/设置 (不太常用,可能不符合某些认证)
- 这种方法适用于固件有能力在启动时从外部 EEPROM 或 Flash 分区的配置文件中读取预设的 BD_ADDR。
- 优点: 可以在产线设置完成后(例如校准后)再写入 MAC 地址。
- 缺点:
- 增加了软件复杂度。
- 需要保证固件在首次运行时就设置好 BD_ADDR,否则默认行为(如果芯片Flash Manufacturing Data区域为空)可能会导致无效地址或随机地址。
- 可能影响蓝牙栈的初始化和认证流程。
- 需要额外的存储空间。
- 实现:
- 在固件的初始化部分,检查外部存储器(或特定非易失性位置)是否有有效的 BD_ADDR。
- 如果没有,则在此处写入一个预设的地址(但如何预设?又回到了需要外部工具的问题)。
- 使用蓝牙栈提供的 API (例如
wiced_bt_set_local_bdaddr() 或类似函数) 在运行时设置这个加载到的地址。
推荐的生产流程 (使用方法1):
- 编写一个脚本,自动生成一批符合规则的唯一 MAC 地址列表(例如,前3字节OUI + 后3字节递增)。
- 在 WICED/ModusToolbox 项目中配置生成制造数据文件的流程。让脚本为每个MAC地址自动生成一个包含该BD_ADDR的制造数据文件(
.bin或.hex),或者自动修改项目配置并编译生成唯一的最终固件文件(如果你选择将MAC地址与固件一起编译)。
- 在生产线上,将每块PCB连接到编程器。
- 烧录工具首先擦除并写入通用的应用程序固件。然后,烧录工具再将包含该板唯一MAC地址的制造数据文件精确烧写到Flash的制造数据区域(如
0x000FD000)。
- 对每一块板子重复步骤3和4。
重要注意事项
- 地址确认: 绝对关键是确认
CYW20719 在你的 SDK 版本和目标板资源包中,Manufacturing Data 的确切地址和 BD_ADDR 字段偏移量。查阅 WICED/ModusToolbox SDK 文档、CYW20719 数据手册、参考设计、示例代码或咨询 Infineon 技术支持。
- OUI: 确保生成的 MAC 地址符合 IEEE OUI 规范。使用一个合法的 OUI(你公司注册的或项目特定的),或者生成遵循本地管理地址规范的地址 (第二字节的LSB为
10,例如 xx:xx:xx:xx:xx:xx -> xx:xx:xx:xx:xx 的二进制最低位是 10 b)。
- 工具链: 熟悉你选择的工具链(WICED Studio / ModusToolbox)中编程和数据生成的具体命令和配置文件。
- 默认固件行为: 确认空白芯片或未配置制造数据区域时,固件如何处理 BD_ADDR。通常固件期望从制造数据区域读取。
- 验证: 在产线加入验证步骤,例如通过串口读取或蓝牙扫描工具确认写入的BD_ADDR是否正确。
总结:
为大批量生产 CYW920719B2Q40EVB 设置唯一 MAC 地址的核心是使用 Infineon 的烧录工具(如 WICED Programmer 或 ModusToolbox Programmer),将包含唯一 BD_ADDR 的数据文件精确烧写到芯片 Flash 中 Manufacturing Data 区域的指定地址。这需要在生产线上对每个设备单独操作。务必确认该地址的正确性。
举报