微波EDA网,见证研发工程师的成长! 2025婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘﹢寮婚悢铏圭<闁靛繒濮甸悘宥夋⒑缁嬪潡顎楁い锔诲灦閳ワ箓宕稿Δ浣告疂闂傚倸鐗婄粙鎴︼綖瀹€鈧槐鎾存媴閸濆嫮褰欓梺鎼炲劀閸滀礁鏅i梻浣筋嚙鐎涒晝绮欓幒鏇熸噷闂佽绻愬ù姘跺储婵傚憡绠掓繝鐢靛Т閿曘倝骞婃惔銏㈩洸闁诡垼鐏旀惔銊ョ倞鐟滄繈鐓鈧埞鎴﹀灳瀹曞洤鐓熼悗瑙勬礈閸犳牠銆佸鈧幃娆忣啅椤旈敮鍋撻幘顔解拻闁稿本鐟чˇ锕傛煙鐠囇呯瘈闁诡喚鍏樻俊鐤槼鐎规洖寮堕幈銊ヮ渻鐠囪弓澹曢柣搴㈩問閸犳牠鈥﹂悜钘夋瀬闁归偊鍘肩欢鐐测攽閻樻彃顏撮柛姘嚇濮婄粯鎷呴悷閭﹀殝缂備浇顕ч崐姝岀亱濡炪倖鎸鹃崐锝呪槈閵忕姷顦板銈嗘尵婵兘鏁嶅⿰鍫熲拺缂備焦锚婵箓鏌涢幘瀵告噰鐎规洘绻堟俊鍫曞幢濞嗘埈鍟庣紓浣鸿檸閸欏啴藟閹捐泛濮柍褜鍓熼幃妤€鈻撻崹顔界亪濡炪値鍘鹃崗姗€鐛崘顔碱潊闁靛牆鎳庣粣娑欑節閻㈤潧孝閻庢凹鍠涢崐鎾⒒閸屾艾鈧绮堟笟鈧獮澶愭晸閻樿尙顔囬梺绯曞墲缁嬫垵顔忓┑鍥ヤ簻闁哄啫鍊婚幗鍌炴煕閻旈攱鍣界紒杈ㄦ崌瀹曟帒顫濋钘変壕闁归棿绀佺壕褰掓煟閹达絽袚闁搞倕瀚伴弻銈夊箹娴h閿梺鎼炲妽濮婂綊濡甸崟顖氱闁告鍋熸禒濂告⒑閹肩偛濡奸柛濠傛健瀵鈽夐姀鈺傛櫇闂佹寧绻傚Λ娑⑺囬妷鈺傗拺闁芥ê顦弳鐔兼煕閻樺磭澧电€殿喖顭峰鎾偄閾忚鍟庨梻浣虹帛閸旓箓宕滃鑸靛仧闁哄洢鍨洪埛鎴犵磼鐎n偒鍎ラ柛搴$箲娣囧﹪顢曢敐鍥╃杽閻庢鍠涢褔鍩ユ径濠庢僵妞ゆ劧绲芥刊浼存⒒娴e憡鍟為柟绋挎閸┾偓妞ゆ巻鍋撻崡閬嶆煕椤愶絿绠ユ繛鎾愁煼閺屾洟宕煎┑鍥ф畻闂佺粯绋掔划鎾诲蓟閻旂厧绀勯柕鍫濇椤忥拷04闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劌銈搁弻鐔兼儌閸濄儳袦闂佸搫鐭夌紞渚€銆佸鈧幃娆撳箹椤撶噥妫ч梻鍌欑窔濞佳兾涘▎鎴炴殰闁圭儤顨愮紞鏍ㄧ節闂堟侗鍎愰柡鍛叀閺屾稑鈽夐崡鐐差潻濡炪們鍎查懝楣冨煘閹寸偛绠犻梺绋匡攻椤ㄥ棝骞堥妸鈺傚€婚柦妯侯槺閿涙盯姊虹紒妯哄闁稿簺鍊濆畷鎴犫偓锝庡枟閻撶喐淇婇婵嗗惞婵犫偓娴犲鐓冪憸婊堝礂濞戞碍顐芥慨姗嗗墻閸ゆ洟鏌熺紒銏犳灈妞ゎ偄鎳橀弻宥夊煛娴e憡娈查梺缁樼箖濞茬喎顫忕紒妯诲闁芥ê锛嶉幘缁樼叆婵﹩鍘规禍婊堟煥閺冨浂鍤欓柡瀣ㄥ€楃槐鎺撴綇閵婏富妫冮悗娈垮枟閹歌櫕鎱ㄩ埀顒勬煃闁款垰浜鹃梺褰掝棑缁垳鎹㈠☉娆愮秶闁告挆鍛呮艾鈹戦悙鍙夊珔缂佹彃娼″顐︻敊鐏忔牗顫嶉梺闈涢獜缁辨洟宕㈤柆宥嗏拺闁告繂瀚弳濠囨煕鐎n偅灏扮紒缁樼洴閹崇娀顢楅埀顒勫几濞戙垺鐓熸繛鎴濆船濞呭秶鈧鍠曠划娆撱€佸Ο娆炬Ъ闂佸搫鎳忕换鍫濐潖濞差亝顥堟繛鎴炶壘椤e搫鈹戦悙棰濆殝缂佽尪娉曢崚鎺楊敇閻旈绐炴繝鐢靛Т鐎涒晝鈧潧鐭傚娲濞戞艾顣哄┑鈽嗗亝缁嬫帡寮查崼鏇熺劶鐎广儱妫涢崢閬嶆煟鎼搭垳绉甸柛鎾寸懄缁傛帡鏌嗗鍡欏幍濡炪倖娲栧Λ娑氬姬閳ь剚绻濈喊澶岀?闁稿繑锕㈠畷娲晸閻樿尙锛滃┑鐘诧工閸燁偆绮诲ú顏呪拻闁稿本鐟чˇ锕傛煙绾板崬浜滈悡銈夋煏婵炵偓娅呯痪鍓х帛缁绘盯骞嬪▎蹇曚患闂佺粯甯掗悘姘跺Φ閸曨垰绠抽柛鈩冦仦婢规洘绻濋悽闈浶涢柛瀣崌濮婃椽顢楅埀顒傜矓閹绢喗鍊块柛顭戝亖娴滄粓鏌熼崫鍕ラ柛蹇撶焸閺屾盯鎮㈤崫銉ュ绩闂佸搫鐬奸崰鏍х暦濞嗘挸围闁糕剝顨忔导锟�23闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劌銈搁弻鐔兼儌閸濄儳袦闂佸搫鐭夌紞渚€銆佸鈧幃娆撳箹椤撶噥妫ч梻鍌欑窔濞佳兾涘▎鎴炴殰闁圭儤顨愮紞鏍ㄧ節闂堟侗鍎愰柡鍛叀閺屾稑鈽夐崡鐐差潻濡炪們鍎查懝楣冨煘閹寸偛绠犻梺绋匡攻椤ㄥ棝骞堥妸鈺傚€婚柦妯侯槺閿涙盯姊虹紒妯哄闁稿簺鍊濆畷鎴犫偓锝庡枟閻撶喐淇婇婵嗗惞婵犫偓娴犲鐓冪憸婊堝礂濞戞碍顐芥慨姗嗗墻閸ゆ洟鏌熺紒銏犳灈妞ゎ偄鎳橀弻宥夊煛娴e憡娈查梺缁樼箖閻楃姴顫忕紒妯肩懝闁逞屽墴閸┾偓妞ゆ帒鍊告禒婊堟煠濞茶鐏¢柡鍛埣楠炲秹顢欓崜褝绱叉俊鐐€栧ú鏍涘☉銏犵濞寸厧鐡ㄩ幊姘舵煛瀹ュ海浜圭憸鐗堝笚閺呮煡鏌涢銈呮珡濞寸姭鏅涢—鍐Χ閸℃ǚ鎷瑰┑鐐跺皺閸犲酣锝炶箛鎾佹椽顢旈崨顓濈敾闂備浇顫夐鏍窗濡ゅ懎绠熷┑鍌氭啞閳锋垿鏌ゆ慨鎰偓鏇㈠几閸岀偞鐓曢幖杈剧稻閺嗩剚顨ラ悙鎻掓殭妞ゎ偅绮撻崺鈧い鎺戝閺勩儵鏌ㄩ悢鍝勑㈢紒鈧崘鈹夸簻闊洦鎸婚敍鏃傜磼鏉堛劎鍙€婵﹦绮幏鍛存惞閻熸壆顐奸梻浣藉吹閸犲棝宕归挊澶屾殾闁硅揪绠戠粻鑽ょ磽娴h疮缂氶柛姗€浜跺娲濞淬劌缍婂畷鏇㈠箮閽樺妲梺鎸庣箓濞茬娀宕戦幘鏂ユ灁闁割煈鍠楅悘鍫濐渻閵堝骸寮柡鈧潏銊р攳濠电姴娲ょ粻鐟懊归敐鍛喐闁告ɑ鎮傚铏圭矙閹稿孩鎷遍梺娲诲弾閸犳岸鎳炴潏銊ь浄閻庯綆鍋€閹风粯绻涙潏鍓у埌闁硅櫕鐟ㄩ妵鎰板箳閹存繄褰夋俊鐐€栫敮鎺楀磹婵犳碍鍎楁繛鍡樻尰閻撴瑩寮堕崼鐔峰姢闁伙附绮撻弻鈩冩媴缁嬪簱鍋撻崸妤€钃熼柕濞炬櫆閸嬪棝鏌涚仦鍓р槈妞ゅ骏鎷� 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劌銈搁弻鐔兼儌閸濄儳袦闂佸搫鐭夌紞渚€銆佸鈧幃娆撳箹椤撶噥妫ч梻鍌欑窔濞佳兾涘▎鎴炴殰闁圭儤顨愮紞鏍ㄧ節闂堟侗鍎愰柡鍛叀閺屾稑鈽夐崡鐐差潻濡炪們鍎查懝楣冨煘閹寸偛绠犻梺绋匡攻椤ㄥ棝骞堥妸鈺傚€婚柦妯侯槺閿涙盯姊虹紒妯哄闁稿簺鍊濆畷鎴犫偓锝庡枟閻撶喐淇婇婵嗗惞婵犫偓娴犲鐓冪憸婊堝礂濞戞碍顐芥慨姗嗗墻閸ゆ洟鏌熺紒銏犳灈妞ゎ偄鎳橀弻锝呂熼懡銈呯仼闂佹悶鍎崝搴ㄥ储闁秵鐓熼煫鍥ㄦ礀娴犳粌顭胯缁瑩骞冮敓鐙€鏁嶆慨妯垮亹閸炵敻鏌i悢鍝ユ噧閻庢凹鍘剧划鍫ュ焵椤掑嫭鈷戦悗鍦濞兼劙鏌涢妸銉﹀仴闁靛棔绀侀埢搴ㄥ箣閻樼绱查梻浣筋潐閸庤櫕鏅舵惔锝囩幓婵°倕鎳忛埛鎺懨归敐鍛暈闁哥喓鍋為妵鍕敇閻愭惌妫﹂悗瑙勬礃閿曘垽寮幇鏉垮耿婵炲棗鑻禍鐐箾瀹割喕绨奸柛濠傜仛椤ㄣ儵鎮欓懠顑胯檸闂佸憡姊圭喊宥囨崲濞戙垺鍤戞い鎺嗗亾闁宠鐗忛埀顒冾潐濞叉﹢宕归崸妤冨祦婵せ鍋撻柟铏矒濡啫鈽夊▎鎴斿亾椤撱垺鈷掑ù锝呮啞閸熺偞绻涚拠褏鐣电€规洘绮岄埥澶愬閳╁啯鐝繝鐢靛仦閸垶宕瑰ú顏勭厱闁硅揪闄勯悡鏇熺箾閹寸們姘舵儑鐎n偆绠鹃柛顐ゅ枑缁€鈧梺瀹狀潐閸ㄥ潡骞冨▎鎴炲珰鐟滄垿宕ラ锔解拺閻犲洠鈧櫕鐏嗛梺鍛婎殕婵炲﹪濡存担鍓叉僵閻犻缚娅i崝锕€顪冮妶鍡楀潑闁稿鎹囬弻锝夋晲閸パ冨箣閻庤娲栭妶绋款嚕閹绢喖惟闁挎棁濮ら悵婊勭節閻㈤潧袨闁搞劎鍘ч埢鏂库槈閵忊晜鏅為梺绯曞墲閵囨盯寮稿澶嬪€堕柣鎰礋閹烘缁╁ù鐘差儐閻撶喐淇婇婵囶仩濞寸姵鐩弻锟犲幢韫囨梹鐝旈梺瀹狀潐閸ㄥ潡銆佸▎鎾村殟闁靛鍎遍弨顓熶繆閵堝洤啸闁稿鐩弫鍐Ψ閵夘喖娈梺鍛婃处閸ㄦ壆绮诲☉娆嶄簻闁圭儤鍨垫禍鎵磼闁秳鎲炬慨濠勭帛閹峰懐绮电€n偆绉烽柣搴ゎ潐濞叉﹢鏁冮姀銈冣偓浣割潩閹颁焦鈻岄梻浣告惈鐞氼偊宕濋幋鐐扮箚闁割偅娲栭獮銏ゆ煛閸モ晛啸闁伙綁绠栧缁樼瑹閳ь剙岣胯閹囧幢濞嗗苯浜炬慨妯煎帶閻忥妇鈧娲橀〃鍛存偩濠靛绀嬫い鎺戝€搁獮鍫熺節閻㈤潧浠滄俊顐n殘閹广垽骞嬩綅婢舵劕顫呴柍鈺佸暙瀵寧绻濋悽闈浶㈤柟鍐茬箻椤㈡棃鎮╅悽鐢碉紲闁哄鐗勯崝宀€绮幒妤佹嚉闁挎繂顦伴悡鐘测攽椤旇棄濮囬柍褜鍏欓崐鏇炲祫濡炪倖甯掔€氼參鍩涢幒鎳ㄥ綊鏁愰崨顔兼畼閻熸粎澧楃敮妤呭疾濠靛鐓忛柛顐g箖鐎氬懘鏌ら弶鎸庡仴婵﹥妞介、妤呭焵椤掑倻鐭撻柟缁㈠枟閸婂潡鏌涢…鎴濅簴濞存粍绮撻弻鐔煎传閸曨厜銉╂煕韫囨挾鐒搁柡灞剧洴閹垽宕妷銉ョ哗闂備礁鎼惉濂稿窗閺嵮呮殾婵炲棙鎸稿洿闂佺硶鍓濋〃蹇斿閿燂拷濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮诲☉妯锋婵鐗婇弫楣冩⒑閸涘﹦鎳冪紒缁橈耿瀵鏁愭径濠勵吅闂佹寧绻傚Λ顓炍涢崟顖涒拺闁告繂瀚烽崕搴g磼閼搁潧鍝虹€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝棎浜滄い鎾跺Т閸樺鈧鍠栭…鐑藉极閹邦厼绶炲┑鐘插閺夊憡淇婇悙顏勨偓鏍暜婵犲洦鍊块柨鏇炲€哥壕鍧楁煙閸撗呭笡闁抽攱鍨块弻鐔兼嚃閳轰椒绮舵繝纰樷偓鐐藉仮闁哄本绋掔换婵嬪磼濞戞ü娣柣搴㈩問閸犳盯顢氳閸┿儲寰勯幇顒夋綂闂佸啿鎼崐鐟扳枍閸ヮ剚鈷掑ù锝囨嚀椤曟粎绱掔拠鎻掆偓姝岀亱濠电偞鍨熼幊鐐哄炊椤掆偓鍞悷婊冪箳婢规洟鎸婃竟婵嗙秺閺佹劙宕ㄩ钘夊壍闂傚倸顦鍛粹€旈崘顔嘉ч幖绮光偓鑼泿婵$偑鍊х粻鎴︽倶濮橆厾鈹嶅┑鐘叉处閸嬨劎绱掔€n厽纭舵い锔芥緲椤啴濡堕崱娆忣潷濠殿喗菧閸旀垿骞冮崸妤€鐒垫い鎺戝閳锋帒霉閿濆懏鍟為柛鐔哄仱閺岀喖宕妷銉ュ箣闂佺娅曢〃濠傜暦婵傜ǹ鍗抽柣鎰棎缁躲垽姊绘担铏瑰笡瀹€锝呮健瀵偊宕妷銉闂佽姤锚椤ャ垼銇愰幒鎾存珳闂佸憡渚楅崰妤呭磿閹炬剚娓婚柕鍫濇嚇椤庢鏌i鐐测偓鍨嚕鐠囨祴妲堥柕蹇曞閳哄懏鐓忓璇″灠閸熶即宕㈡禒瀣厽閹兼番鍩勯崯蹇涙煕閻樺磭澧甸柍銉畵閺屻劎鈧絺鏅濈粻姘舵⒑瑜版帗锛熺紒鈧笟鈧幃鈥斥槈閵忥紕鍘遍柣蹇曞仜婢т粙鎮¢婊呯<闁靛ǹ鍊楅惌娆愭叏婵犲嫮甯涢柟宄版嚇瀹曘劑妫冨☉姘毙ㄩ悗娈垮枤閺佸銆佸Δ鍛<婵犲﹤鎳愰崢顖炴⒒娴d警鏀伴柟娲讳簽閳ь剟娼ч惌鍌氼嚕椤愶箑纾奸柣鎰嚟閸欏棝姊虹紒妯荤闁稿﹤婀遍埀顒佺啲閹凤拷
首页 > 硬件设计 > 嵌入式设计 > Linux操作系统下的PCI驱动开发

