行情
HOME
行情
正文内容
nand falsh驱动 NAND flash 信号线的理解
发布时间 : 2024-10-06
作者 : 小编
访问数量 : 23
扫码分享至微信

NAND flash 信号线的理解

上一篇我们已经讲了NAND flash的分类,这一篇介绍NAND flash 的硬件接口。例如

由NAND Flash的原理图封装,然后查看芯片手册。

由图可知:IO0-IO7:既可传送数据也可传送地址,也可以送传命令。那到底是读是写,还是擦除?怎么区分IO0-IO7传送的是数据?地址?命令? 那么就需要通过CLE与ALE的状态来区分了。

假如2440要读取A地址的数据,或将数据写入B地址。当CLE为高电平表示IO0-IO7传送的是命令;当ALE为高电平表示IO0-IO7传送的是地址;当ALE与CLE都为低电平的时候,表示IO0-IO7传送的是数据。

CE:片选。当2440要操作访问Nand的时候,首先必须选中。

RE:读信号,当RE为低的时候,表示数据由Nand流向2240;

WE:写信号,当RE为低电的时候,表示数据由2240流向Nand;

WP:写保护,只能写,不能擦除。

R/B:Ready信号,表示Nand Flash烧写完成

这些引脚具体怎么组合起来的,需要查看手册中的时序图。

发(写)命令的时序图:

首先CE发出片选信号,CLE发出高电平,IO 0-7将命令驱动出去,WE写脉冲,在写脉冲的上升沿,Nand flash在上升沿,将IO 0-7中数据读取出来。

发地址的时序图:

CE片选, ALE由低变高,IO 0-7驱动 数据,WE发出写脉冲。

输入(写)数据的时序图:

CE选中,ALE、CLE低电平,2440 IO 0-7驱动 数据,WE写信号,Nand flash根据ALE、CLE低电平,读取数据。

输出(读)数据的时序图:

CE低电平选中,RE由高变为低(Nand flash收到RE由高变低时,马上准备数据,然后在RE的上升沿将数据发送出去),Nand flash 驱动数据到IO 0-7,在上升沿,2440取数据。

2440这些引脚发出的数据,必须满足Nand flash的时序要求。需要查看2440芯片手册,查看设备哪个寄存器的某些位来控制时序

Linux 的启动流程

本篇的重点是讲解设备和驱动的启动流程,设备和驱动的流程是整个内核启动的核心,也是工作中最常面对的问题。出于知识点的系统性考虑,在进入主题之前我们先看下整个 Linux 在 ARM 中的启动流程如何。

Uboot 的启动流程

ARM Linux 的启动流程大致为:Uboot → Kernel → Root filesystem。Uboot 在上电的时候就拿到 CPU 的控制权,实现了硬件的初始化。具体是怎么实现的呢?一起来看一下,CPU 的内部集成了小容量的 Sram,而 PC 指针一上电就指向 Sram 的起始地址 0x00000000,所以一上电 Uboot 代码就得到了运行。

Uboot 拿到 CPU 使用权就开始做初始化工作,比如关闭看门狗、设置 CPU 运行模式、设置堆栈、初始化内存、网卡、nand flash 等,最后把 Linux 内核加载到内存中。

初始化 RAM

因为内核要在 RAM 中运行,所以在调用内核之前必须初始化和设置 RAM,为调用内核做好准备。

初始化串口

内核在启动过程中可以将信息通过串口输出,这样就可以清楚的知道内核启动信息。虽然串口不是 Uboot 必须要完成的工作,但是通过串口可以方便调试 Uboot 和内核的各种信息。

检测处理器类型

Uboot 在调用内核前需要检测系统的处理器类型,并将其保存在某个变量中提供给内核,内核在启动过程中会根据该处理器的类型调用相应的初始化程序。

设置内核启动参数

内核在启动过程中会根据该启动参数进行相应的初始化工作。

调用内核镜像

值得注意的是存储 Uboot 的存储器不同,Uboot 的执行过程也并不相同,一般来讲 Flash 分为 nor Flash 和 nand Flash 两种:nor Flash 支持芯片内执行(XIP,eXecute In Place),这样代码可以在 Flash 上直接执行而不必复制到 RAM 中去执行。

但是 nand Flash 并不支持 XIP,所以要想执行 nand Flash 上的代码,必须先将其复制到 RAM 中去,然后跳到 RAM 中去执行。如果内核存放在 nor Flash 中,那么可直接跳转到内核中去执行。但通常由于在 nor Flash 中执行代码会有种种限制,而且速度也远不及 RAM 快,所以一般的嵌入式系统都是将内核复制到 RAM 中,然后跳转到 RAM 中去执行。不论哪种情况,在跳到内核执行之前 CPU 的寄存器必须满足以下条件:r0 = 0,r1 = 处理器类型,r2 = 标记列表在 RAM 中的地址。

Linux 内核的启动流程(设备和驱动的加载)

关于 Uboot 的启动本课程不做详细介绍,因为本课程的主要内容是内核。在讲述内核启动之前让我们先了解下内核的组成结构:

其中,

(1)vmlinusx 是 ELF 格式的 Object 文件,这种文件只是各个源代码经过连接以后得到的文件,并不能在 ARM 平台上运行。

(2)经过 objcopy 这个工具转换以后,得到了二进制格式文件 Image,Image 文件相比于 vmlinusx 文件,除了格式不同以外,还被去除了许多注释和调试的信息。

(3)Image 文件经过压缩以后得到了 piggy.gz,这个文件仅仅是 Image 的压缩版,并无其他不同。

