痞子衡嵌入式:聊聊i.MXRT1024/1064片内4MB Flash的SFDP表易丢失导致的烧录异常
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT1024/1064片内4MB Flash的SFDP表易丢失导致的烧录异常。
我们知道 i.MXRT 系列本身并没有片内非易失性存储器作为启动设备,所以硬件工程师第一件事便是为 i.MXRT 搭配一颗外置代码存储器,而串行 NOR Flash 往往是代码存储器的第一选择。既然这是刚需,为何不直接合封一颗经典的 NOR Flash 进芯片内部呢?是的,恩智浦也考虑到了这一点,这便有了 i.MXRT1024/1064 这两颗内置 Flash 的型号(至于没有给 i.MXRT 全系列强制标配 NOR Flash,也跟代码存储器类型以及容量、速度需求不一有关)。
近期有一个 RT1064 客户反馈,在给产品做量产时出现芯片无法正常使用 J-Link 或者恩智浦官方下载工具下载程序到片内 Flash 的现象,恰好痞子衡手头有一块官方 RT1064-EVK 板卡也无法烧录程序,经过痞子衡的一番摸索,发现片内 Flash 竟然没有有效的 SFDP 表,这是怎么回事?且听痞子衡细说:
一、RT片内Flash简介
1.1 W25Q32JV
芯片合封技术实际上并不是什么新鲜事,对于 RT1024/1064 来说,就是将 RT1020/RT1060 的 Die 与选定的一颗 NOR Flash Die 封装在一起,RT 与 Flash 之间的信号连接在片内完成。
那么 RT1024/1064 内置的 NOR Flash 到底来自哪家供应商呢?这可以借助 \SDK_2_16_000_EVK-MIMXRT1064\boards\evkmimxrt1064\driver_examples\flexspi\nor_internal\polling_transfer 例程简单修改一下代码,读回 Flash 的 JEDEC ID 得知是来自全球排名第一的 NOR Flash 厂商 Winbond 的 W25Q32JV-IQ/JQ(4MB, 四线, 133MHz SDR,3.3V)。
1.2 RT1024片内连接
在 RT1024 上使用了如下 PAD 连接到了片内 Flash,这些 PAD 同时也是外部引脚。(注意其中 GPIO_SD_B1_05 并没有被 BootROM 初始化,因为片内 Flash 不能直接高速启动)
1.3 RT1064片内连接
在 RT1064 上使用了如下 PAD 连接到了片内 Flash,这些 PAD 仅是内部引脚,没有引到外部。(不过在 BGA 225 封装的 RT1060X 型号上被引出了)
二、SFDP对于烧录工具的重要性
JESD216 是一个关于串行 NOR Flash 的标准,它“规范”了 NOR Flash 厂商的产品。这里的“规范”两字加了引号,因为这个标准比较有意思,并不是先有标准,再有 Flash 产品,而是先有各大厂商的 Flash 产品出来,然后 JESD216 才开始总结这些不同厂商的产品特性,企图形成一个看起来比较统一的规范。
目前主流 NOR Flash 厂商产品都是支持 JESD216 标准的,这体现在如下 Read SFDP (0x5A) 命令时序统一上。JESD216 标准定义了一个 256 字节大小的 SFDP 表,这个表收纳了该 Flash 的几乎全部特性(速度、容量、寄存器分布、命令集等等),对于软件驱动开发者来说尤其重要。
SFDP 表结构大概是这样,一开始是 signature 以及 version,然后是 Flash 各种属性信息。看到这你就能明白为啥 SFDP 对于烧录工具的重要性了,烧录工具依赖底层的 Flashloader,而 Flashloader 一般设计上是追求通用的,所以其会先获取 Flash SFDP 表进行解析得到 Flash 全部信息,然后根据这些信息加载合适的软件驱动去读写擦 Flash。因此如果得不到正确的 SFDP 表,那么依赖通用 Flashloader 的烧录工具便无法正常工作。J-Link 以及恩智浦官方烧录工具都是基于通用 Flashloader 思想设计的。
三、Winbond NOR Flash的SFDP操作
翻开以 W25Q32JV 为代表的 Winbond NOR Flash 数据手册,我们从其模块框图可以得知 Flash 内部存储颗粒由三种类型组成, 地址范围 0x000000 - 0x3FFFFF 的 Memory Block,地址范围 0x000000 - 0x0000FF 的 SFDP,地址范围 0x001000 - 0x0030FF 的 Security Registers。对于 Memory Block 的读写擦操作我们再熟悉不过了,那后两种类型该用什么命令操作呢?
继续查看数据手册,找到了如下关于 Security Registers 的专用读写擦命令时序。上一节介绍了 Read SFDP 命令,似乎 SFDP 这个地址空间仅支持读操作,那么 SFDP 数据是如何在 Flash 出厂时被写入的呢?到底是直接固化(随芯片 TO)?还是 OTP 一次性专用后门命令擦写的?带着这个疑惑,痞子衡咨询了 Winbond 技术人员,他们告知其实 Security Registers 擦写命令可以同样擦写 SFDP 空间。
即 Security Registers 读写擦命令时序里地址参数 A15-12 设 4'b0000 时,实际操作得就是 SFDP 空间(虽然手册里没有明说这一点)。基于这个消息,痞子衡找了一个正常的 RT1064-EVK 板卡读出其有效的 SFDP 表数据,然后将该 SFDP 表写入异常的 RT1064-EVK 板卡,这时候下载工具就能够正常烧录了。所以 RT1024/RT1064 芯片发生这种异常,要么是出厂漏烧了 SFDP 表,要么是 SFDP 被用户误擦除过。
至此,i.MXRT1024/1064片内4MB Flash的SFDP表易丢失导致的烧录异常痞子衡便介绍完毕了,掌声在哪里~~~
欢迎订阅
文章会同时发布到我的 博客园、CSDN、微信公众号、知乎、与非网、电子技术应用AET、电子星球、51CTO 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。
痞子衡嵌入式:聊聊i.MXRT1024/1064片内4MB Flash的SFDP表易丢失导致的烧录异常的更多相关文章
- 痞子衡嵌入式:IVT里的不同entry设置可能会造成i.MXRT1xxx系列启动App后发生异常跑飞
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IVT里的不同entry设置可能会造成i.MXRT1xxx系列启动App后发生异常跑飞问题的分析解决经验. 事情缘起恩智浦官方论坛上的一 ...
- 痞子衡嵌入式:一个关于Segger J-Flash在Micron Flash固定区域下载校验失败的故事(SR寄存器BP[x:0]位)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是一个关于Segger J-Flash在Micron Flash固定区域下载校验失败的故事. 痞子衡最近在支持一个 i.MXRT1170 欧 ...
- 痞子衡嵌入式:恩智浦经典LPC系列MCU内部Flash IAP驱动入门
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦经典LPC系列MCU内部Flash IAP驱动. LPC 系列 MCU 是恩智浦公司于 2003 年开始推出的非常具有代表性的产品 ...
- 痞子衡嵌入式:聊聊i.MXRT1xxx上的普通GPIO与高速GPIO差异及其用法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT上的普通GPIO与高速GPIO差异. GPIO 可以说是 MCU 上最简单最常用的外设模块了,当一些原生功能外设接口模块不能 ...
- 痞子衡嵌入式:聊聊i.MXRT1170双核下不同GPIO组的访问以及中断设计
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1170双核下不同GPIO组的访问以及中断设计. 在双核 i.MXRT1170 下设计应用程序,有一个比较重要的考虑点就是外 ...
- 痞子衡嵌入式:聊聊系统看门狗WDOG1在i.MXRT1xxx系统启动中的应用及影响
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是系统看门狗WDOG1在i.MXRT1xxx系统启动中的应用及影响. 软件看门狗模块(WDOG)在 MCU 应用里可以说是非常基础的功能模 ...
- 痞子衡嵌入式:原来i.MXRT1xxx系列里也暗藏了Product ID寄存器
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1xxx系列里暗藏的Product ID寄存器. MCU 厂商在定义一个产品系列时,通常是会预先规划产品发展路线的(即会有一 ...
- 痞子衡嵌入式:探讨i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题. 前段时间有客户在官方社区反映 i.MXRT1170 下 ...
- 痞子衡嵌入式:Ethos-U55,ARM首款面向Cortex-M的microNPU
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ARM Ethos-U55. ARM 前几天刚发布了 Cortex-M 家族最新一款内核 - Cortex-M55 以及首款面向 Cor ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.3)- FlexSPI NOR连接方式大全(RT1010)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1010的FlexSPI NOR启动的连接方式. 在写完 <FlexSPI NOR启动连接方式(RT1015/ ...
随机推荐
- 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
1 大人,时代变了! 赶快把自有业务的本地AI"模型"训练起来! 1.1 背景 目前AI已经大行其道,chatGPT.DeepSeek等如雨后春笋般涌现出来,笔者做为一个守旧派 ...
- vue element UI el-table表格添加行点击事件
<el-table @row-click="openDetails"></el-table> //对应的 methods 中//点击行事件methods: ...
- 设计原则&模式:单例模式(创建型)
定义:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式. 五种实现方式: 饿汉式 懒汉式 双重校验 静态内部类 枚举类 饿汉式 特点:线程安全,调用效率高,但是不 ...
- 从零构建你的第一个RESTful API:HTTP协议与API设计超图解指南 🌐
title: 从零构建你的第一个RESTful API:HTTP协议与API设计超图解指南 date: 2025/2/26 updated: 2025/2/26 author: cmdragon ex ...
- VMware虚拟机上安装Kali Linux详细教程
1.Kali Linux简介 Kali Linux是一个基于Debian的开源Linux发行版,集成了精心挑选的渗透测试和安全审计的工具,供渗透测试和安全设计人员使用,面向各种信息安全任务:如渗透测试 ...
- php查询结果汉字乱码解决方法
问题描述:使用php查询数据显示,显示的结果中所有汉字乱码 问题及解决:这种情况是编码造成的,检查数据库及页面编码是否一致,也可在页面增加: header('Content-Type:text/htm ...
- sql server 2017 STRING_AGG() 替代方案
SELECT @StuId='"'+STRING_AGG(Id,'","')+'"'FROM( SELECT 'a'+cast(Id as varchar) I ...
- Selenium Webdriver 介绍
在前两篇文章中,主要介绍了Selenium IDE 工具及其使用和它的特点,也使用Selenium IDE和Firebug构建了一些脚本.本文,我们开始介绍不同类型的web元素及其定位策略 我们已经非 ...
- Swagger-交互式API文档
1. Swagger简介 前后端分离 前端 -> 前端控制层.视图层 后端 -> 后端控制层.服务层.数据访问层 前后端通过API进行交互 前后端相对独立且松耦合 产生的问题 前后端集成, ...
- [tldr]GO使用正则表达式
简述如何使用GO调用正则表达式 是否符合条件 使用MatchString方法实现 _, err := regexp.MatchString(regex, str) 提取内容 Compile 第一步需要 ...