测试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提供一个补丁包给到您?