鎽� 瑕侊細鏈枃浠嬬垂浜嗗湪宓屽叆寮忚(di脿o)瑭﹀櫒涓浣曢€氶亷浠ュお缍�(w菐ng)鍙i€茶宓屽叆寮忚粺浠惰(di脿o)瑭︼紝瀵︾従(xi脿n)浜嗕富姗熻垏闁嬬櫦(f膩)鏉夸箣闁撶殑缍�(w菐ng)鍙i€氫俊銆傞嚌灏嶅叿楂旂殑宓屽叆寮忛枊鐧�(f膩)鏉縎3C4510B灏嶇恫(w菐ng)鍙i﹨(q奴)鍕曞拰缍�(w菐ng)绲�(lu貌)鍗�(xi茅)璀伴€茶浜嗙爺绌�锛岃娓涗簡缍�(w菐ng)鍙i﹨(q奴)鍕曞拰缍�(w菐ng)绲�(lu貌)鍗�(xi茅)璀扮殑鍐椾綑閮ㄥ垎锛屾棦淇濊瓑浜嗚(di脿o)瑭﹀櫒鍙互閫氶亷浠ュお缍�(w菐ng)閫茶閬犵▼瑾�(di脿o)瑭�锛屽張鑳芥豢瓒冲祵鍏ュ紡绯荤当(t菕ng)灏嶈硣婧愬崰鐢ㄧ殑瑕佹眰銆�
闂�(gu膩n)閸佃锛�宓屽叆寮忛枊鐧�(f膩)鏉�;缍�(w菐ng)绲�(lu貌)鍗�(xi茅)璀�;宓屽叆寮忚(di脿o)瑭﹀櫒
0.寮曡█
銆€銆€闅ㄨ憲宓屽叆寮忕郴绲�(t菕ng)鐨勫唬娉涙噳(y墨ng)鐢紝宓屽叆寮忚粺浠堕枊鐧�(f膩)璁婂緱鏃ヨ定閲嶈銆傚祵鍏ュ紡杌熶欢闁嬬櫦(f膩)鏈夊垾浜庢闈㈣粺浠堕枊鐧�(f膩)锛屽叾椤憲鐗归粸鏄粺浠堕枊鐧�(f膩)鐨勮(di脿o)瑭﹂亷绋嬮噰鐢ㄥ涓绘/鐩姗熺殑妯″紡閫茶锛屽叾浜ゅ弶瑾�(di脿o)瑭﹀櫒鍒嗙偤瀹夸富姗熷拰鐩姗熷叐閮ㄥ垎锛屽洜姝ゅ湪杌熶欢瑾�(di脿o)瑭﹂亷绋嬩腑灏遍渶瑕侀€茶涓绘鑸囩洰妯欐涔嬮枔鐨勯€氫俊銆�
銆€銆€鐩墠瀹夸富姗熻垏鐩姗熶箣闁撶殑閫氫俊鏂瑰紡涓昏鏈変覆鍙f柟寮�銆佷互澶恫(w菐ng)鎺ュ彛鏂瑰紡鍜孶SB鎺ュ彛鏂瑰紡涓夌ó锛屽叾涓覆鍙i€氫俊瀵︾従(xi脿n)绨″柈锛岀┅(w臎n)瀹氬彲闈�锛屾槸鐩墠寤f硾浣跨敤鐨勯€氫俊鏂瑰紡锛屼絾鏄覆鍙i€氫俊瀛樺湪钁楅€熷害鎱€€侀€氫俊璺濋洟鍙楅檺绛夊紛绔�锛岃€屼互澶恫(w菐ng)鎺ュ彛鏂瑰紡鍓囧彲浠ュ厠鏈嶄覆鍙f柟寮忕殑涓嶈冻锛屼笉鍍呭彲鎻愪緵绌�(w臎n)瀹氬彲闈犵殑鏁�(sh霉)鎿�(j霉)鍌宠几锛岃€屼笖鐒¤珫鏄偝杓搁€熷害閭勬槸鍌宠几璺濋洟閮介仩閬犲劒(y艒u)浜庝覆鍙f柟寮�锛屾槸涓€绋揩閫熼珮鏁堢殑閫氫俊鏂瑰紡銆傜洰鍓嶇恫(w菐ng)绲�(lu貌)閫氫俊鍗�(xi茅)璀扮殑鐧�(f膩)灞曞凡缍�(j墨ng)鐩哥暥鎴愮啛锛孖nternet宸ョ▼濮斿摗鏈僆ETF鍙婂叾涓嬪爆鐨勭鐞嗙祫IESG鍦≧FC鏂囨搵涓凡缍�(j墨ng)鏄庣⒑瀹氱京浜咺nternet鍗�(xi茅)璀版棌鐨勮(gu墨)鑼�锛岃┎瑕�(gu墨)鑼冨凡缍�(j墨ng)鎴愮偤涓€绋婧栧湪Internet涓唬娉涙噳(y墨ng)鐢ㄣ€傛湰鏂囨牴鎿�(j霉)姝よ(gu墨)鑼冭◣璜栦簡鍦ㄥ祵鍏ュ紡瑾�(di脿o)瑭﹀櫒涓浣曞鐝�(xi脿n)浠ュお缍�(w菐ng)鎺ュ彛閫氫俊锛岀郸鍑轰簡涓€绋熀浜庡祵鍏ュ紡瑾�(di脿o)瑭﹀櫒鐨勭恫(w菐ng)绲�(lu貌)閫氫俊鏂规硶銆�
1.纭欢绲�(ji茅)妲�(g貌u)
銆€銆€S3C4510B鏄笁鏄熷叕鍙搁枊鐧�(f膩)鐨勪竴娆�16/32浣峈ISC宓屽叆寮忚檿鐞嗗櫒锛岃姱鐗囧収(n猫i)閮ㄩ泦鎴愪簡涓€鍊�10Mbps/100Mvps浠ュお缍�(w菐ng)鎺у埗鍣�锛岀恫(w菐ng)鍗¤姱鐗囬噰鐢ㄧ殑鏄疪TL8201銆備互澶恫(w菐ng)鎺у埗鍣ㄤ富瑕佸垎鐐築DMA鎺у埗鍣ㄥ拰MAC瀛愬堡鍏╅儴鍒�锛岃┎鎺у埗鍣ㄥ伐浣滀簬MAC灞わ紝鍏煎IEEE802.3鍗�(xi茅)璀版婧�锛屾敮鎸佸崐闆欏伐鎴栧叏闆欏伐妯″紡锛岄噰鐢ㄤ粙璩�(zh矛)鐛ㄧ珛鎺ュ彛锛圡II锛夎垏缍�(w菐ng)鍗¤姱鐗囬€氫俊銆�
2.閫氫俊鍗�(xi茅)璀�
銆€銆€鍦ㄥ祵鍏ュ紡瑾�(di脿o)瑭﹀櫒鐨勯€氫俊涓�锛屼富姗熷悜鐩姗熺櫦(f膩)閫佸懡浠�锛岀洰妯欐鎺ユ敹銆佸煼(zh铆)琛屽懡浠ゅ苟灏囩祼(ji茅)鏋滆繑鍥炰富姗�锛岀恫(w菐ng)鍙i€氫俊涓昏鏄潰鍚戞暩(sh霉)鎿�(j霉)鍜屽瓧绗︿覆鍌宠几?sh霉)?锛屽洜姝ゅ湪閫氫俊涓富瑕佺敤鍒癐P鍗�(xi茅)璀般€丄RP鍗�(xi茅)璀板拰UDP鍗�(xi茅)璀�銆傝閫氶亷缍�(w菐ng)绲�(lu貌)瑾�(di脿o)瑭︾洰妯欐锛岄偅涔堢洰妯欐IP鍦板潃鐨勮ō(sh猫)缃槸蹇呬笉鍙皯鐨�锛屽洜姝ょ洰妯欐閭勯渶瑕佸鐝�(xi脿n)BOOTP鍗�(xi茅)璀�锛岄€氶亷BOOTP鍗�(xi茅)璀板悜涓绘鐢宠珛鏈IP鍦板潃锛屽畬鎴怚P鍦板潃鐨勯厤缃�銆�
銆€銆€BOOTP鍗�(xi茅)璀板嵆寮曞皫(d菐o)绋嬪簭鍗�(xi茅)璀�锛屾槸涓€绋熀浜嶶DP/IP鐨勫崝(xi茅)璀�锛屼富瑕佺敤浜庡鎴舵寰炴湇鍕�(w霉)鍣ㄧ嵅寰楁湰姗烮P鍦板潃銆佹湇鍕�(w霉)鍣↖P鍦板潃鍙婂叾瀹冮厤缃俊鎭�锛屽鏈湴瀛愮恫(w菐ng)鎺╃⒓绛夈€俇DP鍗�(xi茅)璀板嵆鐢ㄦ埗鏁�(sh霉)鎿�(j霉)鍫卞崝(xi茅)璀�锛屾槸涓€鍊嬬啊鍠殑闈㈠悜鏁�(sh霉)鎿�(j霉)鍫辩殑鍌宠几鍗�(xi茅)璀�锛岃垏TCP涓嶅悓锛孶DP涓嶆彁渚涘皪IP鍗�(xi茅)璀扮殑鍙潬姗熷埗銆佹祦鎺у埗浠ュ強閷鎭㈠京(f霉)鍔熻兘锛屾墍浠ュ鐝�(xi脿n)璧蜂締姣旇純绨″柈锛屼笖涓嶅奖闊垮偝杓搁€熷害锛岄仼鐢ㄤ簬宓屽叆寮忕郴绲�(t菕ng)銆侷P鍗�(xi茅)璀板嵆缍�(w菐ng)闅涘崝(xi茅)璀帮紝鏄恫(w菐ng)绲�(lu貌)涓婂鐝�(xi脿n)鏁�(sh霉)鎿�(j霉)鍌宠几?sh霉)骞曨姦A(ch菙)锛屾墍鏈夌殑TCP銆乁DP鏁�(sh霉)鎿�(j霉)閮戒互IP鏁�(sh霉)鎿�(j霉)鍫辨牸寮忓偝杓革紝瑭插崝(xi茅)璀版彁渚涗簡涓€绋珮鏁堜笉鍙潬鐨勭劇閫f帴鍌宠几鏂瑰紡銆侫RP鍗�(xi茅)璀板嵆鍦板潃瑙f瀽鍗�(xi茅)璀帮紝鐐篒P鍦板潃鑸囧皪鎳�(y墨ng)鐨勭墿鐞嗗湴鍧€鎻愪緵鏄犲皠銆�
3. 缍�(w菐ng)绲�(lu貌)閫氫俊绋嬪簭?q奴)宕縁(xi脿n)
銆€銆€鍏烽珨鐨勭▼搴�?q奴)宕縁(xi脿n)涓昏鍖呮嫭缍�(w菐ng)鍙i﹨(q奴)鍕曞拰閫氫俊鍗�(xi茅)璀板叐閮ㄥ垎锛岀恫(w菐ng)鍙i﹨(q奴)鍕曞嵆鍒濆鍖朣3C4510B鐨勭‖浠�锛屼富瑕佹槸浠ュお缍�(w菐ng)鎺у埗鍣ㄥ拰鏀剁櫦(f膩)绶╂矕鐨勮ō(sh猫)缃�;缍�(w菐ng)绲�(lu貌)鍗�(xi茅)璀扮殑瀵︾従(xi脿n)涓昏鏄畬鎴愭暩(sh霉)鎿�(j霉)鐨勬敹鐧�(f膩)锛屼繚璀夌洰妯欐澘鎺ュ叆浠ュお缍�(w菐ng)銆傜▼搴�?q奴)宕縁(xi脿n)娴佺▼濡傚湒1鎵€绀�銆�
鍦�1 绋嬪簭?q奴)宕縁(xi脿n)娴佺▼鍦�
銆€銆€3.1缍�(w菐ng)鍙i﹨(q奴)鍕曞鐝�(xi脿n)
銆€銆€缍�(w菐ng)鍙i﹨(q奴)鍕曠殑瀵︾従(xi脿n)涓昏鏄嚌灏嶅叿楂旂殑闁嬬櫦(f膩)鏉挎墍鍋氱殑纭欢鍒濆鍖栵紝閰嶇疆纭欢宸ヤ綔鐠�(hu谩n)澧�銆�
銆€銆€3.1.1绠$悊缍�(w菐ng)鍗¤姱鐗�
銆€銆€鍦�4510闁嬬櫦(f膩)鏉夸腑鐢盡AC灞ょ殑鐙€鎱�(t脿i)绠$悊鎺у埗姗熼€氶亷MII鎺ュ彛渚嗚畝鍙栧拰瑷�(sh猫)缃恫(w菐ng)鍗$殑宸ヤ綔鐙€鎱�(t脿i)锛岀墿鐞嗚ō(sh猫)鍌欏湴鍧€鍙婂叾鍏�(n猫i)閮ㄥ瘎瀛樺櫒鍦板潃瀛樻斁鍦ㄧ珯绠$悊鎺у埗鑸囧湴鍧€瀵勫瓨鍣⊿TACON涓�锛岃€岃瑷�(sh猫)缃垨璁€鍙栫殑鏁�(sh霉)鎿�(j霉)鍓囨斁鍦ㄧ珯绠$悊鏁�(sh霉)鎿�(j霉)瀵勫瓨鍣⊿TADATA涓�銆�
銆€銆€鍦ㄥ闅涙噳(y墨ng)鐢ㄤ腑锛岀恫(w菐ng)鍗$殑MAC鍦板潃鍙互寰濱CC EEPROM涓畝鍙�锛屼篃鍙嚜琛岃ō(sh猫)瀹氾紝鍙淇濊瓑鍦ㄥ悓涓€灞€鍩熺恫(w菐ng)鍏�(n猫i)瑭插湴鍧€鐨勫敮涓€鎬у嵆鍙�銆�
銆€銆€3.1.2鍒濆鍖栦互澶恫(w菐ng)鎺у埗鍣�
銆€銆€鈶犻棞(gu膩n)闁塎AC銆丅DMA鏀剁櫦(f膩)涓柗锛屼繚璀夊垵濮嬪寲绋嬪簭鐨勯爢鍒╅€茶銆�
銆€銆€鈶¤ō(sh猫)缃甅AC銆丅DMA涓柗鍚戦噺琛�銆係3C4510B涓叡鏈�21鍊嬩腑鏂锋簮锛孧AC鍜孊DMA鐧�(f膩)閫�/鎺ユ敹涓柗婧愬崰鐢�16锝�19鍥涘€嬩腑鏂疯櫉銆�
銆€?銆佸⒓O(sh猫)缃甅AC銆丅DMA鎺у埗鍣ㄧ殑鍒濆鍊�锛屽嵆鍒濆鍖朆DMA鎺ユ敹/鐧�(f膩)閫佹帶鍒跺瘎瀛樺櫒鍜孧AC鎺ユ敹/鎺у埗瀵勫瓨鍣�锛屽叿楂旀敹鐧�(f膩)绱扮瘈(ji茅)銆�
銆€?銆佽姌娓查潯钑搭伝W(w菐ng)鐨勬敹鐧�(f膩)绶╂矕鍗€(q奴)銆傜櫦(f膩)閫佸箑鍜屾帴鏀跺箑鐨勫箑鎻忚堪绗﹁捣濮嬪湴鍧€鍒嗗垾瀛樻斁鍦ㄥ瘎瀛樺櫒BDMATXPTR鍜孊DMARXPTR涓�锛屽湪BDMA鐨勬搷浣滈亷绋嬩腑瀹冨€戞渻鏇存柊鐐轰笅涓€鍊嬪箑鍦板潃銆傚叾涓�锛屽箑鎻忚堪绗﹀畾缇╃偤绲�(ji茅)妲�(g貌u)椤炲瀷锛岀祼(ji茅)妲�(g貌u)楂旀垚鍝℃弿杩颁簡骞€淇℃伅銆�
銆€銆€鈶や娇鑳紹DMA鎺ユ敹涓柗鍜孧AC鐧�(f膩)閫佷腑鏂�銆傚皣涓柗灞忚斀瀵勫瓨鍣↖NTMSK涓殑鐩告噳(y墨ng)浣嶆竻闆�锛岄熆鎳�(y墨ng)BDMA鍜孧AC涓柗璜嬫眰銆�
銆€銆€3.1.3鏀剁櫦(f膩)浠ュお鏁�(sh霉)鎿�(j霉)骞€
銆€?銆佷緮l(f膩)閫佷互澶暩(sh霉)鎿�(j霉)骞€锛氳(di脿o)鐢ㄧ櫦(f膩)閫佸嚱鏁�(sh霉)DrvEthWrite锛堬級锛屽緸BDMATXPTR涓嵅寰楃櫦(f膩)閫佸箑鍦板潃锛岀偤鐧�(f膩)閫佸箑绶╂矕璩﹀€�锛屽皣鏁�(sh霉)鎿�(j霉)骞€鐨勬帶鍒舵瑠(qu谩n)浜ょ郸BDMA鎺у埗鍣�锛屼互澶恫(w菐ng)鎺у埗鍣ㄨ嚜鍕曠偤鐧�(f膩)閫佹暩(sh霉)鎿�(j霉)鍔犱笂鍚屾浣�銆佸垎鍓蹭綅銆佹牎椹椾綅浠ュ強濉厖瀛楁骞跺皣浠ュお骞€鐧�(f膩)閫佸嚭鍘�銆�
銆€?銆佽閭壘钑寸彣?sh霉)鎿�(j霉)骞€锛氭帴鏀舵檪鐢�(ch菐n)鐢烞DMA鎺ユ敹涓柗锛屼腑鏂疯檿鐞嗗嚱鏁�(sh霉)BDMA_Rx_isr锛堬級瀹屾垚鏁�(sh霉)鎿�(j霉)鐨勬帴鏀�锛屽苟鍋氱浉闂�(gu膩n)鐨勮檿鐞嗭紝濡傛竻妤氫腑鏂锋蹇椾綅銆佹鏌ユ暩(sh霉)鎿�(j霉)骞€鐨勬墍鏈夋瑠(qu谩n)銆佺嵅鍙栦笅涓€鍊嬫湭铏曠悊鐨勫箑绲�(ji茅)妲�(g貌u)鎸囬嚌绛�銆�
銆€銆€閮ㄥ垎涓昏绋嬪簭濡備笅锛�
銆€銆€/锛婇厤缃墿鐞嗚ō(sh猫)鍌欙紛/
銆€銆€MIIWrite锛�0x0, 0x2, 1<<13|1<<8锛�;/锛婅ō(sh猫)缃墿鐞嗚ō(sh猫)鍌欑殑鐙€鎱�(t脿i)锛�/
銆€銆€status = MIIRead锛�0x1, 0x0锛�;/锛婅畝鍙栫墿鐞嗚ō(sh猫)鍌欑殑鐙€鎱�(t脿i)锛�/
銆€銆€/锛婇厤缃甅AC鍦板潃锛�/
銆€銆€GetMyMacAddr锛堬級:
銆€銆€/锛婇棞(gu膩n)闁夋敹鐧�(f膩)涓柗锛�/
銆€銆€Disable_Int锛坣MAC_RX_INT锛�;
銆€銆€Disable_Int锛坣MAC_TX_INT锛�;
銆€銆€Disable_Int锛坣BDMA_RX_INT锛�;
銆€銆€Disable_Int锛坣BDMA_TX_INT锛�;
銆€銆€/锛婅ō(sh猫)缃甅AC鐧�(f膩)閫佷腑鏂峰拰BDMA鎺ユ敹涓柗鍚戦噺锛�/
銆€銆€SetInterrupt锛坣MAC_TX_INT, MAC_Tx_isr锛�;
銆€銆€SetInterrupt锛坣BDMA_RX_INT, BDMA_Rx_isr锛�;
銆€銆€/锛婂垵濮嬪寲MAC銆丅DMA鎺у埗鍣紛/
銆€銆€BDMARXCON = BRxRS; /锛婅ō(sh猫)缃瓸DMA鎺ユ敹鎺у埗瀵勫瓨鍣紛/
銆€銆€BDMATXCON = BTxRS; /锛婅ō(sh猫)缃瓸DMA鐧�(f膩)閫佹帶鍒跺瘎瀛樺櫒锛�/
銆€銆€MACCON = Reset; /锛婂京(f霉)浣峂AC鎺у埗瀵勫瓨鍣紛/
銆€銆€BDMARXLSZ = MaxRxFrameSize+40; /锛婃帴鏀跺箑鐨勬渶澶у昂瀵革紛/
銆€銆€MACON = gMacCon; /锛婅ō(sh猫)缃偤鍏ㄩ洐宸ユ柟寮忥紛/
銆€銆€/锛婇厤缃互澶恫(w菐ng)鐨勬敹鐧�(f膩)绶╂矕锛�/
銆€銆€TxFDInitialize锛堬級;
銆€銆€RxFDInitialize锛堬級;
銆€銆€/锛婁娇鑳紹DMA鎺ユ敹涓柗鍜孧AC鐧�(f膩)閫佷腑鏂凤紛/
銆€銆€Enable_Int锛坣BDMA_RX_INT锛�;
銆€銆€Enable_Int锛坣MAC_TX_INT锛�;
銆€銆€3.2閫氫俊鍗�(xi茅)璀板鐝�(xi脿n)
銆€銆€鏈枃閲囩敤绲�(ji茅)妲�(g貌u)椤炲瀷瀹氱京鏁�(sh霉)鎿�(j霉)绲�(ji茅)妲�(g貌u)bootphdr銆乁dphdr銆乮p鍜宎rphdr锛屽垎鍒ョ敤渚嗚閷凚OOTP銆乁DP銆両P鍜孉RP鍗�(xi茅)璀版暩(sh霉)鎿�(j霉)鍫卞牨闋殑鍚勭ó淇℃伅銆�
銆€銆€3.2.1閰嶇疆鐩姗烮P鍦板潃
銆€銆€鐩姗熼鍏堝悜涓绘鐧�(f膩)閫丅OOTP璜嬫眰锛屼富姗熼亱琛孌HCP鏈嶅嫏(w霉)鐐虹洰妯欐鍒嗛厤IP鍦板潃锛屽悜鐩姗熺櫦(f膩)閫丅OOTP鎳�(y墨ng)绛斿寘锛岀洰妯欐鏀跺埌鎳�(y墨ng)绛斿寘鍚�锛屾寜鐓у崝(xi茅)璀版牸寮忕嵅鍙栦富姗熷拰鏈鐨処P鍦板潃浠ュ強鍏跺畠鐩搁棞(gu膩n)淇℃伅銆�
銆€?銆佸仌顚傝懣OOTP璜嬫眰銆傚垵濮嬪寲bootphdr涓悇鍊嬬祼(ji茅)妲�(g貌u)楂旀垚鍝$殑鍊�锛屽鎴禝P鍦板潃鍜屼富姗烮P鍦板潃鍒嗗垾瑷�(sh猫)鐐�0.0.0.0鍜�255.255.255.255锛屽湪绯荤当(t菕ng)閫茶寮曞皫(d菐o)鏅�0.0.0.0鏄竴鍊嬫湁鏁堢殑IP鍦板潃锛岀洰妯欐鍦ㄤ笉鐭ラ亾鐩殑涓绘鐨処P鍦板潃鏅傚彲浠ヤ娇鐢ㄥ唬鎾湴鍧€255.255.255.255,浠ュ唬鎾殑鏂瑰紡鐧�(f膩)閫丅OOTP璜嬫眰銆侻AC鍦板潃宸插湪鍒濆鍖栨檪鐛插緱锛屽苟瀛樻斁鍦ㄥ叏灞€璁婇噺MyMacSrcAddr涓�锛屽叾瀹冩垚鍝¤畩閲忓彲浠ユ寜鐓у崝(xi茅)璀扮殑鏍煎紡瑷�(sh猫)缃嵆鍙€�
銆€?銆佽瘞l(f膩)閫丅OOTP璜嬫眰銆侭OOTP璜嬫眰闇€灏佽鍦║DP鏁�(sh霉)鎿�(j霉)鍫变腑鐧�(f膩)閫�,BOOTP鐨勬湇鍕�(w霉)鍣ㄧ鍙e拰瀹㈡埗绔彛鍒嗗垾浣跨敤鐭ュ悕绔彛67鍜�68;UDP鏍¢鍜岄€氶亷瑾�(di脿o)鐢ㄥ嚱鏁�(sh霉)udpChksum锛堬級瑷堢畻鐛插彇銆侷P鍫遍牠鍚勬垚鍝℃寜鐓P鏁�(sh霉)鎿�(j霉)鍫辨牸寮忚ō(sh猫)缃�锛屾簮IP鍦板潃鑸囩洰鐨処P鍦板潃鍒嗗垾鏄�0.0.0.0鍜�255.255.255.255锛孖P鏍¢鍜岄€氶亷瑾�(di脿o)鐢ㄥ嚱鏁�(sh霉)ipChksum锛堬級瑷堢畻鐛插緱銆傛湰姗烳AC鍦板潃浣滅偤婧怣AC鍦板潃锛屽唬鎾舰寮忕殑MAC鍦板潃0xffffffff浣滅偤鐩殑MAC鍦板潃锛屽皝瑁濇垚浠ュお鏁�(sh霉)鎿�(j霉)骞€锛岃(di脿o)鐢ㄥ鍑芥暩(sh霉)DrvEthWrite锛堬級鐧�(f膩)閫�銆傝(di脿o)鐢ㄧ櫦(f膩)閫佷腑鏂疯檿鐞嗗嚱鏁�(sh霉)MAC_Tx_isr锛堬級锛屾洿鏂扮暥鍓嶅箑绲�(ji茅)妲�(g貌u)鎻忚堪鎸囬嚌骞跺京(f霉)浣峂AC鎺у埗鍣�銆�
銆€銆€鈶㈡帴鏀禕OOTP鎳�(y墨ng)绛斿寘锛岀嵅鍙栦富姗熷拰鏈鐨処P鍦板潃銆傞噰鐢ㄤ腑鏂锋柟寮忔帴鏀禕OOTP鎳�(y墨ng)绛斿寘銆備腑鏂疯檿鐞嗗嚱鏁�(sh霉)BDMA_Rx_isr锛堬級灏囨帴鏀跺埌鐨勫寘瀛樻斁鍦ㄦ帴鏀跺箑鎻忚堪绗xFDBaseAddr涓�锛屾彁鍙栨湁鏁堟暩(sh霉)鎿�(j霉)鏀惧叆BOOTP鎺ユ敹绶╂矕鍗€(q奴)BOOTP_REC_BUF涓�,骞朵笖寰�(f霉)浣嶇浉鎳�(y墨ng)鐨凚DMA鎺у埗瀵勫瓨鍣ㄩ亾鍜屼腑鏂锋帶鍒朵綅銆�
銆€?銆侀儻鍑戣珗f(xi茅)璀扮殑鏁�(sh霉)鎿�(j霉)鍫辨牸寮忓緸BOOTP_REC_BUF涓彁鍙栨暩(sh霉)鎿�(j霉)锛岃閷勬湰姗熷拰涓绘鐨処P鍦板潃銆�
銆€銆€3.2.2鏁�(sh霉)鎿�(j霉)鏀剁櫦(f膩)
銆€銆€鏁�(sh霉)鎿�(j霉)鐨勬敹鐧�(f膩)涓昏鏄秹鍙奍P銆乁DP鍜孉RP涓夊€嬮噸瑕佺殑鍗�(xi茅)璀帮紝鍦ㄥ叿楂斿鐝�(xi脿n)涓牴鎿�(j霉)宓屽叆寮忕郴绲�(t菕ng)鐨勭壒鎬ф湁閲濆皪鎬у湴鍋氫簡瑁佹笡锛屾棦淇濊瓑浜嗙恫(w菐ng)鍙g殑姝e父宸ヤ綔锛屽張绡€(ji茅)鐪佷簡宓屽叆寮忕郴绲�(t菕ng)鐨勮硣婧�銆�
銆€?銆佸剢骞歌暣顏籛(w菐ng)鏁�(sh霉)鎿�(j霉)鍖呭埌渚�锛岄鍏堥€茶鍒ゆ柗銆傚鏋滄槸ARP璜嬫眰鍓囩櫦(f膩)閫佷竴鍊婣RP鎳�(y墨ng)绛�;濡傛灉鏄疉RP鎳�(y墨ng)绛�锛屽墖瑷橀寗鐧�(f膩)閫佹柟鐨処P鍦板潃鍜屼互澶恫(w菐ng)鍦板潃;濡傛灉鏄疘P鏁�(sh霉)鎿�(j霉)鍖咃紝鍓囬枊濮嬫帴鏀舵暩(sh霉)鎿�(j霉)銆�
銆€銆€鈶℃帴鏀舵暩(sh霉)鎿�(j霉)锛欼P鏁�(sh霉)鎿�(j霉)鍖呭埌渚�锛屼腑鏂疯檿鐞嗗嚱鏁�(sh霉)灏囨暩(sh霉)鎿�(j霉)鍖呮斁鍦ㄦ帴鏀跺箑鎻忚堪绗xFDBaseAddr涓�锛屾彁鍙朓P鍖呮斁鍏ユ帴鏀剁珐娌栧崁(q奴)IP_REC_BUF銆傚緸IP_REC_BUF涓彁鍙栨湁鏁堟暩(sh霉)鎿�(j霉)浜ょ郸瑾�(di脿o)瑭﹀櫒閫茶铏曠悊銆�
銆€?銆侀儻l(f膩)閫佹暩(sh霉)鎿�(j霉)锛氱櫦(f膩)閫佺殑鏁�(sh霉)鎿�(j霉)灏佽鍦║DP鏁�(sh霉)鎿�(j霉)鍫变腑锛岀洰妯欐IP鍦板潃鍜屼富姗烮P鍦板潃鍒嗗垾瑷橀寗鍦ㄥ叏灞€璁婇噺MyIpAddr鍜孒ostIpAddr涓紝鎸夌収UDP鍜孖P鍗�(xi茅)璀扮殑鏁�(sh霉)鎿�(j霉)鍫辨牸寮忕偤鏁�(sh霉)鎿�(j霉)鍔犱笂UDP鍫遍牠鍜孖P鍫遍牠銆備互鏈MAC鍦板潃浣滅偤婧愮墿鐞嗗湴鍧€锛屼互ARP鎳�(y墨ng)绛斾腑鐛插緱鐨勪富姗熺墿鐞嗗湴鍧€浣滅偤鐩殑鍦板潃锛屽皝瑁濇垚浠ュお鏁�(sh霉)鎿�(j霉)骞€锛岃(di脿o)鐢ㄥ鍑芥暩(sh霉)DrvEthWrite锛堬級鐧�(f膩)閫�,涓柗铏曠悊鍑芥暩(sh霉)MAC_Tx_isr锛堬級閫茶鐧�(f膩)閫佷腑鏂疯檿鐞�銆�
銆€銆€閮ㄥ垎涓昏閫氫俊绋嬪簭濡備笅锛�
銆€銆€SendBootpRequest锛坆ootp_id锛�;/锛婄櫦(f膩)閫丅OOTP璜嬫眰锛宐ootp_id鏄┎璜嬫眰闅ㄦ鍒嗛厤鐨勬璀樿櫉锛�/
銆€銆€/锛婄瓑寰匓OOTP鎳�(y墨ng)绛斿寘锛�/
銆€銆€/锛夿OOTP鎳�(y墨ng)绛斿寘鍒颁締锛屽緸鎺ユ敹绶╂矕BOOTP_REC_BUF鎻愬彇鏁�(sh霉)鎿�(j霉)锛�/
銆€銆€memcpy锛圡yIpAddr,bhdr->your_ip,4锛�; /锛婃彁鍙栫洰妯欐澘鐨処P鍦板潃鏀惧湪鍏ㄥ眬璁婇噺MyIpAddr涓紛/
銆€銆€memcpy锛圚ostIpAddr,bhdr->server_ip,4锛�; /锛婃彁鍙栦富姗烮P鍦板潃鏀惧湪鍏ㄥ眬璁婇噺HostIpAddr涓紛/
銆€銆€/锛婃鏌ュ埌渚嗙殑鍖咃紛/
銆€銆€if锛坧ro_type==ETHERTYPE_IP锛� IpProcess锛圛P_REC_BUF锛�;/锛婅檿鐞嗗埌渚嗙殑IP鍖咃紛/
銆€銆€if锛坧ro_type==ETHERTYPE_ARP锛� ArpProcess锛圛P_REC_BUF,42锛�;/锛婅檿鐞嗗埌渚嗙殑ARP鍖咃紛/
4.绲�(ji茅)瑾�
銆€銆€鐢–瑾炶█瀵︾従(xi脿n)鐨勭▼搴忎唬纰煎凡瑾�(di脿o)瑭﹂€氶亷锛屽苟鎴愬姛鎳�(y墨ng)鐢ㄤ簬宓屽叆寮忚(di脿o)瑭﹀櫒涓�銆傝┎鍔熻兘妯″閲濆皪鍏烽珨鐨勯枊鐧�(f膩)鏉挎墍瑷�(sh猫)瑷堢殑缍�(w菐ng)鍙i﹨(q奴)鍕曞拰鍗�(xi茅)璀版'锛岃娓涗簡鍐椾綑鐨勫姛鑳介儴鍒�锛屾棦鑳芥豢瓒冲祵鍏ュ紡绯荤当(t菕ng)灏嶈硣婧愬崰鐢ㄧ殑瑕佹眰锛屽張鑳戒繚璀夋暩(sh霉)鎿�(j霉)婧栫⒑銆佺劇涓熷け鍌宠几銆傛脯瑭﹁瓑鏄庡皪浜庢壒閲忔暩(sh霉)鎿�(j霉)鐨勫偝杓�锛岀恫(w菐ng)鍙g殑閫熷害閬犻仩鍎�(y艒u)浜庝覆鍙�锛屾湁鏁堝湴瀵︾従(xi脿n)浜嗕富姗熻垏鐩姗熶箣闁撶殑瑾�(di脿o)瑭﹂€氫俊锛屽叿鏈変竴瀹氱殑瀵﹂殯鎰忕京銆�
銆€銆€鏈枃浣滆€呭壍(chu脿ng)鏂伴粸:瑷�(sh猫)瑷堝苟瀵︾従(xi脿n)浜嗗祵鍏ュ紡瑾�(di脿o)瑭﹀櫒鐨勪互澶恫(w菐ng)鎺ュ彛閫氫俊鏂瑰紡锛岄嚌灏嶅叿楂旂殑闁嬬櫦(f膩)鏉垮皪缍�(w菐ng)鍙i﹨(q奴)鍕曞拰鍗�(xi茅)璀版'鍋氫簡瑁佹笡锛屾棦鑳芥豢瓒冲祵鍏ュ紡绯荤当(t菕ng)鐨勮硣婧愬崰鐢ㄨ姹�锛屽張鑳戒繚璀夋暩(sh霉)鎿�(j霉)楂樻晥鍌宠几銆�
鍙冭€冩枃鐛伙細
銆€銆€[1]鍠,褰€濋惮,鏌忔鏋�.宓屽叆寮忚粺浠舵簮纰肩礆浜ゅ弶瑾�(di脿o)瑭﹀櫒鐨勮ō(sh猫)瑷堣垏瀵︾従(xi脿n).鑹﹁埞闆诲瓙宸ョ▼.2004,24锛�3锛夛細56-59.
銆€銆€[2]榫愮辜鍕�,鏉庣董鑻�,鐜嬬珶.缍�(w菐ng)绲�(lu貌)閫氫俊铏曠悊鍣⊿3C4510B鐨勭恫(w菐ng)鍙i﹨(q奴)鍕曡ō(sh猫)瑷�.鍠墖姗熻垏宓屽叆寮忕郴绲�(t菕ng)鎳�(y墨ng)鐢�.2004,锛�4锛�:26-28.
銆€銆€[3]鑳″痉鏂�.鍩轰簬ucOS鈪℃搷浣滅郴绲�(t菕ng)鐨勫祵鍏ュ紡缍�(w菐ng)绲�(lu貌)鏈嶅嫏(w霉)鍣ㄧ殑瑷�(sh猫)瑷堣垏瀵︾従(xi脿n).寰▓绠楁淇℃伅.2005,21锛�8-2锛�:24-26.
銆€銆€[4]瀵囧悜杓�,闄冲埄瀛�(xu茅),鐢板鏋�.鍩轰簬S3C44BOX+ucLinux鐨勫祵鍏ュ紡浠ュお缍�(w菐ng)瑷�(sh猫)瑷堣垏鍒嗘瀽.2005,锛�35锛�:
銆€銆€[5]浠e媷,鏉庢槍绂�.鍩轰簬宓屽叆寮忎互澶恫(w菐ng)鎺ュ彛鐨勬暩(sh霉)鎿�(j霉)閲囬泦铏曠悊绯荤当(t菕ng).寰鐧�(f膩)灞�.2005,15锛�5锛�:125-127.
銆€銆€[6]ADAM DUNKELS.銆妘IP-A Free Small TCP/IP Stack銆�.Sweden锛歋wedish Institute of Computer Science,2003