Zynq 7000 系列之启动模式—NAND启动

news2024/11/23 15:06:55

NAND启动是一种使用NAND闪存进行设备启动的方式。NAND闪存是一种非易失性存储设备,广泛用于嵌入式系统、计算机和其他电子设备中。由于NAND闪存具有高速读写和较高的存储密度等特点,使得NAND启动成为了一种高效且常用的启动方式。

1 特点

NAND启动具有以下特点:

• 支持8位或16位NAND闪存设备
• 支持ONFI 1.0设备协议
• 坏块支持
• 1位硬件ECC支持

对于BootROM Header搜索功能,启动映像必须位于NAND闪存设备的前128MB地址空间内。

注意:BootROM以8位模式读取符合ONFI规范的参数信息,以确定设备宽度。如果设备是16位宽,那么BootROM将启用上部的八个I/O信号以形成16位数据总线。然而,在7z010双核和7z007s单核CLG225设备中,并不提供16位NAND接口。

8位和16位启动模式下的MIO引脚编程列于表6-11中。
在这里插入图片描述
从上述内容可以看出,NAND启动支持8位和16位NAND闪存设备,并且BootROM会根据设备的宽度来配置相应的数据总线。对于16位设备,BootROM会启用额外的I/O信号以支持16位数据总线。不过,并非所有设备都支持16位NAND接口。

2 优化NAND启动时间

为了优化NAND启动时间,可以采取以下措施:

提高时钟速率
通过增加NAND闪存的工作时钟频率,可以显著提高数据传输速度,进而减少启动时间。如果使用了更快的时钟,必须考虑使用更大的分频器,以确保系统的稳定性和可靠性。

优化I/O协议
通过优化NAND闪存的I/O协议,可以进一步提高数据传输效率和响应速度。这通常涉及调整相关的寄存器设置,以匹配NAND设备的特性和工作模式。

示例(下表)中的寄存器值可能并不适用于所有NAND设备或板卡布局。这些设置假设使用的是33 MHz的PS_CLK(处理器系统时钟)。
在这里插入图片描述

3 BootROM操作

BootROM针对三种闪存设备情况作出响应:

• 坏块处理:BootROM能够识别并跳过标记为坏的闪存块,从而确保读取和写入操作不会受到坏块的影响。

• ECC(错误检查和纠正):用于检测和纠正数据传输过程中可能出现的错误。通过应用ECC算法,BootROM能够识别并修复由于位干扰引起的数据错误,提高了数据的准确性和可靠性。

• 分区内存:BootROM能够将闪存分成多个逻辑分区,每个分区可以独立管理和使用。这种分区方式不仅优化了闪存空间的利用,还提高了数据访问的效率。同时,BootROM在分区时还会考虑坏块的存在,确保每个分区都能够避免使用坏块,从而进一步提高系统的稳定性和可靠性。

3.1 坏块管理

在坏块管理方面,BootROM采用了以下方法:

• 在NAND闪存设备的最后四个块中查找坏块表(BBT)。
• 支持主BBT(bad block table)和次BBT,并带有版本控制,以便安全地进行软件更新。
• 如果没有BBT,BootROM会扫描闪存并读取带外(out-of-band)信息,以确定坏块的位置。

BootROM只执行读取操作,不向闪存写入数据。

在读取NAND闪存时,BootROM会跳过在BBT或带外信息中标记为坏的块(如果BBT不存在)。例如,考虑一个闪存设备,其坏块位于块1和块3。在将映像编程到闪存设备时,必须跳过块1和块3。在读取时,BootROM会读取遇到的好块中的完整用户数据。

在这里插入图片描述
3.2 ECC(错误检查和纠正)管理

NAND控制器具备硬件级别的ECC管理能力,能够处理一定位数的错误。当NAND控制器检测到数据传输中的错误时,它会利用ECC算法进行错误纠正。这种能力使得系统能够在一定程度上容忍闪存中的错误,提高了数据的可靠性。

此外,对于支持片上ECC(on-die ECC)的NAND设备,BootROM能够识别并禁用控制器的ECC检查功能。这样做是为了让NAND设备自身负责ECC的管理,从而充分利用设备内部的ECC能力。片上ECC通常具有更高的纠正能力和效率,能够更好地保护数据的完整性。

总之,ECC管理在NAND闪存系统中是一个复杂而关键的过程。通过合理配置和使用ECC功能,可以确保数据的准确性和可靠性,提高系统的稳定性和性能。在实际应用中,需要根据具体的硬件和软件环境来选择合适的ECC管理策略,以达到最佳的效果。

