如何加载数据文件到扩展Flash上
通常通过Jlink可以将系统文件和数据文件加载到On-Chip的Flash上。通过JLink怎么将数据文件加载到扩展的Flash上就比较麻烦了。
方法一:直连
就是将扩展Flash的管脚直接连接到JLink设备上,通过JLink直接将数据文件下载到扩展的Flash上。
但是这种方法通常不可行,扩展Flash已经在板子上了,需要特制的夹具才能进行烧写。
方法二:非直连法 Host->MCU->External Flash
Seeger给出了非直连的解决方案,并且已经对应了几种类型的MCU+External Flash.如果你的MCU不在支持列表中,就需要编写程序来解决问题了。
可以参考Seeger的官方文档进行操作:https://wiki.segger.com/Open_Flashloader
官方文档中给了几个例子都是对On-chip的Flash进行操作的,对于使用SPI的External Flash的来说写的就很含糊了。
找到一个中文的关于SPI External Flash的步骤说明。https://www.eet-china.com/mp/a79590.html
文章中没有写SPI相关的东西,看着有点不太明白。自己尝试了一下。主要是有下面的问题需要解决:
- base address的问题.
- 其实Base address就是SPI External Flash的地址,如果你实现了XIP,就是你XIP的起始地址。如果没有实现XIP,而是通过SPI的Read, Write来实现的话,Base Address通常是从0x00000000开始,当然你也可以写到External Flash的非0起始地址。
- Page Size 和Sector Size的问题
- External Flash每次Erase的最小单位是Sector单位,写数据的最小单位Page Size. 对于Nor Flash来说,每次写操作之前,写的地址必须被Erase一次,才能正常写。我的设备Page Size = 256 Byte, Sector Size = 4096 Byte
- Erase & Program操作
- 看到的例子代码中,都是直接操作Register进行相关操作的。对于SPI External Flash来说就不能直接操作Register了,需要通过SPI发送命令进行Exernal FLash的相关操作。也就是将SPI相关的Erase和Program操作搬到对应的函数中就可以了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)