




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、PAGE PAGE 17瓣ARM9般外接晶片讀擺寫的驗(yàn)証疤-以825柏5為範(fàn)例暗外接825般5主要目的叭是透過位址捌線及資料線奧做外接晶片藹讀寫的驗(yàn)証藹。鞍ARM9可班透過如圖1敖所示的轉(zhuǎn)接啊訊號(hào)線擴(kuò)充扒其他的晶片懊功能。瓣圖1. A胺RM-9的敖轉(zhuǎn)接訊號(hào)線解碼位址邦圖2代表A哀RM-9的挨外接記憶體靶解碼位址分襖佈,共分8愛個(gè)區(qū)段(b皚ank)。哎這些區(qū)段分把別由nGC矮S0-nG般CS7來解扳碼,每個(gè)區(qū)靶段(ban背k)共有壩128 M板B的記憶體澳空間。 敖B傲ank0及版Bank1笆分別由快閃邦記憶體(F氨lash 跋memor白y)及隨機(jī)胺讀取記憶體辦(SDRA皚M)所佔(zhàn)用搬。Ban
2、k暗2的解碼致癌能線nCG按S2位於透版過ARM-扮9發(fā)展板轉(zhuǎn)襖接槽的第3瓣4個(gè)接腳,懊如圖1所示頒。nCGS笆2解碼位址罷分佈於0 x耙-0 x,如叭圖2所示。皚y。阿圖2. n扮GCS2的盎解碼位址分瓣佈圖3中AR矮M9的記憶八體區(qū)段(B哀ank)的扮解碼線nG斑CS2接8255的/敗CS;(A霸1, A0邦)分別接8傲255的(挨A1, A案0);DA傲TA7-D案ATA0分跋別接825襖5的D7-礙D0,如圖暗3所示。所拜以8255邦的(POR矮TA, P百ORTB,百 PORT白C, CT背L)的寫入扮位址定義如襖下爸:愛i。八PORTA把=0 x;岸PORTB凹=笆0 x;皚POR
3、TB俺=鞍0 x;艾CTL=把0 x;皚圖3. 8扒255與A奧RM-9的矮連接方法哎ARM-9按的背資料線懊共有32位盎元(DAT哎A31-D版ATA0)霸。然而外接版記憶體(或罷I/O)可罷規(guī)劃為8位礙元、16位疤元及32位胺元共三種模拌式。究竟選白擇那種模式昂,可透過規(guī)哎劃BWSC翱ON暫存器藹的內(nèi)容來決扳定。BWS佰CON暫存安器的位址為熬0 x矮。規(guī)劃Ba跋nk2的外愛接記憶體(靶或I/O)皚 癌資料線傲讀寫半位元數(shù)八為8位元,挨可規(guī)劃BW捌SCON暫案存器的(b耙it9, 巴bit8)班為00,如捌圖4所示。氨程式規(guī)劃的俺參考方法如瓣下凹I。疤圖4. 笆BWSCON暫存器的般bit
4、10岸-bit0敗所規(guī)劃的功案能八ARM-9白外接記憶體邦(或I/O翱)的讀寫時(shí)柏序如圖6所按示。圖6中藹讀寫的各項(xiàng)擺時(shí)間參數(shù)(澳Tacs,按 Tcos拜, Tac胺c, Ta熬cp, T叭coh, 鞍Tcah)襖可由BAN辦KCONx按暫存器(x佰=0,1.哀.5)來調(diào)哀整。BAN奧KCON2隘暫存器的位矮址為0 x擺c敖,如圖5所般示。絆x。昂圖5. B安ANKCO藹N2暫存器翱的位址半圖6. 搬ARM-9擺外接記憶體盎(或I/O敖)的讀寫時(shí)愛序俺8255白驅(qū)動(dòng)程式之笆建立艾在Linu矮x核心中,扒驅(qū)動(dòng)程式扮八演特殊的皚黑盒子角拔色,它們能艾駕馭硬體裝矮置,並且隱啊藏硬體的實(shí)佰際作業(yè)細(xì)節(jié)扳
5、,使硬體的藹回應(yīng)方式符凹合一組嚴(yán)謹(jǐn)叭規(guī)定的程式霸介面,讓應(yīng)艾用程式能透半過一套標(biāo)準(zhǔn)氨化的系統(tǒng)呼巴叫來間接操俺作硬體。以凹實(shí)際的硬體拔動(dòng)作來實(shí)現(xiàn)斑系統(tǒng)呼叫所版定義的功能挨,正是驅(qū)動(dòng)斑程式所扮演瓣的角色。由吧於系統(tǒng)呼叫邦這層軟體介百面的存在,扮使得驅(qū)動(dòng)程叭式與核心的礙其餘部分可盎以分開製作罷,並且在需跋要時(shí),才在頒執(zhí)行期將驅(qū)扳動(dòng)程式安唉插到核心敗裡。這種模哀組化的設(shè)計(jì),不僅降低翱了Linu班x驅(qū)動(dòng)程式板的設(shè)計(jì)難度板,也使得核埃心不必為了鞍支援新硬體把而頻頻改版邦。班u。靶裝置驅(qū)動(dòng)程板式大致分為澳區(qū)塊驅(qū)動(dòng)程絆式、字元驅(qū)哀動(dòng)程式及網(wǎng)凹路介面驅(qū)動(dòng)笆程式。區(qū)塊奧驅(qū)動(dòng)程式是頒以固定大小佰長度來傳送拌轉(zhuǎn)移資料
6、,辦且大致是可翱以隨機(jī)存取拔資料的設(shè)備哎,如硬碟機(jī)或光碟機(jī);扳字元裝置是背可被當(dāng)成一拌連串位元組襖(串流)來敖存取的裝置耙,也就是說骯這類裝置的跋存取方式就半像檔案一樣擺。字元裝置隘驅(qū)動(dòng)程式的襖主要任務(wù),鞍正是實(shí)現(xiàn)這吧種行為。這昂類驅(qū)動(dòng)程式把至少會(huì)實(shí)作背四項(xiàng)系統(tǒng)呼鞍叫,分別是斑open(霸)、clo按se()、翱read(案)和wri叭te()。隘我們所熟悉佰的操控臺(tái)與般序列埠(/骯dev/c皚onsol安e、/de巴v/tty矮S0般板),就是典翱型的字元裝版置,因?yàn)樗鼣兌伎身樌麏W化身成串罷流。字元翱裝置必須透吧過檔案系統(tǒng)白節(jié)點(diǎn)(fi凹lesys熬tem n般ode)來百存??;檔案礙系統(tǒng)節(jié)
7、點(diǎn)俗白稱為裝置檔挨(devi背ce fi礙le),例半如/dev柏/ttty拌S0、/d板e(cuò)v/co鞍nsole頒。字元裝置霸與一般正常扳檔案之間的啊最大差異,是一般檔案搬容許你任意暗改變存取點(diǎn)胺(檔案指標(biāo)皚),但字元啊裝置大部分皚都只是資料凹通道,只能隘被循序存取熬。靶e。疤1艾 懊模組程式的捌基本觀念擺一個(gè)驅(qū)動(dòng)程挨式必須被撰扳寫成模組的安型態(tài),才能跋夠具備供使按用者載入與拔移除的特性骯。因此一個(gè)靶驅(qū)動(dòng)程式必班然會(huì)具有載翱入模組函式氨與移除模組啊這兩個(gè)函式笆。故此兩個(gè)胺函式就分別頒載入驅(qū)動(dòng)程絆式與移除驅(qū)澳動(dòng)程式的角爸色。版w。伴應(yīng)用程式在扮啟動(dòng)之後,巴從頭到尾都芭只執(zhí)行同一愛件任務(wù)。另啊一方
8、面,模敖組在被載入盎核心之後,扒必須先向核哎心註冊(cè)它自澳己,以便服敗務(wù)未來的r叭eques盎t,而其拔”按main罷”愛函式這時(shí)候半就立即結(jié)束靶了。換言之扮,init皚_modu礙le( )佰 函式 (阿模組的入口版) 的任務(wù)盎,是將模組翱的功能 (胺函式) 準(zhǔn)耙備好,使這邦些功能可在伴事後被調(diào)用耙。模組的第版二個(gè)入口點(diǎn)頒是 cle般anup_叭modul隘e ( )巴,它在模組翱被卸載之前骯會(huì)被叫用一氨次,其作用藹就是告訴核拔心:我要拌離開了,別氨再叫我做任辦何事。圖奧7襖描繪模組如霸何利用函熬式呼叫與岸函式指標(biāo)氨,將新功襖能加到運(yùn)行稗中的核心。敗應(yīng)用程式則擺是在使用挨者空間(霸u(píng)ser 佰
9、space翱) 內(nèi)運(yùn)作罷。八每當(dāng)應(yīng)用程把式發(fā)出系統(tǒng)耙呼叫,或是盎發(fā)生硬體中辦斷時(shí),LI澳NUX便會(huì)拜將執(zhí)行模式絆從user拌-spac埃e切換到k澳ernel矮-spac背e。驅(qū)動(dòng)程霸式碼必須在般kerne扮l-spa稗ce內(nèi)運(yùn)作罷。靶e。骯圖案7 稗將模組連結(jié)拌至核心 昂2埃主標(biāo)號(hào)(M傲ajor 愛numbe鞍r)與次標(biāo)哀號(hào)(Min皚or nu阿mber)熬 拜d。辦當(dāng)使用者要矮存取字元裝瓣置時(shí),必須捌透過檔案系扮統(tǒng)裡的代表翱名稱吧,岸這些特殊檔按是集中在 笆/dev/翱目錄之下。澳使用指令擺b。盎ls-l 阿/dev絆得到如圖暗8佰的結(jié)果??砂靠闯鲈谌掌诎覚谥翱梢园拾l(fā)現(xiàn)兩個(gè)以班逗號(hào)隔開的
10、扮數(shù)值,在逗凹號(hào)左方的數(shù)頒值是該裝置矮檔的主編號(hào)(ma壩jor n翱umber拜),而逗號(hào)右方的數(shù)值奧是次編號(hào)耙(min翱or nu般mber)扮。主編號(hào)笆代表裝置襖所配合驅(qū)動(dòng)耙程式。當(dāng)核昂心收到op辦en( )斑系統(tǒng)呼叫時(shí)巴,就是依據(jù)霸主編號(hào)啊來選擇驅(qū)動(dòng)芭程式。另一霸方面,次胺編號(hào)的意疤義只有驅(qū)動(dòng)奧程式自己才按知道,核心疤會(huì)將使用者版給定的次編伴號(hào)轉(zhuǎn)交給驅(qū)版動(dòng)程式,核霸心本身用不般到次編號(hào)。背一般而言,隘驅(qū)動(dòng)程式以岸次編號(hào)來辨愛識(shí)同類裝置巴的個(gè)體。百8。辦圖白8胺隘主編號(hào)與次凹標(biāo)號(hào)把要增加一個(gè)笆新驅(qū)動(dòng)程式胺到系統(tǒng),等伴於指派一個(gè)挨主編號(hào)給它叭。這項(xiàng)指派疤應(yīng)該在驅(qū)動(dòng)芭程式(模組胺)的初使期叭,
11、藉由呼叫扳linu辦x/fs.芭h 所定斑義的reg罷ister板_chrd耙ev( )瓣函式來完成稗:翱H。艾int r阿egist芭er_chrdev(耙unsig扒ned i辦nt ma癌jor, 霸const疤 char巴 *nam艾e, 扮struc半t fil昂e_ope岸ratio拜n *fo拜ps);爸o。扳此函數(shù)的傳斑回值代表註疤冊(cè)動(dòng)作的成挨功與否。負(fù)矮值表示失敗扮,0或正值跋表示成功。叭major半引數(shù)是驅(qū)動(dòng)邦程式想要註凹冊(cè)的主標(biāo)號(hào)襖;name愛是裝置的名傲稱(如果註拌冊(cè)成功,這霸名稱將會(huì)出稗現(xiàn)在 /p瓣roc/d案evice罷s檔案的內(nèi)啊容裡);f耙ops是一胺個(gè)指標(biāo),指
12、哀向一個(gè)函拜式指標(biāo)陣列伴(arr懊ary o瓣f fun稗ction隘 poin瓣ters)盎,此陣列紀(jì)埃錄了驅(qū)動(dòng)程背式各個(gè)入口半點(diǎn)(作業(yè)方扮法)的位置哎。捌v。班在驅(qū)動(dòng)程式矮向核心完成盎了註冊(cè)之後伴,驅(qū)動(dòng)程式礙的各項(xiàng)作稗業(yè)方法(笆opera瓣tion)稗就與給定的扒主編號(hào)產(chǎn)生挨了關(guān)連性。懊每當(dāng)有人對(duì)骯字元裝置檔岸進(jìn)行某項(xiàng)操胺作時(shí),核心唉就能從該裝拌置檔的主編骯號(hào)找出對(duì)應(yīng)奧的驅(qū)動(dòng)程式俺,並透過其班file_吧opera八tions擺結(jié)構(gòu)來呼叫稗對(duì)應(yīng)的作業(yè)疤方法。下一凹個(gè)問題是如岸何給應(yīng)用程暗式一個(gè)名稱辦,讓它們能利用此名稱壩來啟動(dòng)驅(qū)動(dòng)扳程式。這個(gè)八名稱必須安背插在 /d傲ev/ 目百錄下,而且
13、俺必須關(guān)連到佰驅(qū)動(dòng)程式的搬主編號(hào)與次背編號(hào)。在檔啊案系統(tǒng)製作氨節(jié)點(diǎn)的命令版是mkno凹d,你必須敗有特權(quán)身分癌(root壩)才能使用熬此工具。m百knod至阿少需要四個(gè)參數(shù),例如按:斑V。拔mknod案 /dev皚/芭c8255唉_driver把 c 邦42案 0吧第一個(gè)引數(shù)百是節(jié)點(diǎn)名稱襖,其後的三翱個(gè)引數(shù)分別版是裝置類型襖(c代表c拔har d拜evice盎)、主編號(hào)隘、以及次編笆號(hào)。就像任跋何儲(chǔ)存在磁翱碟上的普通安檔案一樣,擺mknod矮所產(chǎn)生的裝霸置節(jié)點(diǎn)會(huì)被盎保存下來,懊除非刻意用襖rm命令刪拜除它們。氨我們?cè)隍?qū)動(dòng)百程式主程式盎中做以下定耙義及宣告:邦5。敗#defi邦ne鞍把CHDRV
14、般_MAJO骯R搬岸42柏char 拔CHDRV佰_NAME翱 = 稗擺c8255唉_driv艾er懊;芭B。愛而我們系統(tǒng)擺實(shí)作時(shí)的驅(qū)盎動(dòng)程式註冊(cè)矮的動(dòng)作是在拌一個(gè)扒init_阿modul跋e唉程式中實(shí)現(xiàn)唉:啊J。百int init_m辦odule俺(void癌)鞍if(re把giste癌r_chr熬dev(C礙HDRV_半MAJOR扒, CHD拜RV_NA半ME, &埃c8255吧_chdr藹v_fop跋s) 叭I。哀鞍鞍print凹k(ke拔rnel:暗 %s: 板Unabl扒e to半 regi般ster 班chara白cter 懊devic霸en,翱 CHDR白V_NAM案E);爸J。
15、哎把班retur胺n -EI阿O;靶骯哀爸.搬在模組被卸岸載之前,它凹必須先釋放巴主標(biāo)號(hào),而疤這個(gè)動(dòng)作可搬由unre吧giste八r_chr凹dev( 笆) 完成,斑我們?cè)谀=M癌的清理函式版裡呼叫它:罷H。唉void 巴clean拔up_mo案dule(班void)哎unreg傲ister擺_chrd靶ev(CH埃DRV_M愛AJOR,絆 CHDR跋V_NAM瓣E);吧V。頒print盎k(un骯loade阿d.n俺);半retur埃n;藹CHDR壩V_MAJ半OR拜引數(shù)是要被半釋放的主編伴號(hào),唉CHDRV白_NAME搬是當(dāng)初註冊(cè)啊的裝置名稱癌。這兩個(gè)引叭數(shù)必須與當(dāng)骯初呼叫registe捌r_
16、chr敗dev( 佰) 所用的霸引數(shù)一致,罷否則 un疤regis哎ter_c佰hrdev笆( ) 將絆傳回EI艾NVAL。擺V。啊2暗 笆檔案作業(yè)拔與file芭 結(jié)構(gòu)襖驅(qū)動(dòng)程式內(nèi)皚部以一個(gè)f芭ile結(jié)構(gòu)傲來代表一個(gè)把已開啟的裝埃置,核心透扳過一個(gè)fi挨le_op芭erati笆ons 結(jié)唉構(gòu)來存取驅(qū)佰動(dòng)程式內(nèi)部矮的作業(yè)函式柏(meth昂od)。這擺結(jié)構(gòu)定義在翱linu矮x/fs.邦h把。file把_oper扮ation埃s 結(jié)構(gòu)包襖括斑指向驅(qū)動(dòng)程阿式的絆各種系統(tǒng)呼愛叫,例如r笆ead, 案write瓣, ope敗n, re敗lease傲.按。操作檔案頒結(jié)構(gòu)骯的各種系統(tǒng)八呼叫,其實(shí)骯際動(dòng)作就是挨
17、靠驅(qū)動(dòng)程式板內(nèi)部的作業(yè)稗系統(tǒng)來達(dá)成巴的。靶file_奧opera跋tions版 結(jié)構(gòu)宣告斑範(fàn)例如下:懊t。埃stati班c str頒uct f扳ile_o岸perat扒ions 絆c8255把_chdr扳v_fop百s = 擺T。唉 按 NUL愛L, 爸 /*ls拔eek*/傲白read:阿 c825岸5_chd巴ev_re八ad, /跋* rea艾d */愛M。扮叭write半: c82辦55_ch翱dev_w傲rite,瓣 /* w凹rite 扒*/頒j。案版 挨N按ULL, 懊 /*笆 read艾dir *伴/拔 版 NUL斑L, 辦 /* P挨OLL *半/ 巴 版 NUL暗L, /澳
18、* ioc邦tl */氨 艾 NUL白L, /芭* mma般p */愛 o壩pen: 哀c8255奧_chde懊v_ope伴n, /*瓣 open啊 */藹k。凹 擺 NUL霸L, 瓣/* FL凹USH *胺/邦辦relea稗se: c耙8255_哎chdev芭_(tái)rele霸ase, 哀/* re邦lease白 */扒V。懊 罷 NUL翱L, /唉* fsy矮nc */矮 按 NUL昂L, /骯* fas啊ync *安/骯 絆 NUL笆L, /板* loc邦k */班 哎 NUL俺L, /跋* rea把dv */靶 扒 NUL礙L, /哀* wri八tev *疤/絆 礙 NULL翱, /*哎 s
19、end拜 page吧 */盎 瓣 NUL藹L, /板* get笆 unma暗pped 啊area 胺*/ 芭 ;凹習(xí)慣上,我把們以變數(shù)名靶稱扳(例如埃c8255熬_chdr澳v_fop佰s)懊來表示fi艾le_op芭erati艾ons結(jié)構(gòu)藹。在fil擺e_ope皚ratio挨ns結(jié)構(gòu)中絆每一個(gè)欄位俺,都必須指傲向驅(qū)動(dòng)程式阿中負(fù)責(zé)特定邦作業(yè)方法,板對(duì)於驅(qū)動(dòng)程暗式不巴需要吧的作業(yè)項(xiàng)目耙,其對(duì)應(yīng)欄辦位吧需案指向NUL八L。我們?cè)诎写宋闹兴拱玫降淖鳂I(yè)拌方法包括有八read(埃 )、wr芭ite( 礙)、ope白n( )及拔relea藹se( )百,在此做一敖個(gè)簡單的介皚紹。傲h。捌open(柏 )
20、岸 哎範(fàn)例耙如下:癌int c佰8255_盎chdev擺_open柏( str翱uct i按node 艾*inod稗e, st傲ruct 叭file 伴*file阿 )邦0。澳佰print拜k(c8奧255_o昂penn敖);靶跋MOD_I哎NC_US巴E_COU癌NT;罷邦retur白n 0;敖 這是裝鞍置操作的第一步,一般白會(huì)在此函數(shù)佰中進(jìn)行必要耙的初始化準(zhǔn)搬備工作及遞哀增目標(biāo)裝置哀的用量計(jì)扒次,以八避矮免模組在檔絆案關(guān)閉之前敖被卸載。吧G。按2. re叭lease皚( )柏 霸範(fàn)例敗如下:敗int c扒8255_搬chdev佰_rele伴ase( 盎struc絆t ino奧de *i熬n
21、ode,按 stru疤ct fi案le *f鞍ile )埃J。按搬MOD_D靶EC_US佰E_COU阿NT;哎埃print搬k(re吧lease胺n)埃;骯 鞍 re伴turn 芭0;笆relea版se 作業(yè)方法的用途百與open扒相反。主要藹包括遞減用爸量次數(shù)、再癌最後一次關(guān)胺閉時(shí),將目跋標(biāo)裝置關(guān)機(jī)爸、釋放op礙en配置給捌filp-奧priv捌ate_d跋ata的任拌何東西。半E。哎3. re阿ad( )盎 芭範(fàn)例如下:版stati岸c ssi唉ze_t 凹c8255礙_chde啊v_rea襖d(str霸u(píng)ct f安ile *芭filp,班 char叭 *buf暗, siz襖e_t c八o
22、unt,邦loff_捌t *of板fset)拌L。矮unsig笆ned i啊nt ix唉;芭buffe半r2 = 隘kmall挨oc(1,皚GFP_K阿ERNEL礙);熬a。扒哀if(ve傲rify_稗area(半VERIF澳Y_WRI啊TE,bu佰f,count)=版-EFAU案LT)版N。哀扒retur澳n -EF罷AULT;辦 捌隘print澳k(c8八255_r頒ead柏n);八/* -敖凹-read啊 data版 from骯 8255安 PORT案 A吧搬皚擺 翱*/哎9。埃io_ba瓣se=io罷remap皚_noca盎che(P耙ORTA,盎 LENG懊TH);阿q。扒 罷 *(
23、b氨uffer襖2辦)=rea白db(io瓣_base扒);霸 伴 co啊py_to耙_user扳(buf,凹buffe襖r,ix)岸;霸耙kfree斑(buff鞍er捌2懊);巴藹retur癌n ix;柏 哎驅(qū)動(dòng)程式用埃此指令擷取懊出裝置上的罷資料,並將捌擷取到的資斑料百透過翱copy_巴to_us扳er般指令?yuàn)W傳遞給應(yīng)用艾程式。如果捌copy_壩to_us伴er背執(zhí)行成功則懊傳回一個(gè)非奧負(fù)數(shù)值,代襖表成功讀取百的位元組個(gè)阿數(shù)。各個(gè)引絆數(shù)的意義如佰下: fi翱lp 是檔罷案指標(biāo);c阿ount 拌是要被傳輸拔的資料量;矮buf引數(shù)隘指向use按r-spa凹ce 的緩矮衝區(qū)對(duì)於r案ead,它熬是
24、一塊空白頒記憶區(qū),用般於存放裝置鞍讀出的資料奧。白d。版4. wr吧ite( 佰)稗 岸範(fàn)例如下:隘stati拔c ssi熬ze_t 傲c8255半_chde背v_wri扳te(st敗ruct 辦file 板*filp稗,const cha案r *bu板f,siz癌e_t c礙ount,伴 loff按_t *o藹ffset愛)拔G。骯 un佰signe鞍d int俺 iy=0鞍;罷 un藹signe阿d cha邦r dat瓣ax;爸 瓣buffe隘r1 = 阿kmall案oc(1,哎GFP_K挨ERNEL捌);百y。案 叭 班print柏k(c8班255_w奧rite.八.n)芭;半 io辦_
25、base翱=iore白map_n辦ocach敖e(POR敖TA,LE凹NGTH)百;俺D。襖 cop唉y_fro盎m_use愛r(buf般fer1,艾buf,c俺ount)把;吧G。扒 da拜tax=*絆(buff笆er1白)拌;壩扳print半k(c8叭255_w懊rite.稗.%dn霸,iy)藹;百q。敖 八 wri凹teb(d案atax,斑 io_b骯ase+1佰);敖 爸 骯懊kfree昂(buff爸er1);皚芭暗retur柏n iy;皚將資料寫入版裝置若發(fā)生愛錯(cuò)誤,則觸啊發(fā) wri疤te( )版 系統(tǒng)呼叫擺的行程會(huì)收埃到-EIN翱VAL。如笆果成功,w傲rite將把傳回一個(gè)非班負(fù)值
26、,代表跋成功寫出的澳位元數(shù)。我吧們?cè)趯?shí)作w耙rite函挨式裡利用扳copy_罷from_扮user跋函式把使用敗者空間把之百前所錄的資把料傳送至核靶心空間傲。壩r。吧3辦 扳在應(yīng)用程式岸開啟驅(qū)動(dòng)程愛式的功能扮完成了驅(qū)動(dòng)愛程式的撰寫拌之後,接下般來要寫一個(gè)笆應(yīng)用程式來哀作測試。霸程式裡首先板要使用系統(tǒng)哎呼叫對(duì)裝置昂做開啟的動(dòng)百作,藉由 柏open 奧系統(tǒng)呼叫來鞍呼叫驅(qū)動(dòng)程拔式裡的 o埃pen 函阿式,便會(huì)執(zhí)安行驅(qū)動(dòng)程式笆裡相對(duì)應(yīng)的板動(dòng)作:邦n。哎疤int 瓣fd1,i懊;啊翱unsig擺ned c叭har d扮atabu疤f10把;跋拔fd1 =哎 open跋(C825八5, O_藹RDWR)皚
27、;耙隘if (f絆d1=-翱1) 稗瓣澳print霸f(c8啊255 d安river骯 open絆 erro安rn)礙;埃a。邦辦疤exit(耙0);百使用 re骯ad 系統(tǒng)百呼叫將10百字元從核心白空間傳送至叭使用者空間傲:愛p。按絆 阿read(唉fd1,d昂atabu辦f,10)俺;襖 扮 fo搬r (i=百0;i1安0;i+笆)霸 背 p叭rintf昂(825皚5 por辦t A d哀ata=%扒xn,爸datab俺ufi罷);般s。傲 哀 盎跋資料傳送到哎使用者空間敗後,接下來瓣我們可以做巴需要的應(yīng)用襖,例如傳送鞍至網(wǎng)路上或柏做聲音的處背理礙.等啊。使用澳 writ佰e 系統(tǒng)呼伴叫來
28、將捌將1字元岸傳送至核心拌空間:愛9。敖 壩 writ安e(fd1阿,data暗buf,1拜);辦執(zhí)行壩應(yīng)用程式之唉後便可驗(yàn)證疤驅(qū)動(dòng)程式的半功能奧。凹完整應(yīng)用程澳式範(fàn)例如下伴:耙1。柏/*拜*翱*吧*吧*按*霸*頒*辦*礙*伴*/俺n。胺/* 按 按 壩 使奧用者程式 唉 吧 跋 按 拔*/拜i。柏/*耙*稗*藹*艾*挨*佰*霸*巴*哀*般*/熬k。叭#incl霸u(píng)de 按#incl擺ude 皚#incl扮ude 罷#incl捌ude 耙#incl背ude 哀#incl拜ude 按#incl芭ude 跋#defi板ne C8白255 傲/dev/扮c8255艾_driv瓣er壩R。耙int m骯ai
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西衛(wèi)生健康職業(yè)學(xué)院《金融風(fēng)險(xiǎn)分析師(FRM)專題(雙語)》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江金融職業(yè)學(xué)院《供變電系統(tǒng)項(xiàng)目設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廈門工學(xué)院《計(jì)算機(jī)在林業(yè)中的應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南鐵道職業(yè)技術(shù)學(xué)院《生物化學(xué)實(shí)驗(yàn)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 華北理工大學(xué)輕工學(xué)院《科研寫作》2023-2024學(xué)年第二學(xué)期期末試卷
- 齊魯醫(yī)藥學(xué)院《中外文化比較專題》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶對(duì)外經(jīng)貿(mào)學(xué)院《包裝材料及應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 醫(yī)院科室年度工作總結(jié)
- 母親六十歲生日宴會(huì)主持詞(7篇)
- 公司前臺(tái)的工作總結(jié)
- 2024-2025學(xué)年高中物理第十二章機(jī)械波4波的衍射和干涉課時(shí)作業(yè)含解析新人教版選修3-4
- 2025年新華師大版數(shù)學(xué)七年級(jí)下冊(cè)全冊(cè)導(dǎo)學(xué)案
- 《供熱工程》課件
- 倉管員業(yè)務(wù)技能培訓(xùn)
- 安全管理人員七大職責(zé)
- 《國民經(jīng)濟(jì)行業(yè)分類與代碼》
- 音樂教育國際化進(jìn)程-洞察分析
- 植入式靜脈給藥裝置護(hù)理技術(shù)課件
- 單兵綜合演練
- 疼痛中醫(yī)護(hù)理
- 歐式風(fēng)格的室內(nèi)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論