打印
[STM32F1]

谁能够讲讲 ST-LINK Utility 中 SPI NOR Flash 烧录的原理?

[复制链接]
5702|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luckyJeck|  楼主 | 2015-1-25 11:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在 ST-Link V2 的 ST-Link Utility 中可以烧录外部 SPI NOR Flash,请问工作原理是怎么样的?
有没有相关的 Application Note ?


"ST-LINK Utility" "Add External Loader" 菜单


MCU 源码程序
沙发
huangqi412| | 2015-1-25 12:42 | 只看该作者
ram  bootload

使用特权

评论回复
板凳
huangqi412| | 2015-1-25 12:43 | 只看该作者
先下载这个  烧什么都一回事了
要求芯片能用ram运行代码

使用特权

评论回复
地板
luckyJeck|  楼主 | 2015-1-25 15:57 | 只看该作者
本帖最后由 luckyJeck 于 2015-1-25 16:01 编辑
huangqi412 发表于 2015-1-25 12:43
先下载这个  烧什么都一回事了
要求芯片能用ram运行代码

你好,我看了源码,大概知道 ST-link 首先下载一段代码到内部 SRAM 中,然后运行 Init 函数初始化时钟、GPIO等,
SPI 的读写函数就是在这段 RAM 中运行,但是,具体这么与 ST-Link 进行数据交换,我就不是太明白。
一直不明白 loader_src.c 文件中的 Read、Write、MassErase、SectorErase、Verify这几个函数是怎么被调用?被谁调用?

是否能够具体些?
后续可能移植到 I2C EEPROM、NAND Flash 等。


使用特权

评论回复
5
zh113214| | 2015-1-25 17:03 | 只看该作者
看看源码就知道了吧,强烈推荐!!!

使用特权

评论回复
6
huangqi412| | 2015-1-25 18:26 | 只看该作者
luckyJeck 发表于 2015-1-25 15:57
你好,我看了源码,大概知道 ST-link 首先下载一段代码到内部 SRAM 中,然后运行 Init 函数初始化时钟、GP ...

不好意思,你说的这个ST什么什么软件没用过,我只是从通用方法角度讲方法。
既然你都已经知道是RAM BOOTLOAD了,是否有这个BOOT的源码?如果有,看一下SPI驱动就可以了,修改驱动支持EEP,支持NAND,支持。。。都可以,如果没有源码,洗洗睡吧。  有的话传整个东西上来也许有人有兴趣弄一下正好给你解答了。
ST-LINK的通信就不用看了,那相当于逆向**了。反正能通信就能擦写。非要逆向,可以上BUSHOUND以及X86反汇编,钩子等等。  相信ST没有给ST-LINK以及下载软件的源码。

使用特权

评论回复
7
ar_m_cu| | 2015-1-25 18:41 | 只看该作者
ST-LINK 将代码给 MCU,然后 MCU 再向 NorFlash 烧的吧

使用特权

评论回复
8
luckyJeck|  楼主 | 2015-1-25 20:45 | 只看该作者
源码就在安装程序的目录下,我把它上传上来。

我的理解应该是 ST-Link 将 flash 数据下载到 sram 中,然后设置相应的寄存器,比如,写入地址、数据长度等,然后 call 相应的函数就可以实现写入。。。

按照例程移植到其它类型的存储器应该是没有问题的,想要深入了解其原理、通讯等没有st工程师提供相关的手册真是很难。


ExternalLoader.zip

1.14 MB

使用特权

评论回复
9
zanezhang| | 2015-4-11 19:43 | 只看该作者
请问是不是可以烧SPI FLASH 和NOR FLASH 两种?

我是很小白的大一学生

使用特权

评论回复
10
搞IT的| | 2015-4-12 11:27 | 只看该作者
这个我也想知道。。学习了。。。

使用特权

评论回复
11
cedar_renjun| | 2015-10-30 20:34 | 只看该作者
luckyJeck 发表于 2015-1-25 20:45
源码就在安装程序的目录下,我把它上传上来。

我的理解应该是 ST-Link 将 flash 数据下载到 sram 中,然后 ...

你找到的源码属于Flash代理

PC-》MCU-》Flash代理-》Flash芯片
大致就这个流程

Q:谁调用这个RAM程序?
A:调试器通过SWD或者JTAG来将RAM程序,下载到Target的RAM中,然后调用对应的API接口
      只不过,这里的调用是直接通过设置断点,写寄存器,写栈,然后执行来调用的

具体的细节知识,涉及到调试器的原理了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

138

帖子

2

粉丝