背景

容量低于 16M bytes 的 nor,一般使用 3 字节地址模式,即命令格式是 cmd + addr[2] + addr[1] + addr[0] + ...

使用超过 16M bytes 的 nor flash,则需要了解 4 字节地址模式, 即命令格式是 cmd + addr[3] + addr[2] + addr[1] + addr[0] + ...

原因

为什么呢, 因为用 3 个字节表示地址,则其范围是 0x000000 - 0xffffff = 0 - 16M,超过 16M 的地址就无法表示了,那自然就得上 4 字节了。

驱动修改

新的 uboot, kernel 驱动中都是支持的,配置下就可以了,如配置上 SPI_NOR_4B_OPCODES 。

如果在用的 nor 驱动没有支持,那可以自行根据 datasheet,在初始化的时候判断下容量,加个切换到 4 字节地址模式的操作,后续的读写命令等,也改用 4 字节地址。

注意事项

需要注意的是,一些芯片的 boot rom 无法支持 4 字节地址模式,只会用 3 字节地址模式跟 nor 通信。

所以切换到 4 字节地址模式后会导致直接重启无法正常启动。需要彻底掉电后重新上电,让 nor 因为重新上电默认回到 3 字节地址模式,才能正常启动。

一种处理方式是,在 reboot 的流程中,增加软件退出 4 字节地址模式 的操作。这样正常的 reboot,会先退出 4 字节地址模式再重启,boot rom 就能正常识别了。

但软件退出的缺点是,只能解决正常重启的情况,无法处理硬件 reset 主芯片的操作,因为 reset 主芯片并不会让 nor 也 reset,那么 nor 就仍处于 4 字节地址模式,不响应 boot rom 的 3 字节地址命令。

另一种更好的处理方式是,硬件设计上支持让主芯片和 nor 同步 reset。

其他

nor 在 16M 这个容量是个分界点,不仅驱动上因为 4 字节地址模式的引入而更加复杂,价格上也是差别巨大,32M nor 远不止 16M nor 价格的两倍。

从价格考虑,用一片 32M 的 nor 还不如用两片 16M 并自行通过片选去分时复用。也不如直接上 128M 的 nand,不过上 nand 的话,软件上就复杂很多了,这里不再展开。

更多参考

nor相关文章
nor flash之频率限制
spinor/spinand flash之高频通信延迟采样
nor flash之写保护
nor flash之擦除和写入
nor flash之写保护开销

本文地址:https://www.cnblogs.com/zqb-all/p/12442578.html
公众号:https://sourl.cn/CKWtQJ

nor flash之4字节地址模式的更多相关文章

  1. IE11/Flash页游白屏怎么办!立刻开启IE大地址模式!缓解浏览器白屏问题

    您是否经常发现IE白屏了,具体表现为点开新网页时无法显示,只能切换标签,用任务管理器一看,内存1.2G之多. 这是因为IE11可能有内存泄露问题,内存不断增长以至于无法申请新的内存,于是IE就完蛋了! ...

  2. (原创)Linux下一定要4字节地址对齐操作

    Linux下一定要4字节地址对齐操作:“血”的教训,一定不要忘记!!! 当然不仅仅是Linux下,所有的32位机都应该如此!!!

  3. SGI地址模式: O32, N32和N64

    背景 MIPS R10000芯片支持MIPS ABI.遵循这一标准的程序能够运行在遵循这一标准的任何处理器/系统上.目前,主要的支持者有SGI,西门子,Nixdof, Tandem, Pyramid, ...

  4. 为何写flash的时候要地址左移一位?

    代码一: #define Writeflash(addr,dat) *((volatile INT16U *)(addr<<1))=(INT16U)dat #define Readflas ...

  5. Adobe Flash player ActiveX下载地址

    http://www.adobe.com/support/flashplayer/downloads.html http://download.macromedia.com/pub/flashplay ...

  6. 【iCore4 双核心板_FPGA】例程十:FSMC总线通信实验——复用地址模式

    实验原理: STM32F767上自带FMC控制器,本实验将通过FMC总线的地址复用模式实现STM32与FPGA 之间通信,FPGA内部建立RAM块,FPGA桥接STM32和RAM块,本实验通过FSMC ...

  7. 【iCore4 双核心板_FPGA】例程十一:FSMC总线通信实验——独立地址模式

    实验原理: STM32F767上自带FMC控制器,本实验将通过FMC总线的地址独立模式实现STM32与FPGA 之间通信,FPGA内部建立RAM块,FPGA桥接STM32和RAM块,本实验通过FSMC ...

  8. 【iCore1S 双核心板_FPGA】例程十三:FSMC总线通信实验——复用地址模式

    实验原理: STM32F103上自带FMC控制器,本实验将通过FMC总线的地址复用模式实现STM32与FPGA 之间通信,FPGA内部建立RAM块,FPGA桥接STM32和RAM块,本实验通过FSMC ...

  9. 【iCore1S 双核心板_FPGA】例程十四:FSMC总线通信实验——独立地址模式

    实验原理: STM32F103上自带FMC控制器,本实验将通过FMC总线的地址独立模式实现STM32与FPGA 之间通信,FPGA内部建立RAM块,FPGA桥接STM32和RAM块,本实验通过FSMC ...

随机推荐

  1. [LC] 23. Merge k Sorted Lists

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. E ...

  2. 吴裕雄--天生自然python学习笔记:解决WebDriverException: Message: unknown error: missing or invalid 'entry.level'

    会出现这个错误是因为你的chrome浏览器与下载的chromedriver.exe版本不一致造成的. 到这个地址:https://npm.taobao.org/mirrors/chromedriver ...

  3. Fire-Fighting Hero(多源最短路和单源最短路)

    题:https://nanti.jisuanke.com/t/41349 分析:对于hero来说,走单源最短路,然后遍历dis数组中的最大值即可找到,对于消防员来说,走多源最短路,只需要建个超级起点连 ...

  4. OpenCV 使用二维特征点(Features2D)和单映射(Homography)寻找已知物体

    #include <stdio.h> #include <iostream> #include "opencv2/core/core.hpp" #inclu ...

  5. html,将元素水平,垂直居中的四种方式

    将元素垂直,水平居中分两种情况:一个是元素尺寸固定,二是元素尺寸不固定 一.尺寸固定 方法1:定位 ,50%,margin负距 .box{ width: 400px; height: 300px; b ...

  6. CF-1102E-Monotonic Renumeration

    比较可惜昨天比赛的时候时间不够了,在比赛结束之后五分钟找出了bug提交通过了.然并软: 首先这题说b数组的后一项要么等于前一项,要么等于前一项加一,而且如果a[i] == a[j] ,那么b[i] = ...

  7. 写个匹配某段html dom代码某属性的正则匹配方法

    private static string GetHtmlDomAttr(string html, string id, string attrname) { string xmatchstring ...

  8. Nginx笔记总结二十:nginx索引目录配置

    location / { autoindex on; autoindex_localtime on; }

  9. Ubuntu上搭建GPU服务器

    1.安装显卡驱动 2.安装CUDA 3.安装cuDNN 下载: 根据显卡类型以及操作系统,选定CUDA版本和语言设置,下载对应的显卡驱动. 驱动下载地址 安装 $ sudo ./NVIDIA-Linu ...

  10. MongoDB启动.mongorc.js报错解决方法

    在bin目录下输入./mongo --norc 不去加载.mongorc.js