www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 本文介紹了嵌入式Linux操作系統(tǒng)下基于三星微處理器S3C6410的NAND FLASH模擬U盤的原理與實(shí)現(xiàn)方法。操作系統(tǒng)采用Linux 2.6.28版本,平臺(tái)為飛凌OK6410-A開發(fā)板。采用的方案是通過添加一個(gè)512 MB的NAND

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

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

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


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


1.2 Linux NAND FLASH分區(qū)原理
NAND FLASH作為存儲(chǔ)設(shè)備,存儲(chǔ)著嵌入式產(chǎn)品從開機(jī)到結(jié)束的所有代碼,所以做好存儲(chǔ)設(shè)備的分區(qū)是至關(guān)重要的問題,LINUX操作系統(tǒng)下,分區(qū)如圖2所示。


Linux2.6內(nèi)核中,在文件archarmplat-s3cincludeplatPartition.h中定義了分區(qū)信息如下:

其中“.name”為分區(qū)的名稱,“.offset”為分區(qū)起始地址,“.size”為分區(qū)大小。這個(gè)結(jié)構(gòu)體包涵了NANDFLASH的所有分區(qū)信息。

2 NAND FLASH模擬U盤實(shí)踐方法
2.1 修改內(nèi)核
由于struct mtd_partition s3c_partition_info[]定義了分區(qū)信息,所以首先要修改或者添加分區(qū)信息,使得模擬得到的U盤空間大小符合實(shí)際需求。
在arch\arm\plat-s3c\incIude\plat\Partition.h的struct mtd_partition s3c_partition_info[]中添加分區(qū)信息如下:


其中:.name為分區(qū)名稱,定義為U_Strorage,.offset為起始地址,這個(gè)值需要結(jié)合該模塊前面的模塊的大小和起始地址算出;.size為定義的分區(qū)大小,為512 MB。
添加分區(qū)后重新編譯,可在文件系統(tǒng)的/etc下找到相應(yīng)盤符,如:mtdbLOCk4。
2.2 配置內(nèi)核
內(nèi)核中實(shí)現(xiàn)NAND FLASH模擬U盤掛載的驅(qū)動(dòng)是USB中的Gadget實(shí)現(xiàn)的,所以在實(shí)現(xiàn)這項(xiàng)功能時(shí),首先在編譯內(nèi)核的時(shí)候,配置上Gadget功能。具體操作如下:
在內(nèi)核源代碼的根目錄下執(zhí)行#make menuconfig,這時(shí)將會(huì)看到內(nèi)核的菜單選項(xiàng),選擇:
devICe driver-->
[*]usb support-->
<*>usb gadget support
<*>usb preipheral controller
將usb support功能選中,選擇編譯該功能進(jìn)內(nèi)核,并在usb support功能子目錄中選擇中usb gadget support和usb preipheral contro ller功能,選擇編譯進(jìn)內(nèi)核,做完這些操作后編譯內(nèi)核。
在shell窗口命令行中輸入:
#make zImage
#make modules
在driver/usb/gadget目錄下會(huì)生成g_file_storage.ko和s3c_udc_otg.ko.講這兩個(gè)模塊復(fù)制到目標(biāo)板的文件系統(tǒng)中。
注意:當(dāng)usb gadget support功能非作為模塊編譯進(jìn)內(nèi)核時(shí),編譯過模塊后需要更新內(nèi)核。而當(dāng)usb gadget support功能作為模塊編譯進(jìn)內(nèi)核時(shí),(選擇欄應(yīng)填“usb gadget support”,其中“M”代表模塊),在編譯生成模塊后,除了要加載g_file_storage.ko還要加載s3c_udc_otg.ko。


2.3 加載模塊
在目標(biāo)板的shell命令窗口中執(zhí)行:
#insmod s3c_udc_otg.ko
#insmod g_file_storage.ko file=/dev/mtdbLOCk4 stall=0 removable=1
這個(gè)時(shí)候?qū)⒛繕?biāo)板連接到PC機(jī)即可看到被模擬的U盤盤符,接著就可以像操作正常U盤一樣對該U盤進(jìn)行操作。
注意:這個(gè)時(shí)候模擬U盤已經(jīng)存在,但是在目標(biāo)板中還看不到該U盤盤符,需要執(zhí)行:
#mkdir/mnt/U_Storage
#mount-t vfat/dev/mtdblock4/U_Storage然后,才能在目標(biāo)板的/mnt/U_Storage下操作這個(gè)U盤。

3 總結(jié)與展望
到此已經(jīng)闡述并實(shí)現(xiàn)了模擬U盤的實(shí)現(xiàn)原理,其實(shí)踐結(jié)果如圖3所示。


從圖中看出屬性中U_Storage的容量為504 MB并不是512 MB,這是因?yàn)閺S家生產(chǎn)存儲(chǔ)介質(zhì)時(shí),容量是10進(jìn)制,比如1 GB=1 000 MB,但是電腦卻是采用二進(jìn)制,1 GB=210MB,1 MB=210KB,這樣計(jì)算,電腦顯示容量大小要比標(biāo)注的容量小些。在PC機(jī)上在U_Storage中新建一個(gè)名為“zy”的文件夾,然后再在開發(fā)板上新建一個(gè)名為“haha”的文件夾,同時(shí)在Windows下和板子中查看,會(huì)出現(xiàn)如圖4所示信息。


圖4中H盤為PC機(jī)給U_Storage分配的盤符,上層界面為PC串口與開發(fā)板交互的打印信息該信息顯示的是開發(fā)板的內(nèi)容。從圖中可知,H盤中存在“haha”和“zy”兩個(gè)目錄;開發(fā)板與PC交換界面中跳到/mnt/U_Storage/目錄下,用“l(fā)s”命令查得,開發(fā)板交換目錄中存在“haha”和“zy”兩個(gè)目錄,證明U盤和PC交互信息成功。NAND FLASH模擬U盤掛載,使得目標(biāo)板充分利用了U盤的便捷功能,使得攜帶、操作、移植更為方便。Linux下基于ARM11體系結(jié)構(gòu)模擬U盤的實(shí)現(xiàn)使得高端電子產(chǎn)品模擬U盤技術(shù)得到廣泛應(yīng)用。經(jīng)實(shí)驗(yàn)驗(yàn)證該設(shè)計(jì)是成功的,成功解決了ARM11體系結(jié)構(gòu)下目標(biāo)板作為U盤掛載到PC機(jī)的問題,具有實(shí)際意義。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