測試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提供一個補丁包給到您?