大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是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表易丢失导致的烧录异常的更多相关文章

  1. 痞子衡嵌入式:IVT里的不同entry设置可能会造成i.MXRT1xxx系列启动App后发生异常跑飞

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IVT里的不同entry设置可能会造成i.MXRT1xxx系列启动App后发生异常跑飞问题的分析解决经验. 事情缘起恩智浦官方论坛上的一 ...

  2. 痞子衡嵌入式:一个关于Segger J-Flash在Micron Flash固定区域下载校验失败的故事(SR寄存器BP[x:0]位)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是一个关于Segger J-Flash在Micron Flash固定区域下载校验失败的故事. 痞子衡最近在支持一个 i.MXRT1170 欧 ...

  3. 痞子衡嵌入式:恩智浦经典LPC系列MCU内部Flash IAP驱动入门

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦经典LPC系列MCU内部Flash IAP驱动. LPC 系列 MCU 是恩智浦公司于 2003 年开始推出的非常具有代表性的产品 ...

  4. 痞子衡嵌入式:聊聊i.MXRT1xxx上的普通GPIO与高速GPIO差异及其用法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT上的普通GPIO与高速GPIO差异. GPIO 可以说是 MCU 上最简单最常用的外设模块了,当一些原生功能外设接口模块不能 ...

  5. 痞子衡嵌入式:聊聊i.MXRT1170双核下不同GPIO组的访问以及中断设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1170双核下不同GPIO组的访问以及中断设计. 在双核 i.MXRT1170 下设计应用程序,有一个比较重要的考虑点就是外 ...

  6. 痞子衡嵌入式:聊聊系统看门狗WDOG1在i.MXRT1xxx系统启动中的应用及影响

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是系统看门狗WDOG1在i.MXRT1xxx系统启动中的应用及影响. 软件看门狗模块(WDOG)在 MCU 应用里可以说是非常基础的功能模 ...

  7. 痞子衡嵌入式:原来i.MXRT1xxx系列里也暗藏了Product ID寄存器

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1xxx系列里暗藏的Product ID寄存器. MCU 厂商在定义一个产品系列时,通常是会预先规划产品发展路线的(即会有一 ...

  8. 痞子衡嵌入式:探讨i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题. 前段时间有客户在官方社区反映 i.MXRT1170 下 ...

  9. 痞子衡嵌入式:Ethos-U55,ARM首款面向Cortex-M的microNPU

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ARM Ethos-U55. ARM 前几天刚发布了 Cortex-M 家族最新一款内核 - Cortex-M55 以及首款面向 Cor ...

  10. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.3)- FlexSPI NOR连接方式大全(RT1010)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1010的FlexSPI NOR启动的连接方式. 在写完 <FlexSPI NOR启动连接方式(RT1015/ ...

随机推荐

  1. Leetcode 765 情侣牵手 / Hetao-013 翅膀打结 题解 [ 黄 ] [ 并查集 ] [ BFS ] [ 贪心 ]

    经典的连通块题,幸好我之前在 leetcode 看过原. 转化 首先观察到一对cp无论是男在前,还是女在前,都视为配对成功,对答案无影响. 因此,我们可以把一对情侣赋同一个编号,直接加一除以二即可. ...

  2. 13. Docker-compose容器编排(详解说明)

    13. Docker-compose容器编排(详解说明) @ 目录 13. Docker-compose容器编排(详解说明) 1. Docker-compose容器编排概述 2. Docker-Com ...

  3. 函数static的作用

    限制作用域和保持状态 ‌函数static的作用主要体现在限制作用域和保持状态两个方面.‌‌1 限制作用域 ‌静态全局变量‌:在全局变量前加上static关键字,该变量就被定义成为一个静态全局变量.这种 ...

  4. MyBatis mapper.xml中SQL处理小于号与大于号 和小于等于号

    这种问题在xml处理sql的程序中经常需要我们来进行特殊处理. 其实很简单,我们只需作如下替换即可避免上述的错误: < <= > >= & ' " < ...

  5. Python - qrcode(二维码模块)

    import qrcode codeText = 'https://www.cnblogs.com/houhuilinblogs' img = qrcode.make(codeText) print( ...

  6. Halcon学习教程(二) 测量量测相关(点到线距离,线到线距离,轮廓线距离,一维测量,圆形测量,矩形测量等)

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/18740576 本篇讲一些测量用到的算子和实例,想了解更多就得去看看halcon实例里一维测量里 ...

  7. camunda工作流实战项目(表单设计器+流程编辑器,零代码创建流程)

    该项目的plus版本已制作完成,文章链接 [plus版]camunda工作流实战项目 一.整体情况介绍 基于ruoyi平台和camunda工作流开发而成,结合bpmn.js流程编辑器和vform表单设 ...

  8. 【P1】Verilog部件级实验/有限状态机

    课上 再次体验大心脏 T1 奇偶校验 for循环数1的个数判断奇偶/异或缩减运算符判断奇偶,然后根据check的奇偶要求调整最高位 bug1 !注意优先级:位运算 低于 比较运算. cnt & ...

  9. V8引擎静态库及其调用方法

    V8引擎静态库下载地址由于包含了x86和x64的debug和release静态库,所以资源较大,需要耐心下载. 案例编译工具:VS2019 v8开头的即为V8引擎静态库(附送其它开源静态库libuv. ...

  10. Oracle11g的SGA和PGA设置为多大最合适?

    Oracle官方文档推荐: MEMORY_TARGET=物理内存 x 80% MEMORY_MAX_SIZE=物理内存 x 80% 对于OLTP系统:  SGA_TARGET=(物理内存 x 80%) ...