测试 flash unique_id 时发现, 同一块板子分别使用两版 sdk 获取到的 id 完全不同
W80X_SDK_v1. 00. 10 使用如下代码
void UserMain (void *arg)
{
u8 unique_id[18];
tls_fls_read_unique_id (unique_id) ;
for (int i = 0; i 18; i++)
printf ("%02x ", unique_id[i]) ;
}
获得如下结果: 
WM IoT SDK2. X 使用如下代码 (来源[https: //doc. winnermicro. net/w800/zh_CN/latest/component_guides/driver/drv_flash. html#get-info] 获取 flash 信息部分例程) :
int printf_flash_info ()
{
wm_drv_flash_info_t info = { 0 };
int ret = WM_ERR_SUCCESS;
wm_device_t *flash_dev = NULL;
flash_dev = wm_dt_get_device_by_name ("iflash") ;
if (! flash_dev) {
printf ("get iflash device fail\n") ;
return -1;
}
if (flash_dev- state ! = WM_DEV_ST_INITED) {
flash_dev = wm_drv_flash_init ("iflash") ;
if (! flash_dev) {
printf ("init fail\n") ;
return -1;
}
}
ret = wm_drv_flash_get_device_info (flash_dev, &info) ;
if (ret == WM_ERR_SUCCESS) {
printf ("flash info as below\n") ;
printf ("flash_size: %dMB\n", info. flash_size / (1024 * 1024) ) ;
printf ("page_size: %d byte\n", info. page_size) ;
printf ("sector_size: %d byte\n", info. sector_size) ;
printf ("vendor_id: 0x%x\n", info. vendor_id) ;
printf ("unique_id: %x%x%x%x\n", info. unique_id[0], info. unique_id[1], info. unique_id[2], info. unique_id[3]) ;
} else {
printf ("get flash info fail\n") ;
}
return 0;
}
获得如下结果
如图所示, 完全不同.
两个版本的 sdk 读取的不是一个 id 吗?
可以在 2. 0 上算出 1. 0 的结果吗, 因为当时使用了这个作为设备 id, 如果不同的话, 后面升级会有问题.
@Arzid 这是一个 bug, 直接这么用本身可能出现不可预料的问题呀.
@isme 那到了哪个版本修复了这个 bug, 有更新日志吗, 官网上能下载的 1. 0sdk 最高版本也就是 W80X_SDK_v1. 00. 10. rar
@Arzid W80X_SDK_v1. 00. 10 和 WM IoT SDK 是两个独立的 SDK, WM IoT SDK 早期的版本存在问题, 后来有修改, 以最新版本为准.
@isme git 上这个应该是最新版本吧, v2. 4, 我上面测试用的也是这个https: //github. com/winnermicro/wm_iot_sdk
@Arzid 这个 bug 是 7 月份才上传的, 还在 V2. 4 之后;

@isme 那就是说现在还没有解决这个问题的版本呗
@Arzid W80X_SDK_v1. 00. 10 的结果是正确的, wm_iot_sdk v2. 4 版本之后的才解决这个问题
@isme 好的, 理解了, 但是现在 wm_iot_sdk v2. 4 就是最新版本了吧, 这个新版本啥时候发布呢
@Arzid 目前可以使用 master 分支, 或者我们专门针对 v2. 4 提供一个补丁包给到您?