3.3 内存分区

BootROM将NAND闪存视为一个连续的分区。从用户的角度来看,这主要影响Multiboot寄存器。写入Multiboot寄存器的值会根据目标地址前的坏块数量进行偏移。

考虑下面这个例子:
镜像包含两个Multiboot部分,镜像总大小为1MB,块大小为128KB,第二个Multiboot部分从512KB处开始,坏块位于128KB和256KB的偏移处。

在这个场景中,镜像应该被编程为一个分区,这导致第二个Multiboot部分的偏移总量为256KB(即两个块的大小)。当写入Multiboot寄存器时,它可以设置为512KB的偏移量,而BootROM会负责根据坏块的位置计算新的起始地址。

通过这种方式,BootROM为用户提供了一个简化的接口,隐藏了底层NAND闪存中坏块的复杂性。用户不需要直接处理坏块,而是可以通过设置Multiboot寄存器来指示BootROM从哪里开始加载镜像的不同部分。BootROM会自动考虑坏块的存在,并计算出正确的起始地址。

4 I/O信号时序

BootROM在smc.SET_CYCLES寄存器中使用以下NAND时序值:

• t_rr = 2:准备就绪到就绪时间(Ready to Ready time),表示从NAND设备准备好接收命令到再次准备好接收下一个命令的时间间隔。

• t_ar = 2:地址设置时间(Address Setup time),表示从地址信号开始有效到命令信号开始有效的时间间隔。

• t_clr = 1:清除命令时间(Clear Command time),表示从命令信号变为无效到地址和数据信号开始或继续变化的时间间隔。

• t_wp = 3:写保护时间(Write Protect time),表示在写操作期间保护信号应保持有效的时间。

• t_rea = 2:读访问时间(Read Access time),表示从发出读命令到数据开始可用的时间间隔。

• t_wc = 5:写周期时间(Write Cycle time),表示完成一个写操作所需的时间,包括命令、地址和数据的传输。

• t_rc = 5:读周期时间(Read Cycle time),表示完成一个读操作所需的时间,包括命令、地址的传输和数据的读取。

这些时序值用于确保NAND闪存设备与BootROM之间的通信是正确和高效的。它们定义了各种操作所需的时间间隔,以确保数据在正确的时刻被发送和接收,从而避免数据冲突或丢失。通过正确设置这些时序值,可以优化NAND闪存的性能并减少潜在的错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1634394.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

短视频交友系统搭建重点,会用到哪些三方服务?

在搭建短视频交友系统时,为了确保系统的稳定性、安全性和用户体验,通常需要用到多种第三方服务。以下是搭建短视频交友系统时可能用到的关键第三方服务: 云服务提供商:如阿里云、腾讯云等,提供稳定、可扩展的服务器资源…

Spring管理第三方依赖

在开发中,我们常需要根据业务需求导入我们需要的第三方依赖包,本文主要以导入druid数据库来连接池为案例讲解有关spring管理第三方依赖 目录 纯注解文件注入 1.在pom.xml中导入依赖 2.在com.lcyy包下建立一个config包用于配置类的实现 3.在config包下…

Python量化炒股的获取数据函数—get_concept()

查询股票所属的概念板块函数get_concept(),利用该函数可以查询一只或多只股票所属的概念板块,其语法格式如下: get_concept(security, dateNone)security:标的代码。类型为字符串,形式如‘000001.XSHE’,或…

ICCV2023人脸识别TransFace论文及代码学习笔记

论文链接:https://arxiv.org/pdf/2308.10133.pdf 代码链接:GitHub - DanJun6737/TransFace: Code of TransFace 背景 尽管ViTs在多种视觉任务中展示了强大的表示能力,但作者发现,当应用于具有极大数据集的人脸识别场景时&#…

Prometheus+Grafana多方位监控

PrometheusGrafana多方位监控 契机 ⚙ 最近发现火山引擎有托管的Prometheus,可是当前是邀测阶段。并且发现火山云的ECS是自带开机自启的exporter的。刚好需要搭建一套服务器监控,所以研究了一套Prometheus监控,包含linux主机监控nginx监控es监控rabbitM…

ITMS-90426: Invalid Swift Support

原文 Please correct the following issues and upload a new binary to App Store Connect. ITMS-90426: Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it. 解决方式 ITMS-…

Keepalived+LVS实现Nginx集群配置

