《嵌入式Linux软硬件开发详解——基于S5PV210处理器》——2.3 SLC Nand Flash芯片

简介:

本节书摘来自异步社区《嵌入式Linux软硬件开发详解——基于S5PV210处理器》一书中的第2章,第2.3节,作者 刘龙,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.3 SLC Nand Flash芯片

2.3.1 NOR Flash与NAND Flash对比

在嵌入式系统中,很多信息在系统关闭电源后不能够丢失,这些信息需要使用非易失性存储器来存储,我们可以使用NOR Flash和NAND Flash来实现。

NOR Flash和NAND Flash是现在市场上两种主要的非易失闪存技术。Intel公司于1988年首先开发出NOR Flash技术;1989年,东芝公司开发出NAND Flash技术。NAND Flash和NOR Flash的主要区别如表2-3所示。


screenshot

2.3.2 SLC与MLC NAND Flash技术对比

在嵌入式设备中使用SLC和MLC这两种不同类型的NAND Flash闪存技术的设备都很常见。SLC全称为Single-Level Cell,单层单元闪存;MLC全称为Multi-Level Cell,多层单元闪存。两者的主要区别是SLC每一个单元储存一位数据,而MLC通过使用多个电压等级,每一个单元储存两位数据,数据密度比较大。

SLC生产成本较高,但在效能上大幅胜于MLC。SLC晶片可重复写入约10万次,而MLC晶片的写入次数约为1万次,目前三星采用的MLC芯片写入寿命在5000次左右。在读写速度上,相对于主流SLC芯片,MLC芯片理论速度较慢。MLC能耗大于SLC,在相同使用条件下比SLC要多15%左右的能耗,因为MLC理论写入次数上限相对较少,所以在相同使用情况下,使用寿命比SLC短。

两种闪存技术对应芯片区别如表2-4所示。


screenshot

Smart210开发板无NOR Flash。采用的是SLC类型NAND Flash,容量为512MB,型号为K9F4G08UOB。

2.3.3 K9F4G08UOB引脚功能

K9F4G08UOB的引脚排列如图2-8所示,各个引脚的功能如表2-5所示。


screenshot


screenshot


screenshot

screenshot

K9F4G08UOB内部结构如图2-9所示。


screenshot

NAND Flash设备的存储容量是以页(Page)和块(Block)为单位,1Block=64Page,1Page=2112Byte(2048Byte用于存放数据,其余64Byte用于存放其他信息,如块好坏的标记、块的逻辑地址、页内数据的ECC校验和等)。

容量为512MB的NAND Flash存储结构为:2048Byte×64Page×4096Blocks。

芯片(Device)、块(Block)、页(Page)之间的关系如下。

1 Device = 4,096 Blocks = 4096×64 Pages = 256K Pages

1 Block = 64 Page

1 Page = 2112 Byte = 2048 Byte + 64 Byte

用于数据存储的单元有 2048 Bytes×64 Pages×4096 Blocks = 512 MB。

用于ECC校验或其他功能的单元有64 Bytes×64 Pages×4096 Blocks = 16MB 。

NAND Flash以页为单位进行读和编程(写)操作,一页为2048Byte;以块为单位进行擦除操作,一块为2048Byte×64page=128KB。

K9F4G08UOB的内部对每一页又进行了划分,每页分成前2048Byte的Main域和64Byte的Spare域,在Main域中,分成A、B、C、D四个扇区;Spare域中,分成E、F、G、H四个扇区。每个扇区占据不同的存储空间,具体分布情况如图2-10、图2-11所示。

screenshot

2.3.4 NAND Flash硬件设计

S5PV210和K9F4G08UOB的连接方式如图2-12所示。

K9F4G08UOB的访问地址、数据和控制命令只能在引脚I/O[7:0]上传递。对于不同的数据类型,S5PV210微处理器和NAND Flash之间是通过控制总线和一些命令序列来进行区分的。该NAND Flash芯片所支持的命令序列如表2-6所示。


screenshot


screenshot


screenshot

screenshot

K9F4G08UOB容量为512MB,需要30根地址线确定微处理器要访问的地址,而K9F4G08UOB只有8个I/O口,所要操作的地址是在控制引脚的配合下,先后5次发送至Flash内部。发送地址时地址序列如表2-7所示。


screenshot

序列中列地址为A0~A11,行地址为A12~A29,L表示在写的时候置为0。对S5PV210访问NAND Flash地址的指定,只需要分5步将地址值写入S5PV210的NAND Flash控制寄存器即可,NAND Flash控制器会自动地通过8个I/O,在控制引脚帮助下,分五次通过I/O0~I/O7完成对NAND Flash地址的写操作。

相关文章
|
12天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
68 13
|
5月前
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
312 2
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
116 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
3月前
|
存储 Linux 开发工具
如何进行Linux内核开发【ChatGPT】
如何进行Linux内核开发【ChatGPT】
|
4月前
|
Java Linux API
Linux设备驱动开发详解2
Linux设备驱动开发详解
60 6
|
4月前
|
消息中间件 算法 Unix
Linux设备驱动开发详解1
Linux设备驱动开发详解
64 5
|
4月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
160 3
|
4月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
143 3
|
5月前
|
Web App开发 缓存 Linux
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
《FFmpeg开发实战》书中第10章提及轻量级流媒体服务器MediaMTX,适合测试RTSP/RTMP协议,但不适合生产环境。推荐使用SRS或ZLMediaKit,其中SRS是国产开源实时视频服务器,支持多种流媒体协议。本文简述在华为欧拉系统上编译安装SRS和FFmpeg的步骤,包括安装依赖、下载源码、配置、编译以及启动SRS服务。此外,还展示了如何通过FFmpeg进行RTMP推流,并使用VLC播放器测试拉流。更多FFmpeg开发内容可参考相关书籍。
140 2
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
|
5月前
|
Linux
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
《FFmpeg开发实战》书中介绍了直播的RTSP和RTMP协议,以及新协议SRT和RIST。SRT是安全可靠传输协议,RIST是可靠的互联网流传输协议,两者于2017年发布。腾讯视频云采用SRT改善推流卡顿。以下是Linux环境下为FFmpeg集成libsrt和librist的步骤:下载安装源码,配置、编译和安装。要启用这些库,需重新配置FFmpeg,添加相关选项,然后编译和安装。成功后,通过`ffmpeg -version`检查版本信息以确认启用SRT和RIST支持。详细过程可参考书中相应章节。
121 1
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist