<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM11的嵌入式Linux NAND FLASH模擬U盤(pán)掛載分析與實(shí)現

基于A(yíng)RM11的嵌入式Linux NAND FLASH模擬U盤(pán)掛載分析與實(shí)現

作者: 時(shí)間:2013-04-22 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:介紹了嵌入式操作系統下基于三星微處理器的NAND FLASH的原理與實(shí)現方法。操作系統采用 2.6.28版本,平臺為飛凌OK6410-A開(kāi)發(fā)板。采用的方案是通過(guò)添加一個(gè)512 MB的NAND FLASH分區空間,配置系統USB Gadget功能,實(shí)現劃分出的512 MB的NAND FLASH空間以U盤(pán)存儲系統與PC機通信。該方案的文獻目前在國內外同等操作系統版本和平臺上并無(wú)先例。通過(guò)上述方案成功地實(shí)現了開(kāi)發(fā)板劃分出512 MB的NAND FLASH空間以U盤(pán)形式掛載到了PC機上,實(shí)現與PC機的信息交換。
關(guān)鍵詞:;;Linux;

0 引言
現階段嵌入式產(chǎn)品作為U盤(pán)掛載到PC機上在各類(lèi)電子產(chǎn)品中被越來(lái)越多的應用,Linux操作系統在電子產(chǎn)品中的應用也越來(lái)越廣泛,但是Linux中掛載到PC機中,與PC機上通用Windows的通信還很好的達到實(shí)現。本文基于體系結構的處理器,實(shí)現了Linux系統下NAND FLASH模擬U盤(pán)掛載到PC機上與Windows進(jìn)行通信。并在飛凌的OK6410-A板上得到驗證,實(shí)現了該功能。
目前國內嵌入式產(chǎn)品多用ARM9體系結構,則用于高端電子產(chǎn)品,NAND FLASH模擬U盤(pán)的掛載技術(shù)雖然在電子產(chǎn)品中廣泛應用,但是對于以新起的Linux操作系統的高端電子產(chǎn)品,這項技術(shù)還鮮少以文獻的形式得以系統闡述,國內長(cháng)春大學(xué)張偉等人在這方面做過(guò)研究,但是他們是基于A(yíng)RM9體系,本文基于A(yíng)RM9在A(yíng)RM11體系結構的處理器上做了新的研究和應用。
現階段有3類(lèi)方式可以實(shí)現模擬U盤(pán)的功能,虛擬vfat.ing模擬U盤(pán)掛載,SD卡模擬U盤(pán)掛載,NAND FLASH模擬U盤(pán)掛載。NAND FLASH由于其大容量和高性?xún)r(jià)比,往往更加流行。本文是通過(guò)NAND FLASH實(shí)現模擬U盤(pán)的掛載的。

1 NAND FLASH模擬U盤(pán)原理分析
嵌入式產(chǎn)品模擬U盤(pán)與PC通信是現代嵌入式產(chǎn)品所廣泛應用的一種技術(shù),因此在實(shí)現Linux下NAND FLASH模擬U盤(pán)之前先要對Linux下NAND
FLASH模擬U盤(pán)的原理進(jìn)行分析。Linux下對模擬U盤(pán)存儲設備的支持就是Linux-USB Gadget驅動(dòng)的加載,該驅動(dòng)框架實(shí)現了USB協(xié)議定義的設備端的軟件功能。
1.1 Linux-Gadget框架
Linux系統中Gadget驅動(dòng)層序框架分為3層:Gadget驅動(dòng)層;Gadget API層;UDC層。Gadget驅動(dòng)層實(shí)現實(shí)現不同的USB功能,例如“USB網(wǎng)卡”、“U盤(pán)”、“打印機”等。Gadget API層,為Gadget提供的一套標準API,由底層USB設備控制器(USB Device Controller,UDC)實(shí)現這套API,Gadget驅動(dòng)通過(guò)調用這些API實(shí)現與UDC通信。UDC是片上系統(SoC)的一部分,不同的UDC需要不同的驅動(dòng),同樣的UDC不同板子代碼也不一樣,這一層為平臺相關(guān)層,直接訪(fǎng)問(wèn)訪(fǎng)問(wèn)硬件,并向上層提供與硬件相關(guān)操作的回調函數。Gadget驅動(dòng)框架原理圖如圖1所示。

本文引用地址:http://dyxdggzs.com/article/148060.htm

a.JPG


UDC層中usb_gadget和usb_ep為2個(gè)描述結構體,分別描述UDC和端點(diǎn),Gadget API通過(guò)這兩個(gè)結構實(shí)現對UDC的控制。usb_gadget_ops和usb_ep_ops為函數集結構體,其主要功能是實(shí)現與硬件的交互并實(shí)現返回給上層Gadget API所需信息的功能。usb_gadget_register_driver和usb_gadget_unregister_driver為Gadget框架提供的標準API,是驅動(dòng)層序的注冊函數,由UDC層提供,之所以不是通過(guò)Gadget API層實(shí)現的原因是,用于將Gadget驅動(dòng)程序綁定到UDC。xxx_udc_irq是UDC設備的中斷處理函數,處理設備及其端點(diǎn)的中斷請求。
Gadget API層為Gadget定義的一組標準API接口函數,并向上提供編程接口,這一層的存在實(shí)現了將下層UDC驅動(dòng)和上層Gadget驅動(dòng)程序的隔離,使得Linux系統中編寫(xiě)USB設備側驅動(dòng)程序時(shí)能夠把功能的實(shí)現和底層通信分離。
Gadget驅動(dòng)程序使用usb_gadget_driver結構體描述,實(shí)現將Gadget驅動(dòng)與下層設備控制器相關(guān)聯(lián),并開(kāi)啟設備功能。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程



上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: ARM11 模擬U盤(pán) Linux S3C6410

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>