新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于ARM11的嵌入式Linux NAND FLASH模拟U盘挂载分析与实现

基于ARM11的嵌入式Linux NAND FLASH模拟U盘挂载分析与实现

作者:时间:2013-04-22来源:网络收藏

摘要:介绍了嵌入式操作系统下基于三星微处理器的NAND FLASH的原理与实现方法。操作系统采用 2.6.28版本,平台为飞凌OK6410-A开发板。采用的方案是通过添加一个512 MB的NAND FLASH分区空间,配置系统USB Gadget功能,实现划分出的512 MB的NAND FLASH空间以U盘存储系统与PC机通信。该方案的文献目前在国内外同等操作系统版本和平台上并无先例。通过上述方案成功地实现了开发板划分出512 MB的NAND FLASH空间以U盘形式挂载到了PC机上,实现与PC机的信息交换。
关键词:;Linux;

0 引言
现阶段嵌入式产品作为U盘挂载到PC机上在各类电子产品中被越来越多的应用,Linux操作系统在电子产品中的应用也越来越广泛,但是Linux中挂载到PC机中,与PC机上通用Windows的通信还很好的达到实现。本文基于体系结构的处理器,实现了Linux系统下NAND FLASH模拟U盘挂载到PC机上与Windows进行通信。并在飞凌的OK6410-A板上得到验证,实现了该功能。
目前国内嵌入式产品多用ARM9体系结构,则用于高端电子产品,NAND FLASH模拟U盘的挂载技术虽然在电子产品中广泛应用,但是对于以新起的Linux操作系统的高端电子产品,这项技术还鲜少以文献的形式得以系统阐述,国内长春大学张伟等人在这方面做过研究,但是他们是基于ARM9体系,本文基于ARM9在ARM11体系结构的处理器上做了新的研究和应用。
现阶段有3类方式可以实现模拟U盘的功能,虚拟vfat.ing模拟U盘挂载,SD卡模拟U盘挂载,NAND FLASH模拟U盘挂载。NAND FLASH由于其大容量和高性价比,往往更加流行。本文是通过NAND FLASH实现模拟U盘的挂载的。

1 NAND FLASH模拟U盘原理分析
嵌入式产品模拟U盘与PC通信是现代嵌入式产品所广泛应用的一种技术,因此在实现Linux下NAND FLASH模拟U盘之前先要对Linux下NAND
FLASH模拟U盘的原理进行分析。Linux下对模拟U盘存储设备的支持就是Linux-USB Gadget驱动的加载,该驱动框架实现了USB协议定义的设备端的软件功能。
1.1 Linux-Gadget框架
Linux系统中Gadget驱动层序框架分为3层:Gadget驱动层;Gadget API层;UDC层。Gadget驱动层实现实现不同的USB功能,例如“USB网卡”、“U盘”、“打印机”等。Gadget API层,为Gadget提供的一套标准API,由底层USB设备控制器(USB Device Controller,UDC)实现这套API,Gadget驱动通过调用这些API实现与UDC通信。UDC是片上系统(SoC)的一部分,不同的UDC需要不同的驱动,同样的UDC不同板子代码也不一样,这一层为平台相关层,直接访问访问硬件,并向上层提供与硬件相关操作的回调函数。Gadget驱动框架原理图如图1所示。

本文引用地址:http://www.eepw.com.cn/article/148060.htm

a.JPG


UDC层中usb_gadget和usb_ep为2个描述结构体,分别描述UDC和端点,Gadget API通过这两个结构实现对UDC的控制。usb_gadget_ops和usb_ep_ops为函数集结构体,其主要功能是实现与硬件的交互并实现返回给上层Gadget API所需信息的功能。usb_gadget_register_driver和usb_gadget_unregister_driver为Gadget框架提供的标准API,是驱动层序的注册函数,由UDC层提供,之所以不是通过Gadget API层实现的原因是,用于将Gadget驱动程序绑定到UDC。xxx_udc_irq是UDC设备的中断处理函数,处理设备及其端点的中断请求。
Gadget API层为Gadget定义的一组标准API接口函数,并向上提供编程接口,这一层的存在实现了将下层UDC驱动和上层Gadget驱动程序的隔离,使得Linux系统中编写USB设备侧驱动程序时能够把功能的实现和底层通信分离。
Gadget驱动程序使用usb_gadget_driver结构体描述,实现将Gadget驱动与下层设备控制器相关联,并开启设备功能。 linux操作系统文章专题:linux操作系统详解(linux不再难懂)

linux相关文章:linux教程



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