3.4.8.1:N32G4xx系列UID读取
受影响的芯片型号有: N32G401 系列 N32G430 系列 N32G432 系列 N32G435 系列
文档制作时,当前最新的 SDK 版本是: N32G401 系列:Nations.N32G401_Library.2.1.0 N32G430 系列:Nations.N32G430_Library.2.1.0 N32G432 系列:Nations.N32G43x_Library.2.3.0 N32G435 系列:Nations.N32G43x_Library.2.3.0
1.调整 UID 读取方法的原因
根据国民技术公开的最新 SDK 中,获取芯片 UID 的 API 读取 UID 的实现方法,及与原厂的沟通结果确认,目前供应的芯片, 受芯片版本的影响,芯片的 UID 可能存在不同的地址,因此,为保证”矩阵授权“等与芯片 UID 密切相关的功能正常运行,故作此调整。

2.读取方法细节
调整前的 UID 读取方法: 以上系列中所有的芯片,均从固定地址获取 UID 数据,该地址是:0x1FFF_F710,获取数据的大小是:12 字节
2.1具体芯片型号的处理细节
调整后的 UID 读取方法:
N32G401 系列: 首先从地址 0x1FFF_F510 处读取数据,数据大小是 12 字节;若这 12 字节的数据全部是 0xFF,则认为地址 0x1FFF_F510 处的 UID 不存在, 烧录器会从地址 0x1FFF_F710 处读取数据,数据大小是 12 字节,之后无论该地址数据如何,都将认为是有效的 UID 数据,并在与 UID 相关的功能中使用。

N32G430 系列: 读取方法同 N32G401 系列
N32G432 系列: 首先从地址 0x1FFF_F270 处读取数据,数据大小是 4 字节;若这 4 字节的数据全部是 0xFF,则认为地址 0x1FFF_F270 处的 UID 不存在。 烧录器会从地址 0x1FFF_F710 处读取数据,数据大小是 12 字节,之后无论该地址数据如何,都将认为是有效的 UID 数据,并在与 UID 相关的功能中使用;
若从地址 0x1FFF_F270 处读取的数据(大小 4 字节),存在非 0xFF 的值,那么将认为该地址获取的数据是有效的,那么将会读取地址 0x1FFF_F270 处的数据,大小为 12 字节, 并会将此数据在与 UID 相关的功能中使用,此时将不再读取 0x1FFF_F710 处的数据。
N32G435 系列: 读取方法同 N32G432 系列
针对开发者在固件中获取 UID 的建议: 由上述,为保证开发者在使用烧录器与 UID 功能相关的功能时,例如”矩阵授权“等,强烈建议开发者将 SDK 更新至当前最新的版本,并使用 SDK 中提供的 UID 获取方法,来 获取 UID 数据;或根据烧录器调整后的 UID 读取方法,调整开发者固件中相关功能的实现。