Linux操作系统下的PCI驱动开发

时间:08-21 来源:电子元器件应用 点击:

引言

  PCI总线是一种成熟的计算机标准总线,而Linux操作系统则是一种源代码公开的操作系统。Linux构架完全沿袭了UNIX的系统架构,它不但拥有UNIX的全部功能,而且具有UNIX稳定、可靠、安全的优点,尤其是Linux加入GNU并遵循公共版权许可证(GPL)之后,几乎所有的GNU软件都可以移植到Linux,从而完善和提高了Linux系统的使用性,并逐步成为通信、工业控制、消费电子等领域的主流操作系统。

  本文主要对Linux环境下开发PCI9054芯片驱动的具体方法进行描述,并给出了如何将驱动程序编译进内核,以使驱动模块静态加载的方法。

  1 PCI9054简介

  PCI总线协议一般需要繁琐的逻辑验证和时序分析工作,而且开发周期较长,因此,更多的做法是采用通用PCI接口芯片,这样,只需要控制接口芯片的几根控制线,就可以完成PCI总线的数据传输,故可大大减少开发时间和成本。

  PCI9054是由美国PLX公司生产的PCI桥接芯片,该芯片采用先进的PLX流水线结构技术,符合PCI本地总线规范2.2版,并配有可选的串行EEPROM接口。芯片的本地总线时钟可与PCI时钟异步,其内部有6种可编程FIFO,可以实现零等待突发传输及本地总线与PCI总线的异步操作,同时支持主模式、从模式、DMA传输模式,可广泛用于嵌入式系统中。

  PCI9054的地址资源是由其基址寄存器来设置的,PCI9054的配置空间有六个基址寄存器:BARO~BAR5,其中BARO映射到配置空间的基地址,BARl为映射到I/O空间的基地址,BAR2~BAR5可以定义为映射到内存地址空间的基地址。配置空间的内容可被Linux核心中的PCI初始化代码使用,I/O空间和内存地址空间可提供给设备驱动程序使用。

  2 Linux下的PCI驱动程序

  Linux将所有外部设备看成是一类特殊文件,即"设备文件",它可分为两大类:字符设备和块设备。字符设备是必须以串行顺序依次进行访问的设备,如触摸屏、磁带驱动器、鼠标等。块设备则是利用一块系统内存作为缓冲区,以块为单位进行操作,如硬盘、软驱等。字符设备不经过系统的快速缓冲,而块设备则需经过系统的快速缓冲。此外,Linux下还存在一类外设,即"网络设备",网络设备主要针对数据包的接收和发送而设计,它并不对应于文件系统的节点。PCI驱动通常可以看做字符设备的驱动来设计。

  Linux的操作过程分为两个步骤:首先用PCI驱动将内核与设备挂接起来;紧接着通过应用程序来根据设备文件所属类型并通过驱动提供的接口函数来操作设备。这使得PCI驱动至少应该包含两部分内容:一是PCI设备驱动,二是具体设备本身的驱动。

  Linux系统启动后会自动检测PCI设备信息,并分别记录在pci_dev结构体中形成一个PCI设备链表pci_devices。这个结构体记录了PCI设备几乎所有的硬件信息,包括厂商ID、设备ID、各种资源等,PCI驱动就是根据厂商ID和设备ID来连接设备并加载驱动的。

  驱动加载以后,为了操作设备文件,Linux会在include/linux/fs.h中提供一个数据结构file_operaTIons,该数据结构可向Linux文件系统注册一组文件操作,以定义设备提供的诸如open、close、read、write等操作,内核则将通过file_operations结构访问驱动程序所提供的函数。

  3 PCI9054驱动的实现

  Linux下设备驱动程序的编写应遵循一定的框架结构进行,大致可分为模块的加载与卸载、设备的初始化、设备的打开及操作、中断处理和设备的释放等几部分。

  3.1 模块的加载与初始化

  当Linux内核启动时,会完成对所有PCI设备的扫描、登录和资源分配等初始化操作,并建立起所有PCI设备的拓扑结构,此后,在加载PCI驱动程序时,就会通过加载驱动程序模块入口跳转到设备初始化模块。Linux2.4内核与Linux2.6内核的初始化方式是不同的,在Linux-2.4内核中,初始化程序首先会使用pci_present函数来判断PCI总线是否被内核支持,然后使用register_chrdev函数来注册设备,这样就可以轮询PCI总线上的设备,并利用pci_find_device函数检查设备是否插在总线插槽上。如果在,则保存其所占用的插槽位置信息,并返回pci_dev结构,然后将pci_dev结构加入到设备链表中,直到轮询完毕。图1所示是Linux下PCI驱动程序的流程图。
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劌銈搁弻鐔兼儌閸濄儳袦闂佸搫鐭夌紞渚€銆佸鈧幃娆撳箹椤撶噥妫ч梻鍌欑窔濞佳兾涘▎鎴炴殰闁圭儤顨愮紞鏍ㄧ節闂堟侗鍎愰柡鍛叀閺屾稑鈽夐崡鐐差潻濡炪們鍎查懝楣冨煘閹寸偛绠犻梺绋匡攻椤ㄥ棝骞堥妸鈺傚€婚柦妯侯槺閿涙稑鈹戦悙鏉戠亶闁瑰磭鍋ゅ畷鍫曨敆娴i晲缂撶紓鍌欑椤戝懘鎮樺┑瀣€垫い鎾跺枍缁诲棝鏌曢崼婵堢闁告帊鍗抽弻娑㈡偆娴i晲绨界紓渚囧枦椤曆囧煡婢跺á鐔荤疀閹惧墎楔闂佽桨鐒﹂崝娆忕暦閵娾晩鏁婇悹渚厛閺€銊х磽閸屾艾鈧绮堟笟鈧、鏍礋椤栨稑娈戦梺鍛婃尫閻掞箓锝為弴銏$厵闁硅鍔﹂崵娆戠棯閹冩倯闁逛究鍔岄~婊堝幢濡も偓楠炲姊虹粙娆惧剱闁圭懓娲獮鍐ㄢ堪閸喎娈熼梺闈涱槶閸庮噣宕戦幘璇查敜婵°倓鑳堕崣鍡涙⒑閸濆嫭澶勬慨妯稿姂瀹曟繂顓兼径瀣幍闂佸憡鍔樼亸娆撴倿閸涘﹥鍙忓┑鐘插鐢盯鏌熷畡鐗堝殗鐎规洏鍔嶇换婵嬪磼濞戞瑧鏆梻鍌氬€峰ù鍥х暦閻㈢ǹ绐楅柛鈩冪☉绾惧潡鏌熼幆鐗堫棄缂佺姵鐓¢弻鏇$疀閺囩儐鈧本绻涚粭鍝勫闁哄苯绉烽¨渚€鏌涢幘瀵告噰妞ゃ垺宀搁弫鎰板幢濞嗘垹妲囨繝娈垮枟閿曗晠宕㈤崗鑲╊洸婵犲﹤鎳愮壕濂告煟閹伴潧澧い搴㈢矊椤啰鈧稒蓱閸婃劗鈧鍠楅悡锟犮€佸Δ鍛妞ゆ垼濮ょ€氬ジ姊绘担鍛婅础閺嬵亝绻涢幘顕呮缂侇喖顭烽獮妯尖偓闈涙憸椤旀洟鏌i悩鍙夊巶闁告侗鍘奸悡鍌炴⒑鏉炴壆顦﹂柣妤€锕ョ粚杈ㄧ節閸ヮ灛褔鏌涘☉鍗炴灈婵炲懌鍊濆铏圭矙濞嗘儳鍓梺鍛婃尰缁诲嫰骞戦姀鐘斀闁搞儮鏅濋惁鍫ユ⒑缁嬫寧婀扮紒瀣灥閳诲秹鏁愰崪浣瑰瘜闂侀潧鐗嗙换鎺楀礆娴煎瓨鐓忛柛顐ゅ枑閸婃劖顨ラ悙鎻掓殲缂佸倹甯為埀顒婄到閻忔岸寮查鈧埞鎴︽倷閺夋垹浠搁柦鍐憾閹綊宕堕埡浣锋濠殿喖锕ㄥ▍锝夊箯閻樿鐏抽柧蹇e亞娴滃爼姊绘担钘夊惞闁革綇闄勬穱濠囧炊椤掆偓缁犳煡鏌曡箛鏇炐涢柡鈧禒瀣€甸柨婵嗙凹缁ㄤ粙鏌涙繝鍕槐婵﹥妞藉Λ鍐归妶鍡欐创鐎规洘锕㈡俊鎼佸Ψ椤旇棄鏋犳繝鐢靛Х閺佸憡鎱ㄩ悜钘夋瀬闁告稑锕ラ崣蹇涙煟閹达絾顥夐柡瀣╃窔閺岀喖姊荤€靛壊妲紒鐐礃椤濡甸崟顖氬唨妞ゆ劦婢€缁爼姊虹紒妯虹瑨闁诲繑宀告俊鐢稿礋椤栨氨顔婇梺鐟扮摠缁诲秵绂掗懖鈺冪<闁绘劦鍓欓崝銈嗐亜椤撶姴鍘寸€殿喖顭烽幃銏ゆ偂鎼达綆妲堕柣鐔哥矊缁绘帡寮灏栨闁靛骏绱曢崢浠嬫⒑鐟欏嫬鍔ゆい鏇ㄥ幖鐓ら柟缁㈠枟閻撴瑦銇勯弮鍌滄憘婵炲牊绮撻弻鈩冩媴閻熸澘顫嶉梺璇″灡濡啴宕规ィ鍐╁殤妞ゆ帊鐒﹀▍锕€鈹戦悩鍨毄濠殿噮鍙冮獮蹇涘礃椤旇偐顦ㄥ銈呯箰閸熺増銇欓幎鑺モ拻濞撴埃鍋撻柍褜鍓氱粙鎾诲煘閹烘鐓曢柡鍌濇硶鑲栭梺鐟扮畭閸ㄥ綊鍩為幋鐘亾閿濆簼绨荤紒鎰☉椤啴濡堕崱妯碱槬闂佺懓鍟跨粔鐟扮暦椤愨懡鏃堝川椤旇瀚藉┑鐐舵彧缁蹭粙骞夐敍鍕闁跨喓濮甸悡娆撴煣韫囷絽浜濋悘蹇曟暬閺屽秷顧侀柛鎾磋壘椤繈濡搁敂鑺ョ彿濠德板€撻懗鍫曞煘瀹ュ應鏀介柣妯哄级閹兼劗绱掗悩鍨殌闂囧鏌ㄥ┑鍡欏闁逞屽厸缁瑦淇婇幖浣哥厸闁稿本绮屽鎶芥⒒娴e憡鎯堥柛鐔哄█瀹曟垿骞樼紒妯煎幈闁硅壈鎻槐鏇㈡晬瀹ュ洨纾奸弶鍫氭櫅娴犺鲸顨ラ悙鏉戠瑨閾绘牕霉閿濆懎绾ч悗姘矙濮婄粯鎷呴崨闈涚秺瀵敻顢楅崟顒€浠梺闈浥堥弲娑氱矆閸屾壕鍋撻崗澶婁壕闂佸憡娲﹂崜娑㈠储閻㈠憡鈷戦柟顖嗗嫮顩伴梺绋款儏閹冲酣鎮惧畡鎵殕闁逞屽墴閸┾偓妞ゆ帒鍠氬ḿ鎰箾閸欏鐭掔€殿噮鍋嗛幏鐘差啅椤斿吋顓垮┑鐐差嚟婵挳顢栭幇鏉挎瀬闁搞儺鍓氶悡鐔兼煙闁箑寮鹃柛鐔风箻閺屾盯鎮欓崹顐f瘓濠殿喖锕︾划顖炲箯閸涘瓨鍤嶉柕澹讲鍋撴繝鍥ㄢ拺闂傚牃鏅濈粔鍓佺磼閻樿櫕宕岄柣娑卞枦缁犳稑鈽夊▎鎰仧闂備浇娉曢崳锕傚箯閿燂拷...

  3.2 设备的打开及操作

  通过上述步骤,系统内核就可以发现并打开设备了。设备打开模块中主要完成检查读写模式以及申请对设备的控制权等工作。同时可分配并填private_data数据结构、申请PCI设备I/O资源的占用、申请中断、注册中断处理程序。

Linux是以操作文件的方式来操作设备的,也就是通过系统定义的file_operation结构体向Linux文件系统注册一些操作设备的函数。其file_operation结构体的定

灏勯涓撲笟鍩硅鏁欑▼鎺ㄨ崘

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top