行情
HOME
行情
正文内容
config_mtd_nand U-Boot之NORFLASH驱动
发布时间 : 2024-11-28
作者 : 小编
访问数量 : 23
扫码分享至微信

U-Boot之NORFLASH驱动

在电子设备中主流的存储类的介质包括易失性和非易失性两种。易失性的存储介质在掉电后,里面的数据就会自动消失,所以主要用于实时性的运行程序以及临时存储数据。由于非易失性存储介质在掉电之后,数据不丢失,所以主要用于存储程序和数据。

存储芯片的分类

NORFLASH作为非易失性的存储介质有了几十年的历史,Intel于1988年首先开发出NORFLASH技术,彻底改变了原先由EPROM电可编程序只读存储器)和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND Flash 结构,强调降低每比特的成本,有更高的性能,并且像磁盘一样可以通过接口轻松升级。

NORFLASH

NORFLASH在NANDFLASH的冲击下,市场使用率逐渐降低。但近年来随着智能手机、5G技术的发展,NORFLASH的应用规模又有了显著的提高。

NORFLASH近年的应用情况

CFI技术

由于生产Flash Memory的半导体制造商众多,不同厂商FlashMemory产品的操作命令集和电气参数又千差万别,这给FlashMemory的开发设计人员和OEM制造商带来许多不便。为了对现有的Flash Memory的产品进行升级或使用其它公司的FlashMemory产品替换,必须对原有的程序代码和硬件结构进行修改。为解决上述原因所引发的问题,迫切需要Flash Memory制造商提出一个公共的标准解决方案,在这样的背景下,公共闪存接口(CFI)诞生了,CFI是一个公开的标准的从Flash_Memory器件中读取数据的接口。它可以使系统软件查询已安装的Flash_Memory器件的各种参数,包括器件阵列结构参数、电气和时间参数以及器件支持的功能等。利用CFI可以不用修改系统软件就可以用新型的和改进的产品代替旧版本的产品。

可以通过发送特定指令来确定当前NORFLASH是否支持CFI。通常的CFI查询指令如下表所示:

CFI指令码

NORFLASH驱动原理

若当前NORFLASH支持CFI模式,那么在U-Boot中通过打开下图所示宏定义,使能相应的驱动,该部分驱动代码可以保证用户能够使用NORFLASH的基本功能,包括NORFLASH的擦除、读、写等功能基本已经囊括在内。

CONFIG_MTD_NOR_FLASH

NORFLASH驱动属于设备端代码,因此在U-Boot初始化的后半部分来实现,通过调用init_sequence_r[]中定义的回调函数initr_flash,来执行底层的flash_detect_cfi()函数。具体的初始化流程如下图所示:

NORFLASH驱动流程

NORFLASH设备的使用

我们知道NORFLASH可以作为嵌入式设备的存储介质,也可以作为嵌入式设备的启动设备,CPU上电后从NORFLASH开始执行代码,或者在NORFLASH上直接执行XIP模式的代码,或者将NORFLASH内的程序由相应的ROM代码搬移到指定位置去执行。

对于U-Boot下的NORFLASH设备驱动,支持以命令行的方式对其进行调试和使用。这极大的方便了故障的诊断以及熟悉NORFLASH的工作原理。

默认情况下NORFLASH驱动支持的命令行包括:flinfo、erase,间接支持的命令行包括:cp、md、mw等。

NORFLASH命令

下面逐一对各命令行的使用作以说明。

1、flinfo

flinfo指令可以打印出当前环境下的NORFLASH信息,包括:flash的容量、扇区个数、设备ID、驱动中对应的buffer_size信息等。

flinfo命令

2、erase

NORFLASH在写入数据之前一定要先擦除才可以正常工作,擦除之后NORFLASH默认的数据为1,也就是0xffffffff,仅当写入数据为0时,对应的bit位会发生变化。

NORFLASH擦除之前如下:

NORFLASH未擦除之前

执行erase all命令,NORFLASH擦除之后如下:

NORFLASH擦除命令

擦除后的结果

3、Write

向NORFLASH中写入数据,由于我们之前已经完成了NORFLASH的擦除工作,所以此处可以直接执行写命令,将DDR内的数据写入到NORFLASH。

写NORFLASH

以上就是U-Boot中NORFLASH相关的知识,后续介绍基于NORFLASH启动等相关内容。

「网络工程师」教你锐捷设备配置堆叠

在常见网络中经常见到配置设备堆叠,堆叠大大扩展了端口密度,同时也带来方便、集中式管理的优点,减少维护量。下面我就以两台锐捷S2928G-S为例组建线型堆叠。

网络拓扑

