首页 > 嵌入式软件 > linux

现今嵌入式存储产品已渗透进人们生活工作中的方方面面,从ATM 机到手持通讯设备。社会对嵌入式产品的性能也有越来越高的要求:大容量,高速度,断电保护,体积限制等等。当前数据记录仪的容量和速度普遍偏小。本文旨在研究一种的数据存储容量达512MB 高速数据记录仪,它可以用于多路信号采集系统中。重点研究在嵌入式linux 系统平台的架构下基于NandFlash 的存储技术。

本文引用地址: http://embed.21ic.com/software/linuxos/201801/50500.html

引言

FLASH 是一种不挥发性内存,在无电流供应的条件下也能够长久地保持数据,相对于传统的存储介质具有无可比拟的优势。目前主要的闪存分为两类:Intel 首先开发的NOR flash 和东芝发布的NandFlash。

Nor FLASH 的特点是芯片内执行。应用程序可以直接在闪存内运行。不必再把代码读到系统RAM 中。NOR 的传输效率很高,但是写入和擦除速度很低。Nandflash 存储单元的读写是以页和块为单位来进行,这种结构最大的优点在于容量可以做得很大,NAND 闪存的成本较低,有利于大规模普及。主要功能是存储资料。故而现在码相机闪存卡和MP3 播放器中存储设备几乎全部是NandFlash。现在大部分的嵌入式设备厂商出于成本的考虑都选择了NandFlash 作为存储设备。这样增加了软件设计的复杂度,降低了系统效率而且也限制了Flash 容量。

结合两类闪存的优缺点,本文中我们选择NandFlash 作为数据记录仪上午数据存储器,norflash 作为数据记录仪的程序存储器。

 

1.jpg

图 1:系统整体结构图图

数据记录仪设计整体包括两块,其部分是数据采集模块一部分是数据存储模块,用TLC2578 芯片来实现数据采集AD 转换,系统的调度核心是ARM 处理器,在这里使用S3c2440,ARM 主要负责核心处理和控制。存储器负责程序和数据的存储,其中Nand FLASH 存储数据文件,Nor Flash 负责存储bootloader,操作系统内核和文件系统,SDRAM 存储系统运行时的程序和数据,ARM 通过GPIO 连接相关继电器、触发设备、输出电压控制设备、以及特定设备采样A/D 并进行驱动。

S3C2440 是三星公司的ARM920T 的ARM 控制器:支持32 b 的高速AMBA 总线接口;带有MMU,可以进行Linux 操作系统的移植;支持大页NAND 闪存控制器。NandFlash 芯片选用K9F4G08U0M,这是Samsung 生产的512 MB 的NAND Flash 存储器。内部存储结构为(2K+64)字节&TImes;32 页&TImes;4 096 块,NAND Flash 接口信号比较少,数据线宽度只有8bit,CLE 和ALE 两个引脚信号用来区分总线上的数据类型,没有地址总线。Nor Flash 采用16MX16 位的E28F128J3A,NORFlash 接口与系统总路线完全匹配,16 个数据输入输出引脚,可以连接在系统总线上。NORFlash 有三个芯片片选引脚信号,选用作为片选信号,与处理器引脚相连。BYTE接高电平,表示Flash 在16 位数据传输模式下。

系统软件组成

本系统的软件部分包括应用程序和系统程序,应用程序主要是 AD 采集和读写Flash,见图2,而系统程序就是应用程序工作的软件平台。它由以下部分组成:系统引导程序、嵌入式操作系统linux 内核、文件系统。

系统引导程序负责将操作系统内核固化到Flash 中和系统初始化工作,然后将系统控制权交给操作系统。在本文里我们使用uboot 作为系统引导程序。嵌入式操作系统内核是嵌入式系统加电运行后的管理平台,负责实时性任务和多任务的管理,这里选择嵌入式linux 内核。

文件系统是对一个存储设备上的数据和元数据进行组织的机制。Linux 文件系统接口实现为分层的体系结构,从而将用户接口层、文件系统实现和操作存储设备的驱动程序分隔开。JFFS2 是专门针对嵌入式系统中的Flash 存储器的特性而设计的一种日志文件系统。YAFFS2 支持大页面的NAND 设备,并且对大页面的NAND 设备做了优化。

软件平台固化在Nor Flash 中。根据软件平台的内容 对Nor Flash 的地址空间进行分区,这里分三个区,分别存放bootloader、Linux 内核和文件系统。

NandFlash 驱动设计

NandFlash 驱动程序框架

按照 linux 下驱动编写规范编写nand flash 驱动,其实主要工作就是实现下面这个结构体中的函数。

 

2.jpg

s3c2440_nand_drive 这个结构体用于向内核注册Nand Flash 设备,它会被platform_driver_register 函数调用到。其中s3c2440_nand_probe 是最重要的,它完成对nand 设备的探测。

 

3.jpg

Nand_scan 是在初始化nand 的时候对nand 进行的一步非常好重要的操作,在nand_scan 中会对我们所写的关于特定芯片的读写函数重载到nand_chip 结构中去,并会将mtd_info 结构体中的函数用nand 的函数来重载,实现了mtd 到底层驱动的联系。并且在nand_scan 函数中会通过读取nand 芯片的设备号和厂家号自动在芯片列表中寻找相应的型号和参数,并将其注册进去。

NandFlash 读页操作函数

NandFlash 读数据操作以页为单位,读数据首先写入读数据命令00H(如图3),然后输入要读取页的地址,接着从数据寄存器中读取数据,最后进行ECC 校验。

换一批

延伸阅读

[真心话] IT开发的岔路口:究竟是JAVA好还是嵌入式好?

IT开发的岔路口:究竟是JAVA好还是嵌入式好?

一份工作在一个人的生活中占据重要地位,对于一个人的生活质量占据决定性作用,可以说工作决定一个人一生,对于选择工作当然是要选择新兴产业且有发展前途的行业......

关键字:嵌入式 JAVA

[真心话] 致青春 FROM:一只嵌入式行业摸爬滚打数十载的老鸟

致青春   FROM:一只嵌入式行业摸爬滚打数十载的老鸟

作为一名在嵌入式行业摸爬滚打许久的老鸟,回想自己的经历之路,那么漫长可又仿佛近在眼前。——此文仅献给那些刚刚踏上硬件之路和还在徘徊的同学们,在此我简要的记录了我的学习经历和其间自己所获的一些心得,以帮助初学者少走弯路。......

关键字:工程师 嵌入式 FPGA

[疯狂史] 大学学了四年电子出来啥都干不成,原因难道都在我自己吗?

大学学了四年电子出来啥都干不成,原因难道都在我自己吗?

随着嵌入式EDA电子技术的飞速发展和应用领域的延伸扩张,仅仅在30多年前尚未曾有过的大量学科纷纷出现在高等教育的课程设置中。......

关键字:大学 嵌入式 EDA

[真心话] 嵌入式系统工程师的十个“不要”

嵌入式系统工程师的十个“不要”

不要第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。......

关键字:嵌入式 系统工程师
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi®和蓝牙®combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14