新聞中心

        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.104case.com/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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 清水河县| 河池市| 万源市| 江阴市| 淳安县| 二连浩特市| 汉沽区| 南部县| 河曲县| 驻马店市| 黄龙县| 五台县| 新野县| 横山县| 大兴区| 天镇县| 潞城市| 新竹市| 勃利县| 芦溪县| 卓资县| 长汀县| 平乡县| 略阳县| 利川市| 万州区| 海口市| 揭阳市| 凌源市| 米易县| 鄄城县| 江城| 吉安市| 贡觉县| 灯塔市| 新丰县| 海晏县| 四子王旗| 舞阳县| 通海县| 库车县|