一、配置步骤:

从单机模式空配置开始配置堆叠组参数,步骤如下:

1)配置设备优先级

注意:部分交换产品(以A产品为代号),默认优先级为1,范围为1-10,优先级越大越优先;若优先级一样,mac地址越小越优先;

部分交换产品(以B产品为代号),默认优先级为5,范围为1-10,优先级越小越优先;若优先级一样,mac地址越小越优先;

A产品:s20g、s23系列、s26系列、s26E/P系列、s29-E/S系列、s29系列;

B产品:s26I系列、s2924gt/8sfp-p;

2)配置设备别名

3)配置堆叠端口

特别说明: 无论物理链路上采用前文提到的2.5G专用堆叠线缆还是普通的千兆光口做堆叠,关于堆叠的基本参数都是需要配置,并且命令没有任何区别

分别配置堆叠主设备,从设备两台交换机的关于堆叠的基本配置

主设备:RG-S2928G-S-1配置如下:

ruijie#config terminal

ruijie(config)#device-priority 10 //配置设备优先级,数值越大越优先,默认是1,这边我们把主设备优先级设置为10

ruijie(config)#device-description RG-S2928G-S-1 //配置设备别名,用于堆叠后区分每台主机,便于记忆与管理

ruijie(config)#interface gigabitEthernet 0/28

ruijie(config-if-GigabitEthernet 0/28)#stack on //将28口配置为堆叠端口,随后系统会有日志提示,切换到堆叠模式才能生效

you must reload switch to change interface GigabitEthernet 0/28 to stack mode!

ruijie#write //关于堆叠的基本配置完成后需要确认无误后保存,否则重启丢失,堆叠无法建立

从设备:RG-S2928G-S-2配置如下:

ruijie#config terminal

ruijie(config)#device-description RG-S2928G-S-2

ruijie(config)#interface gigabitEthernet 0/28

ruijie(config-if-GigabitEthernet 0/28)#stack on

you must reload switch to change interface GigabitEthernet 0/28 to stack mode!

ruijie#write

二、功能验证:

1)将两台设备同时 直接断电重启,注意观察启动日志,当经历正常的系统启动后,会进入堆叠协商阶段 ,如果配置及物理链路没有问题的话,堆叠将自动建立成功

<---------------系统正常启动日志此次省略----------------------->

Copyright (c) 1998-2012s by Ruijie Networks.

All Rights Reserved.

Neither Decompiling Nor Reverse Engineering Shall Be Allowed.

*Oct 7 20:10:40: %MTD_DRIVER-5-MTD_NAND_FOUND: 1 NAND chips(chip size : 134217728) detected

Stack System is voting.. //当出现这个日志提示的时候,表示接入堆叠协商阶段,选举主从设备,时间经历约30秒,如果你等待超过1,2分钟,请检查堆叠模块的连接以及配置是否存在问题

*Oct 7 20:11:49: %DEVICE-5-CHANGED: Device S2928G-S (1) changed state to up.

*Oct 7 7 20:11:49: %DEVICE-5-CHANGED: Device S2928G-S (2) changed state to up. //当提示各成员设备状态都up的日志时,表示堆叠协商完成,相应的设备组建成堆叠组

2)执行show version slot,show version device,show member查看堆叠各成员状态

ruijie#show version slots //此次显示所有堆叠成员设备信息,端口总数等

Device Slot Ports Max Ports Module

------ ---- ----- ---------- --------------------------

1 0 28 28 S2928G-S

2 0 28 28 S2928G-S

ruijie#show member //此次显示更加丰富的堆叠成员的MAC,优先级,软件版本,设备别名等信息

Member Mac Address Priority Software Version Hardware Version Description

---------- -------------- -------- ------------------------------------------------ ---------------- -----------

1 001a.a9c4.05f2 10 RGOS 10.4(2b11)p1 Release(134566) 1.01 RG-S2928G-S-1

2 001a.a9c4.062e 1 RGOS 10.4(2b11)p1 Release(134566) 1.01 RG-S2928G-S-2

3)堆叠组只有主设备可以console管理,其他成员设备均无法管理,显示NGSA-M2.0>

三、功能测试:

配置完毕后,需要进行功能性测试,包括但不限于:

1)测试堆叠的可靠性

2)测试堆叠的带宽提升性

3)测试客户其他业务应用是否正常(协调客户联系确认业务测试方法或提前制定测试方案)

相关问答

如何查看linux根分区下全部目录及文件的大小-ZOL问答

makeCONFIG_PREFIX=/work/nfs_root/first_fsinstallbootargs=noinitrdroot=/dev/mtdblock3init=/lin...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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