Nginx1和Nginx2组成集群,为了实现负载均衡,在集群的前端配置了LVS服务,但是一台LVS容器产生单点故障,因此需要过Keepalived实现LVS的高可用集群 192.168.136.55node1keepalived192.168.136.56node2keeplived192.168.136.57 node3n…

SoundStream: 下一代的神经网络音频编解码器,实时压缩不牺牲音质

音频编解码技术的目标是,通过减少音频文件的大小来节省存储空间或减轻网络传输的负担。理想的情况下,即使音频被压缩,我们听到的声音与原版也应该没有任何区别。 过去,已经有不少编解码技术被开发出来,满足了这些需求…

Linux基础-socket详解、TCP/UDP

文章目录 一、Socket 介绍二、Socket 通信模型三、Socket 常用函数1 创建套接字2 绑定套接字3、监听连接4、接受连接5、接收和发送数据接收数据发送数据 6、关闭套接字 四、Socket编程试验1、源码server.cclient.c 2、编译:3、执行结果 五、补充TCP和UDP协议的Socke…

无人机+三维建模:倾斜摄影技术详解

无人机倾斜摄影测量技术是一项高新技术,近年来在国际摄影测量领域得到了快速发展。这种技术通过从一个垂直和四个倾斜的五个不同视角同步采集影像,从而获取到丰富的建筑物顶面及侧视的高分辨率纹理。这种技术不仅能够真实地反映地物情况,还能…

3.CQL使用-创建、查询、返回

Neo4j的Cypher语言为处理图形数据而构建的。 CQL代表Cypher查询语言。 https://neo4j.com/docs/cypher-manual/3.5/clauses/load-csv/ CQL语句使用文档地址。 小技巧:在neo4j的CQL语句输入框里,shift enter换行,直接enter键会执行CQL语…

2024智能科学与软件工程国际学术会议(ICISSE 2024)

2024智能科学与软件工程国际学术会议(ICISSE 2024) 会议简介 2024智能科学与软件工程国际学术会议(ICISSE 2024)将在北京隆重举行。本次会议汇集了全球智能科学和软件工程领域的专家学者,共同探讨该领域的最新研究成果和发展趋…

跟TED演讲学英文:AI isn‘t as smart as you think -- but it could be by Jeff Dean

AI isn’t as smart as you think – but it could be Link: https://www.ted.com/talks/jeff_dean_ai_isn_t_as_smart_as_you_think_but_it_could_be Speaker: Jeff Dean Jeffrey Adgate “Jeff” Dean (born July 23, 1968) is an American computer scientist and software…

Spirng 当中 Bean的作用域

Spirng 当中 Bean的作用域 文章目录 Spirng 当中 Bean的作用域每博一文案1. Spring6 当中的 Bean的作用域1.2 singleton 默认1.3 prototype1.4 Spring 中的 bean 标签当中scope 属性其他的值说明1.5 自定义作用域,一个线程一个 Bean 2. 总结:3. 最后: 每…

JAVA基础---Stream流

Stream流出现背景 背景 在Java8之前,通常用 fori、for each 或者 Iterator 迭代来重排序合并数据,或者通过重新定义 Collections.sorts的 Comparator 方法来实现,这两种方式对 大数量系统来说,效率不理想。 Java8 中添加了一个…

一款可视化正则表达式工具

regex-vis是一款在线免费且可视化的正则表达式工具 界面图: 只能输入由26个英文字母组成的字符串 ^[A-Za-z]$ 只能输入数字 ^[0-9]*$测试错误 测试正确 快来感受一下叭 官方网址: Regex VisRegex visualizer & editor, make the regular expr…

西门子:HMI小游戏-灰太狼与喜羊羊

DB块: HMI界面: 实际视频: 抓羊小游戏

docker各目录含义

目录含义builder构建docker镜像的工具或过程buildkit用于构建和打包容器镜像,官方构建引擎,支持多阶段构建、缓存管理、并行化构建和多平台构建等功能containerd负责容器生命周期管理,能起、停、重启,确保容器运行。负责镜管理&am…

电脑技巧:推荐一款非常好用的媒体播放器PotPlayer

目录 一、 软件简介 二、功能介绍 2.1 格式兼容性强 2.2 高清播放与硬件加速 2.3 自定义皮肤与界面布局 2.4 多音轨切换与音效增强 2.5 字幕支持与编辑 2.6 视频截图与录像 2.7 网络流媒体播放 三、软件特色 四、使用技巧 五、总结 一、 软件简介 PotPlayer播放器 …

【面试经典 150 | 回溯】括号生成

文章目录 写在前面Tag题目来源解题思路方法一:暴力法方法二:回溯 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到…