(4)接着编译生成另外几个模块文件 misc.o、big_endian.o、head.o、head-xscale.o,这几个文件组成一个叫 Bootstrap Loader 的组件,又叫引导程序,编译生成 piggy.o 文件。

(5)最后 piggy.o 文件和 Bootstrap Loader 组成一个 Bootable Kernel Image 文件(可启动文件)。

经过上面的分析不难知道 piggy.o 就是内核镜像,而剩下的几个文件就组成了引导程序。知道了内核的组成结构,Uboot 就是按照内核的组成结构一层一层剥开然后引导内核的:

可以说 start_kernel之前的所有工作都是为了将环境准备好,满足start_kernel的要求,然后由start_kernel开始进行内核的加载:

关于 start_kernl函数的内容太多,可以通过红色回调函数看出,start_kernel函数基本是在回调很多对应的注册函数。为了本系列课程的结构性这里就不展开所有知识点讲解,本篇内容接着前一篇设备树的内容重点讲解下设备和驱动的匹配过程。

还记得上一篇讲到的设备树三大作用吗?

平台标识;

运行时配置;

设备信息集合。

接下来我们就看看内核在启动的时候是如何寻找设备,驱动又如何和设备绑定的。

首先在平台目录下可以看到有很多平台描述的文件,如图:

有那么多的平台,我们到底要执行哪个平台是首先要考虑的事情。这也是设备三大功能的第一个功能——平台标识。

设备树里有对设备根节点的 Compatible 描述,平台文件里有对 __initconst的描述,如果两个字段一致则找到了对应的板级文件,这样就通过设备树把要用的设备平台与其他平台区分开来了,如图:

找到平台后就可以根据回调函数的指针调用该平台的注册函数。这里以飞思卡尔 imx.6dl 平台为例,回调的时候会调用 imx6q_init_machine函数,如下:

这里补充一个知识点,细心的读者也许发现了在 Compatible 字段里用逗号分隔了两个字符串。板级匹配的时候用的是哪个字符串,另外一个字符串又是做什么用?首先后面的字段 "fsl,imx6dl" 是抽象共用平台描述符,前面的字段 "fsl,imx6dl-sabresd" 是通用平台下的具体平台描述符,可以理解为母板和子板的区别。在具体的子板文件中我们可以通过前面的字段进行设备信息的获取,如图:

接着是运行时配置,让内核在启动的时候根据参数设置进行不同的处理。有经验的读者清楚在 Uboot 里也有对 Bootargs 的配置,这里为什么多此一举呢,是为了在 Uboot 中更灵活的对内核启动进行配置。

最后的作用就是设备信息集合,这是设备和驱动匹配的核心,也是工作中面对最多的情况。出于这一作用的内容是工作中经常遇到的重点也是难点,我们专门用一篇内容来详细讲解各级设备是如何展开的,并且手把手教你如何定制一套自己的开发板全新案例。

相关问答

电脑插USB不管用 提示安装 flash disk 驱动 -ZOL问答

5条回答:【推荐答案】你机器的主版驱动确定安装正确?随机带的主版驱动光盘上有USB驱动安装后便可如还是无法识别你的U盘那你把你的U盘去别人机器上看看找的到不...

超级终端显示有路由器的开启信息,键盘不管用是为什么?-ZOL问答

xuchupeng超级终端是将用户输入随时发向串口(采用TCP协议时是发往网口,这里只...1、nandflash中没有保存环境变量值,可使用saveenv保存环境变量试下;2、环境...

gt555m 安装了华硕最新的显卡 驱动 ie9 flash 无法开启硬件...

[回答]因为IE9是最新的IE浏览器,所以针对于之前版本IE开发的插件或是硬件驱动可能需要更新后才能更好的适用于IE9.您也可以尝试升级最新的AdobeFlashPla...

帮助安装软件“ flash disk”,最后失败,没法读盘。-ZOL问答

4人讨论6873次围观关注问题写回答讨论回答(4)missyou2597下载驱动精灵,更新主板USB驱动(有时候就是主板驱动,集成在里面)到最新版。再试试。还有。试试...

长江存储可以自产晶圆吗?

长江存储以武汉新芯现有的12英寸先进集成电路技术研发与生产制造能力为基础,采取自主研发与国际合作双轮驱动的方式,已于2017年研制成功了中国第一颗3DNAND闪...

如何修复Win10下的 flashplayer? - Microsoft Community

[回答]我了解到了您的问题是观看CBox提示Flash插件未安装。请问您在观看其他网页视频也存在这个问题么?如果观看其他网页视频没有出现此问题,那么是这个...

进不去flashmode模式,总之一点反应都没了,怎么?

如果你有电脑就最好了,马上就可以开始刷机解决。进入flashmode蓝屏模式只是装驱动而已,没其它功能的。不要太紧张如果你有电脑就最好了,马上就可以开始刷机...

电脑上有很多Windows 驱动 程序包,不知道有没有用?可不可以卸载?

最好不要删除它。许多驱动程序都链接到了WINDOWS。如果删除,WINDOWS可能无法启动。当然,并不是所有的都不能使用,但是建议不要随意删除不熟悉的驱动程序。扩...

电脑哪些 驱动 可以卸载?

1.是FLASH驱动,可以卸载,但后果是网页动画全变Xwin10进程太多。2.是GOOGLE的IE插件,可以卸载,后果可能造成网页浏览速度变快.3.是IE风行者,可以卸载,后果是...

拯救者笔记本 flash 安装了还是看不了?

电脑装了flash无法观看课件,这是电脑缺乏flash驱动造成的。Flash软件在电脑运行时,除了软件本身,还需要安装驱动,这样才可以读取动画电脑装了flash无法观看...

 独立董事资格  凯莉 希尔森 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部