您尚未登录。

楼主 #1 2019-01-28 10:28:27

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,211
积分: 9197

昨天有朋友在 Q群问如何读spi nor flash(W25Q128/MX25L256)的唯一Id(UID), 刚好最近要用到,放狗搜了一圈

http://vonger.cn/?p=931
http://vonger.cn/?p=1259



收获还不少,
虽然全英文的页面, 但是域名还是中国的.





为了防止链接失效, 我转成pdf了:

Linux_driver_SPI_Flash_Unique_ID.pdf

Linux_driver_Attribute.pdf





离线

楼主 #2 2019-01-28 10:32:36

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,211
积分: 9197

Re: 昨天有朋友在 Q群问如何读spi nor flash(W25Q128/MX25L256)的唯一Id(UID), 刚好最近要用到,放狗搜了一圈

第一个链接是如何获取 spi flash UID,

第二个链接是在如何使用用户接口读取 UID

代码仅能用于 华邦(Winbond)flash,其他家的要查一下手册,修改读写命令。





离线

#3 2019-01-28 12:58:25

dgtg
会员
注册时间: 2017-11-08
已发帖子: 253
积分: 217.5

Re: 昨天有朋友在 Q群问如何读spi nor flash(W25Q128/MX25L256)的唯一Id(UID), 刚好最近要用到,放狗搜了一圈

mark,可以用来做加密了 smile

离线

#4 2020-09-25 12:39:30

shawn.d
会员
注册时间: 2020-09-12
已发帖子: 164
积分: 100

Re: 昨天有朋友在 Q群问如何读spi nor flash(W25Q128/MX25L256)的唯一Id(UID), 刚好最近要用到,放狗搜了一圈

dgtg 说:

mark,可以用来做加密了 smile

一的想法

离线

#5 2020-09-25 13:28:09

lcfmax
会员
注册时间: 2018-04-13
已发帖子: 315
积分: 268.5

Re: 昨天有朋友在 Q群问如何读spi nor flash(W25Q128/MX25L256)的唯一Id(UID), 刚好最近要用到,放狗搜了一圈

用来做加密,不错

离线

#6 2020-09-25 15:50:08

staunchheart
会员
注册时间: 2019-12-17
已发帖子: 221
积分: 188

Re: 昨天有朋友在 Q群问如何读spi nor flash(W25Q128/MX25L256)的唯一Id(UID), 刚好最近要用到,放狗搜了一圈

这个加密,我是不是只要知道一个已知的ID,然后自己编译个LINUX,然后另写一个
DEVICE_ATTR(factory_id, S_IRUGO, m25p_factory_id_show, NULL);
m25p_factory_id_show   这个函数直接返回与另一个板一样的值?

估计得再实现一个写入值,然后写入值与这个ID进行混合,按双方都知道的算法进行加密,再返回,进行一次校验。。。

最近编辑记录 staunchheart (2020-09-25 15:51:57)

离线

#7 2022-08-22 09:32:10

原柏林
会员
注册时间: 2021-09-04
已发帖子: 2
积分: 2

Re: 昨天有朋友在 Q群问如何读spi nor flash(W25Q128/MX25L256)的唯一Id(UID), 刚好最近要用到,放狗搜了一圈

winbond的是有的。但是MX25L的似乎没有这个唯一ID呢。

离线

#9 2022-12-24 20:31:49

ubuntu
会员
注册时间: 2020-03-30
已发帖子: 215
积分: 198

Re: 昨天有朋友在 Q群问如何读spi nor flash(W25Q128/MX25L256)的唯一Id(UID), 刚好最近要用到,放狗搜了一圈

Download new driver file m25p80.c

diff the origin m25p80.c and my m25p80.c

64,66d63
< /* Used for Winbond flashes only. */
< #define OPCODE_WINBOND_ID    0x4b    /* Get flash unique id */
< 
1001,1016d997
< /* flash unique id probe */
< static int unique_id_prob(struct spi_device *spi, u8 *id)
< {
<     int			tmp;
<     u8			code[5];
< 
<     code[0] = OPCODE_WINBOND_ID;
<     tmp = spi_write_then_read(spi, &code, 5, id, 8);
<     if (tmp < 0) {
<         pr_debug("%s: error %d reading UNIQUE ID\n",
<                 dev_name(&spi->dev), tmp);
<         return tmp;
<     }
<     return 0;
< }
< 
1125,1136d1105
<     /* show unique id in kernel debug log for w25q64 or w25q128. */
<     if(info->jedec_id == 0xef4017 || info->jedec_id == 0xef4018) {
<         u8 unique_id[8];
<         if(!unique_id_prob(spi, unique_id)) {
<             dev_warn(&spi->dev, "flash id: %02x%02x%02x%02x%02x%02x%02x%02x\n",
<                     unique_id[7], unique_id[6], unique_id[5], unique_id[4],
<                     unique_id[3], unique_id[2], unique_id[1], unique_id[0]);
<         } else {
<             dev_warn(&spi->dev, "failed to get flash unique id.\n");
<         }
<     }
< 

离线

#10 2023-12-06 11:41:50

thomaskk
会员
注册时间: 2023-12-06
已发帖子: 1
积分: 1

Re: 昨天有朋友在 Q群问如何读spi nor flash(W25Q128/MX25L256)的唯一Id(UID), 刚好最近要用到,放狗搜了一圈

函数spi_write_then_read是怎么实现的?

离线

#11 2024-01-30 12:22:24

testistest
会员
注册时间: 2024-01-30
已发帖子: 3
积分: 3

Re: 昨天有朋友在 Q群问如何读spi nor flash(W25Q128/MX25L256)的唯一Id(UID), 刚好最近要用到,放狗搜了一圈

我的nor flash是by25q256es,即博雅的,如何读取整个uid号码呀。上面的完整代码能否参考一下

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn