切换到宽版
  • 5538阅读
  • 43回复

[外设]利用J-Link烧写串行SPI Flash存储器(号外) [复制链接]

上一主题 下一主题
离线林师灏
 

发帖
235
M币
3293
专家
6
粉丝
4
— 本帖被 發騷友 设置为精华,作者+3000M币+5专家(2017-04-10) —
之前编写了利用J-Link烧写SPI接口串行Flash存储器的小众方法,详见链接:
http://bbs.mydigit.cn/read.php?tid=2003900

注:必须使用硬件版本为V9或以上的J-Link。网友@wjhwpp在短信交流中提到这一点。
利用J-Link烧写串行SPI Flash存储器(号外)

图0 J-Flash-SPI目前不支持低硬件版本的J-Link

对于J-Flash-SPI软件官方支持的芯片,操作非常简单,因为软件根据库中的ID列表自动识别芯片类型。
假如碰到稍微特殊的厂家出的片子,想利用J-Link读写只需要做点额外的工作。

今天我就碰到一个这样的芯片,正好拿来作为例子,供大家参考。
利用J-Link烧写串行SPI Flash存储器(号外)
图1 cFeon Q32B-104HIP

上图的芯片是从另一个路由器上焊下来的,准备读出原固件做个备份。上J-Link和座子,轻车熟路,运行J-Flash-SPI,默认项目,菜单[Target]->[Connect]。
利用J-Link烧写串行SPI Flash存储器(号外)
图2 自动识别失败

看软件下面的状态提示:

Connecting ...
- Connecting via USB to J-Link device 0
- VTarget = 4.377V
- Read SPI Flash Id = 0x1C 30 16 1C 30 16 1C 30 16 1C 30 16 1C 30 16 1C
- ERROR: Failed to auto-detect SPI Flash.
- Failed to auto-detect SPI Flash.
可见,虽然自动识别失败,但从读出有模有样的FLash ID看八九不离十。

赶紧放狗搜芯片资料:
利用J-Link烧写串行SPI Flash存储器(号外)
图3 Q32B资料下载

芯片资料上找到生产商和器件ID信息,和J-Flash-SPI读到的一致:
利用J-Link烧写串行SPI Flash存储器(号外)
图4 0x1C 0x3016

关键的工作是根据芯片手册中的信息填写J-Flash-SPI要求的参数。
如果你手边恰好有一颗这个软件官方支持的芯片(例如我手上的W25Q128F),那可算省了心了。
我用W25Q128F换下EN25Q32B,然后菜单[Target]->[Connect]

Connecting ...
- Connecting via USB to J-Link device 0
- VTarget = 4.376V
- Read SPI Flash Id = 0xEF 40 18 00 00 00 00 00 00 00 00 00 00 00 00 00
- Found SPI Flash: Winbond W25Q128FVSIG
- Connected successfully

菜单[Options]->[Project settings]:
利用J-Link烧写串行SPI Flash存储器(号外)
图5 Project settings基本页面

选择[Flash]页:
利用J-Link烧写串行SPI Flash存储器(号外)
图6 个性化数据在[Flash]页

把Automatically detect SPI Flash前的对勾去掉:
利用J-Link烧写串行SPI Flash存储器(号外)
图7 软件内置的W25Q128F操作参数

下面跟大家说下如何囫囵吞枣快速弄齐EN25Q32B的对应参数。
Flash ID顺序填入0x1C 0x30 0x16,ID Len明显是3个字节,和W25Q128F的一个样。
打开手册,查看这个存储器的组织方式:
利用J-Link烧写串行SPI Flash存储器(号外)
图8 存储器的划分放在一起描述

4,194,304字节是存储器的容量——4兆字节;
划分为64块,每块64k字节大小;
划分为1024扇区,每扇区4k字节大小;SectorSize填0x1000(由十进制换算成十六进制值,下同)
划分为16384页,每页256字节大小;PageSize填0x100 / NumPages填0x4000
芯片可以按扇区、块或整片擦除,就是不能按页来。

两个操作码表:
利用J-Link烧写串行SPI Flash存储器(号外)
图9 指令集A

利用J-Link烧写串行SPI Flash存储器(号外)
图10 指令集B

根据上面这两个指令集去比较,你会发现和W25Q128F的一样,同一套SPI Instructions。这就是标准化的好处!
利用J-Link烧写串行SPI Flash存储器(号外)
图11 参数改好后是这个样子

参数对应填好后,[确定]返回软件主界面。

此时将座子里的W25Q128F拿走,换回EN25Q32B。
重新操作菜单[Target]->[Connect]:

Connecting ...
- Connecting via USB to J-Link device 0
- VTarget = 4.368V
- Verifying Flash Id = 0x1C 30 16 (Verified)
- Connected successfully

尝试读取整个芯片内容。菜单[Target]->[Read back]->[Entire chip]
利用J-Link烧写串行SPI Flash存储器(号外)
图12 读操作进行中

利用J-Link烧写串行SPI Flash存储器(号外)
图13 很快读取完成

Reading entire flash chip ...
- 1024 sectors, 1 range, 0x0 - 0x3FFFFF
- Target memory read successfully. (4194304 bytes, 1 range) - Completed after 10.483 sec

一般说来,读回的数据不是全0x00/0xFF之类就基本成功了:
利用J-Link烧写串行SPI Flash存储器(号外)
图14 花了11秒钟读回的4兆芯片数据

再上下拖一下,找出一些有代表性的信息:
利用J-Link烧写串行SPI Flash存储器(号外)
图15 数据尾段较有意思的地方

备份的读操作成功。

为了方便可能的相同操作,可以把本次配置保存为一个项目文件:
菜单[File]->[Save project as],命名为“EN25Q32B”,保存:

Saving project file [C:\Program Files (x86)\SEGGER\JLink_V502j\EN25Q32B.jflash] ...
- Project saved successfully
下次需要操作这个型号的芯片,打开新生成的文件就行。

循着这样的思路,不管热门冷门的SPI Flash存储器,只要符合标准,肯定拿下。



[ 此帖被林师灏在2017-04-10 10:38重新编辑 ]
本帖最近打赏记录:共14条打赏M币+189专家+1
omap3530 M币 +1 我有编程器。。。 04-12
huaweiwx M币 +15 謝謝分享 04-12
wjhwpp M币 +15 謝謝分享 04-12
hongo M币 +15 優秀文章! 04-12
hc313 M币 +10 以前都没注意这个,一直用淘宝十几块包邮的那种烧写,这个方法可以在线烧写,回头试下。 04-11
abigbell M币 +10 没玩过,这么解释也看不懂 04-10
buyuliang M币 +15 看不懂,还是觉得很厉害的 04-10
say260 M币 +10 謝謝分享 04-10
眼镜擢到眼 M币 +8 很羡慕你能翻墙 04-10
妲己的宝宝 M币 +30 優秀文章 04-10
12
离线lypara

发帖
1407
M币
374
专家
1
粉丝
10
只看该作者 1楼 发表于: 04-10
楼主向我这小白展现的功力足以让我顶礼膜拜

内容来自Android手机客户端

本帖最近打赏记录:共2条打赏M币+6
妲己的宝宝 M币 +1 優秀文章 04-10
林师灏 M币 +5 过奖了,顺手记录 04-10
在线我要看看

发帖
1355
M币
475
专家
1
粉丝
44
只看该作者 2楼 发表于: 04-10
这玩意儿贵吗
本帖最近打赏记录:共2条打赏M币+6
妲己的宝宝 M币 +1 優秀文章 04-10
林师灏 M币 +5 原装正版有点小贵,是的 04-10
离线2545889167

发帖
10497
M币
15931
专家
97
粉丝
4255
只看该作者 3楼 发表于: 04-10
已经发现了,不错
我专门画了个转接烧录板,比你那个杜邦线接线方便



旁边引出的8个排针孔,用于接拓展板的,不怕操坏主转接板




做个简易实用的自弹座




[ 此帖被2545889167在2017-04-10 21:24重新编辑 ]
本帖最近打赏记录:共7条打赏M币+58
wjhwpp M币 +5 歡迎探討 04-12
hongo M币 +8 謝謝分享 04-12
jpdd521 M币 +30 我证明,这个板子两个月以前就已经做出来了,哈哈。。。 04-11
林师灏 M币 +5 你这家伙,贴PCB踩场来了。上座子比脚好,也就几块钱。杜邦线的优点是随用随接,是验证的最快途径 04-10
我要看看 M币 +8 精彩回帖 04-10
wc5095928 M币 +1 求介绍PCB打样的店家 我找的都不支持拼板 04-10
妲己的宝宝 M币 +1 優秀文章 04-10
在线keildp

发帖
556
M币
1453
专家
0
粉丝
0
只看该作者 4楼 发表于: 04-10
很强大,连编程器都省 了
本帖最近打赏记录:共3条打赏M币+7
2545889167 M币 +1 比ch341快了十几条街 04-10
妲己的宝宝 M币 +1 優秀文章 04-10
林师灏 M币 +5 也许通用的编程器更便宜。这里提供了一种思路 04-10
离线hc313

发帖
2956
M币
642
专家
2
粉丝
125
只看该作者 5楼 发表于: 04-10
抽屉里的正版jlink可以拿出来一用了。
本帖最近打赏记录:共2条打赏M币+6
妲己的宝宝 M币 +1 優秀文章 04-10
林师灏 M币 +5 正版好。注意至少是V9版本的硬件才行 04-10
离线钱品

发帖
8034
M币
8906
专家
2
粉丝
133
只看该作者 6楼 发表于: 04-10
这不懂啥弄,谢谢分享!
本帖最近打赏记录:共2条打赏M币+6
妲己的宝宝 M币 +1 優秀文章 04-10
林师灏 M币 +5 人的能力往往是被逼出来的。不懂用可能是因为你用不着 04-10
离线dwh96

发帖
24
M币
342
专家
0
粉丝
1
只看该作者 7楼 发表于: 04-10
很强大,连编程器都省 了
离线林师灏

发帖
235
M币
3293
专家
6
粉丝
4
只看该作者 8楼 发表于: 04-10
过奖了,顺手记录
离线林师灏

发帖
235
M币
3293
专家
6
粉丝
4
只看该作者 9楼 发表于: 04-10
原装正版有点小贵,是的
本帖最近打赏记录:共1条打赏M币+1
妲己的宝宝 M币 +1 優秀文章 04-10
快速回复
限80 字节
“新手上路”发帖需审核后才能显示(请认真发帖),达到数码9级后取消此限制
 
上一个 下一个