- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于嵌入式USB的以太网应用系统设计
随着USB技术的迅速发展,人们对USB的期望也越来越高。虽然USB技术在台式计算机领域的地位已经固如磐石,但是由于其以主机为中心的拓扑结构,任何一次USB的数据传输都必须由主机来发起和控制,所有的 USB设备都只能与主机建立连接。不仅如此,软件复杂性以及较高的功率要求,使得人们对嵌入式设备中使用USB的兴趣与日俱增[1]。嵌入式USB结合以太网技术可以将USB设备转换到TCP/IP,让USB 设备不再受距离限制,可以通过网络随时随地访问USB设备,可以让一个USB设备供多个用户使用,从而提高USB设备的利用率。通过使USB设备具备联网能力的设备联网服务器,可以实现联网使用USB存储、USB视频和USB打印等。本文提出了一种利用ARM7来实现嵌入式USB的方法,并结合以太网应用技术,使得通过网络可以方便地访问USB设备。
1 系统组成及工作原理
系统硬件结构如图1所示,系统采用LPC2148控制嵌入式SL811HS和ENC28J60,实现了USB设备与以太网的连接,便于USB设备的网络共享和数据的远距离传输。SL811HS主要实现USB HOST的功能,它能够识别USB设备,并能够对该设备进行读写操作。ENC28J60主要完成系统的网络通信,实现对系统USB设备的远程访问。
2 系统模块设计[2-3]
LPC2148是一个支持实时仿真和跟踪的16/32位ARM7TDMI-STM CPU的微控制器,并带有512KB嵌入的高速片内Flash存储器。片内128位宽度的存储器接口和独特的加速结构使32位代码能够在最大的时钟频率下运行。对代码规模有严格控制的应用可以使用16位Thumb模式将代码降低超过30%,而牺牲的性能却很小。LPC2148具有较小的64脚封装,最多可以使用46个GPIO。其极低的功耗、多个32位定时器、多路10位ADC、1路DAC以及丰富的接口使其特别适合于工业控制、医疗系统、访问控制嵌入式MODEM等各种类型的应用。选用LPC2148的原因是它片内集成了Flash、RAM、SPI接口,使得外围电路简单,性价比高。
ENC28J60是美国微芯科技公司于2005年推出的全球首枚28引脚独立以太网控制器,可为嵌入式应用提供低引脚数、低成本且高效易用的远程通信解决方案。此外,ENC28J60以太网控制器采用业界标准的SPI串行接口,只需很少的连线即可与主控芯片机连接,使如图2所示。其中的CS和RESET接到主控芯片是为了使软件设计更灵活。
SL811HS是Cypress公司设计的嵌入式USB主机设备控制器,在嵌入式系统中应用很广泛,能通过软件控制选择主从方式,支持低速和全速传输并自动检测低速或全速设备,通过A0区分地址和数据,并支持地址自增模式。SL811HS与主控芯片的接口电路如图3所示。
3 软件设计
系统软件主要由嵌入式TCP/IP程序和嵌入式USB两个部分组成。系统程序通过收到的以太网数据包的类型来进行相应的处理,完成特定的功能。例如通过以太网远程登陆的方式浏览和修改本地数据,达到本地数据网络共享的目的。
3.1 嵌入式TCP/IP实现
嵌入式TCP/IP实现包括以太网控制器ENC28J60底层驱动、TCP/IP协议。ENC28J60 可与许多主控制器上的SPI接口直接相连。此器件只支持SPI 的0,0模式。另外,SPI 端口要求SCK 在空闲状态时为低电平,不支持时钟极性选择。在SCK 的每个上升沿移入数据,命令和数据通过SI 引脚送入器件。 ENC28J60在SCK的下降沿从SO引脚输出数据。当执行操作时CS 引脚必须保持低电平,当操作完成时返回高电平[4]。
3.1.1ENC28J60底层驱动
在使用ENC28J60发送和接收数据包前,必须对器件进行初始化设置。根据应用的不同,一些配置选项可能需要更改。通常初始化任务会在复位之后立即完成,并且不再需要更改。初始化任务主要包括:(1)初始化接收缓冲器:在接收数据包前,必须编程ERXST和ERXND指针来对接收缓冲器进行初始化。ERXST与ERXND之间的存储空间专供接收硬件使用。(2)初始化发送缓冲器:所有未被用作接收缓冲器的存储空间都将作为发送缓冲器,故不需要专门对发送缓冲器进行专门的初始化。(3)等待OST:如果在上电复位后立即进行初始化,应查询ESTAT.CLKRDY位,确保在开始修改MAC和PHY寄存器前已经经过足够长的时间。(4)PHY初始化:PHY寄存器不能通过SPI控制接口直接访问,而是通过一组带有MIIM的特殊MAC控制寄存器来完成的。程序中在配置LED时用到了PHY写函数。写PHY寄存器时,先将PHY寄存器的地址写入MIREGADR,然后将要写入高低8位的内容分别写入MIWRH、MIWRL即可。
发送数据包时,ENC28J60会自动生成前导符和帧起始定界符。此外MAC还可以根据配置自动生成填充和CRC字段。主控制器要生成所有其他帧字段,并将他们写入缓冲器,以待发送。此外,ENC28J60还要求在待发送的数据包前添加一个包的控制字节。接收数据包时可以使用中断的方式,也可以使用查询的方式。由于本设计对实时性要求不是很高,故采用查询的方式。如果有数据包到达,ENC28J60将置位EIR寄存器的PTKIF位。程序运行时不断地查询该位以判断有无数据包到达。
3.1.2 以太网数据包处理
网络协议通常是在不同的协议层上进行开发,每一层负责不同的通信功能。TCP/IP 协议是一组不同层次上的多个协议的组合。当系统收到以太网的数据时,数据就开始从协议中由数据链路层逐层剥离其中各层协议所加的首部。主程序按照以太网数据帧分用的思路进行编制,程序框架如图4所示。
3.2 嵌入式USB实现[5-6]
嵌入式USB软件主要分成4个部分:SL811HS初始化、USB设备的识别及配置、海量存储协议和FAT文件系统。SL811HS共有16个配置寄存器,其中00-04H、08H-0CH是USB-A、USB-B的工作配置寄存器,05H是控制寄存器1,06H是中断使能寄存器,07H的各位均为保留位,0DH为状态寄存器,0EH为SOF计数寄存器,0FH为SOF计数寄存器的高位和控制寄存器2。在SL811HS上电开始工作之后,首先将寄存器05H的第3位置1,延时30 ms后清零,便可以对USB总线复位;然后在06H寄存器中写入61H,使能设备检测中断。
当有设备插入时,会使SL811HS的D+管脚置高,SL811HS的寄存器0DH的第7位置1并产生中断,系统会识别到有USB设备插入,即可对USB设备进行配置了。通过标准设备请求函数ClearFeaure()、GetConfiguration()、GetDescriptor()、SetAddress()等函数完成对设备的配置。
本系统可以检测U盘的状态(如接入、拔出),通过网络对U盘的访问,包括创建文件、目录和读写文件等,实现了USB设备网络共享的目的。 但是由于不同USB设备的驱动通常也不同,USB作为嵌入式应用时不可能像PC机操作系统把所有的驱动都装上。但是随着嵌入式技术的发展,可以采用网络更新驱动的方式,只要某种USB设备接上就可以通过更新系统的固件,达到识别该设备和使用该设备的目的。这也是本系统目前这也是本系统目前需要完善的地方。
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧湱鈧懓瀚崳纾嬨亹閹烘垹鍊炲銈嗗笒椤︿即寮查鍫熷仭婵犲﹤鍟扮粻缁橆殽閻愭潙鐏村┑顔瑰亾闂侀潧鐗嗛幊鎰版偪閳ь剚淇婇悙顏勨偓鏍涙担鑲濇盯宕熼浣稿妳婵犵數濮村ú锕傚煕閹寸姵鍠愰柣妤€鐗嗙粭鎺懨瑰⿰鈧崡鎶藉蓟濞戙垺鍋愰柛鎰级鐠囩偤鎮楃憴鍕闁搞劌娼¢悰顔碱潨閳ь剟鐛崶銊﹀闁荤喐婢橀崢鐐测攽閿涘嫬浜奸柛濠冪墵瀹曟繈骞嬮敃鈧崹鍌炴煕閿旇骞橀柣顓炵墛閵囧嫰寮村Δ鈧禍鎯р攽椤旂》鏀绘俊鐐舵铻為柛鎰╁妷濡插牊绻涢崱妯曟垿藟閿濆鈷掑ù锝呮嚈瑜版帗鏅濋柕鍫濐槴閳ь剨绠撻幃婊堟偩鐏炵晫銈﹂梻浣侯攰閹活亞绮婚幋鐘电焼閻庯綆鍋佹禍婊堟煙閻戞ê鐏ラ柍褜鍓欓…鐑界嵁婵犲倵鏀介柛鈾€鏅滅€靛矂姊洪棃娑氬婵☆偅绋掗弲鍫曨敆閸屾粍锛忛梺鍝勵槼濞夋洖鐡梻浣哥枃椤曆呯矓閻㈠灚宕叉繝闈涱儏閻愬﹪鏌曟繛鍨仾閻庢俺妫勯埞鎴︽倷鐎涙ê闉嶉梺绯曟櫅閸熸潙鐣烽幋锕€绠婚悗闈涙憸椤旀洘绻涙潏鍓у埌闁哥喎鐏濈叅闁挎洖鍊搁悿鐐亜閹烘垵顏柛娆愭崌閺屾盯濡烽敐鍛瀷闂佸疇妫勯ˇ鐢稿蓟閿濆绠抽柟瀵稿С缁敻姊洪棃娑欐悙閻庢矮鍗抽悰顕€骞掑Δ鈧粻锝嗙節閸偄濮冮柟顕嗙秮濮婄粯鎷呴懞銉闂佸摜鍠嶉崡鍐茬暦娴兼潙鍐€妞ゆ挾鍋犻幗鏇㈡⒑閸濆嫭鍌ㄩ柛銊ョ秺閺屽宕堕妸褏鐦堥梺鍓茬厛閸嬪嫭鎱ㄩ崼銉ユ瀬闁割偁鍎查埛鎺懨归敐鍛殘鐟滅増甯╅弫鍕煕閹伴潧鏋涚紒鈧径灞稿亾楠炲灝鍔氭い锔诲灡椤㈠﹪姊绘担鍛婂暈婵炶绠撳畷瑙勫閺夋垹顦ㄩ梺閫炲苯澧存慨濠冩そ濡啫鈽夐幒鎴炲€e┑鐘殿暯閳ь剝娅曢幖鎰版煃缂佹ɑ宕屽┑鈥崇埣瀹曞崬鈻庨幋鐘愁潓闂傚倷绀侀崯鍧楁儍濠靛纾婚柟鍓х帛閻撴洟鏌¢崶銉ュ濠⒀呭閵囧嫰鏁傞崹顔肩ギ濠殿喖锕ュ钘夌暦椤愶箑绀嬫い鎾跺Т婵晫绱撻崒姘偓鍝ョ矓瀹曞洦顐芥慨妯垮煐閸嬫ɑ銇勯弬鎸庮潔闁绘梻鍘х粈鍌炴煟閹惧啿顒㈤柣搴弮濮婄粯鎷呴崨濠傛殘濠电偠顕滅粻鎾崇暦閵忥絻浜归柟鐑樺灩閸旓箑顪冮妶鍡楀潑闁稿鎹囬弻銊╁即閵娿倗鐩庡銈庡亜缁绘劗鍙呭銈呯箰閹冲孩绂掗銏♀拺闁告繂瀚峰Σ褰掓倵缁楁稑鍊婚弰鍌涚節绾板纾块柛瀣灴瀹曟劙寮介鐐茬€梺姹囧灪濞煎矂宕堕浣镐缓缂備礁顑堥鎶藉Ψ閵夊啫缍婇弫鎰板川椤撗勵棏婵犵數鍋熼鏇㈠礉閹达箑钃熺€广儱鐗滃銊╂⒑閸涘﹥灏甸柛鐘崇墵閹即顢氶埀顒€鐣峰鈧、娆戝枈鏉堛劎绉遍梻鍌欑窔濞佳囨偋閸℃稑绠犻幖杈剧悼閻滅粯绻涢幋鐐垫噮缂佲檧鍋撻梻浣圭湽閸ㄨ棄岣胯閻☆參姊虹拠鎻掝劉闁告垵缍婂畷銏$附缁嬭法鍘洪梺鍦亾濡炲潡寮繝鍥ㄧ厱闁圭偓顨呴幏鎴犳閹惰姤鈷掑ù锝呮嚈瑜版帒瀚夋い鎺戝閸ゅ苯螖閿濆懎鏆欓柣鎺戠仛閵囧嫰骞掗幋婵愪紝濠碘槅鍋呴崹鍦閹烘鏁婇柤娴嬫櫅椤も偓缂傚倷鐒﹂〃鍫ュ窗閺嶎厼鏄ラ柍褜鍓氶妵鍕箳閹存繍浠撮梺閫炲苯鍘哥紒鑸佃壘椤曪絾绂掔€e灚鏅i梺缁樺姈椤旀牠宕ラ崨瀛樷拻濞达絿鎳撻婊勭箾閹绘帞效鐎规洘鍨块獮姗€宕滄担鐚寸床闂備胶绮悷銏ゅ磻閹剧粯鐓曢柕濞垮劤閸╋絿鈧鍠栭…閿嬩繆閹间礁鐓涢柛灞剧煯缁ㄤ粙姊绘担鍛靛綊寮甸鍌滅煓闁硅揪瀵岄弫鍌炴煥閻曞倹瀚� | More...
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧湱鈧懓瀚崳纾嬨亹閹烘垹鍊炲銈嗗笒椤︿即寮查鍫熷仭婵犲﹤鍟扮粻缁橆殽閻愭潙鐏村┑顔瑰亾闂侀潧鐗嗛幊鎰版偪閳ь剚淇婇悙顏勨偓鏍涙担鑲濇盯宕熼浣稿妳婵犵數濮村ú锕傚煕閹寸姵鍠愰柣妤€鐗嗙粭鎺懨瑰⿰鈧崡鎶藉蓟濞戙垺鍋愰柛鎰级鐠囩偤鎮楃憴鍕闁搞劌娼¢悰顔碱潨閳ь剟鐛崶銊﹀闁荤喐婢橀崢鐐测攽閿涘嫬浜奸柛濠冪墵瀹曟繈骞嬮敃鈧崹鍌炴煕閿旇骞橀柣顓炵墛閵囧嫰寮村Δ鈧禍鎯р攽椤旂》鏀绘俊鐐舵铻為柛鎰╁妷濡插牊绻涢崱妯曟垿藟閿濆鈷掑ù锝呮嚈瑜版帗鏅濋柕鍫濐槴閳ь剨绠撻幃婊堟偩鐏炵晫銈﹂梻浣侯攰閹活亞绮婚幋鐘电焼閻庯綆鍋佹禍婊堟煙閻戞ê鐏ラ柍褜鍓欓…鐑界嵁婵犲倵鏀介柛鈾€鏅滅€靛矂姊洪棃娑氬婵☆偅绋掗弲鍫曨敆閸屾粍锛忛梺鍝勵槼濞夋洖鐡梻浣哥枃椤曆呯矓閻㈠灚宕叉繝闈涱儏閻愬﹪鏌曟繛鍨仾閻庢俺妫勯埞鎴︽倷鐎涙ê闉嶉梺绯曟櫅閸熸潙鐣烽幋锕€绠婚悗闈涙憸椤旀洘绻涙潏鍓у埌闁哥喎鐏濈叅闁挎洖鍊搁悿鐐亜閹烘垵顏柛娆愭崌閺屾盯濡烽敐鍛瀷闂佸疇妫勯ˇ鐢稿蓟閿濆绠抽柟瀵稿С缁敻姊洪棃娑欐悙閻庢矮鍗抽悰顕€骞掑Δ鈧粻锝嗙節閸偄濮冮柟顕嗙秮濮婄粯鎷呴懞銉闂佸摜鍠嶉崡鍐茬暦娴兼潙鍐€妞ゆ挾鍋犻幗鏇㈡⒑閸濆嫭鍌ㄩ柛銊ョ秺閺屽宕堕妸褏鐦堥梺鍓茬厛閸嬪嫭鎱ㄩ崼銉ユ瀬闁割偁鍎查埛鎺懨归敐鍛殘鐟滅増甯╅弫鍕煕閹伴潧鏋涚紒鈧径灞稿亾楠炲灝鍔氭い锔诲灡椤㈠﹪姊绘担鍛婂暈婵炶绠撳畷瑙勫閺夋垹顦ㄩ梺閫炲苯澧存慨濠冩そ濡啫鈽夋潏銊愩倝姊虹粙鍨槰闁革綇绲介悾鐑藉箣閿曗偓缁犲鎮归崶銊ョ祷闁哥偑鍔岄—鍐Χ閸℃顫庨梺鍝ュТ鐎涒晝绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻鐔兼⒒鐎靛壊妲紒鐐劤椤兘寮婚敐澶婄疀妞ゆ帊鐒﹂崕鎾绘⒑閹肩偛濡奸柛濠傛健瀵鈽夐姀鈺傛櫇闂佹寧绻傚Λ娑⑺囬妷褏纾藉ù锝呮惈瀛濈紓鍌氱Т閿曨亜顕g拠宸悑濠㈣泛锕g槐鍫曟⒑閸涘﹥澶勯柛鎾寸懃閳诲秹鏁愭径瀣ф嫼缂備礁顑堥崕濠氾綖閿曞倹鐓曢柡鍐e亾闁搞劌鐏濋锝嗙節濮橆厽娅滄繝銏f硾閿曪箓鎮块埀顒勬⒒閸屾艾鈧悂鎮ф繝鍕煓闁硅揪绠戦悡鏇㈡煙閻戞ê鐏嶉柡鈧禒瀣厽闁归偊鍨伴惃鍝勵熆瑜庡鑽ゆ閹烘鏁婇柣锝呮湰閸d即鎮楀▓鍨灈妞ゎ參鏀辨穱濠囧箹娴e摜鍘搁梺绋挎湰閻喚鑺辨禒瀣拻濞达絽鎳欒ぐ鎺戝珘妞ゆ帒鍊婚惌娆撴煙鏉堟儳鐦滈柡浣稿€块弻銊╂偆閸屾稑顏�闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻锝夊箣閿濆憛鎾绘煕閵堝懎顏柡灞剧洴楠炴﹢鎳犻鈧俊浠嬫⒑缁嬭法绠茬紒顔芥崌瀵鈽夐姀鈺傛櫇闂佹寧绻傚Λ娑⑺囬妷鈺傗拺婵懓娲ら埀顒侇殜瀹曟垿骞橀懜闈涘簥濠电娀娼ч鍡浰夐崼鐔虹闁瑰瓨绻傞懜褰掓煕閹垮啫寮慨濠冩そ閺屽懘鎮欓懠璺侯伃闂佸憡蓱閹倿寮婚敐澶婄闁绘劕妯婂ú顓㈡⒑閻熸壆鐣柛銊ョ秺閸╃偤骞嬮悩顐壕闁挎繂绨肩花浠嬫煕婵犲嫬浠辨慨濠冩そ閹虫牠鍩為敐鍛Ш闁诡喗锚椤繈顢栭懞銉р偓娲⒑閻熸澘鈷旂紒顕呭灦閸╂盯骞掗幊銊ョ秺閺佹劙宕ㄩ鍏兼畼闂備礁鎽滈崰鎾诲磻閻愬灚宕叉繛鎴炵鐎氭氨鎲歌箛娑欏仼闁汇垻顣介崑鎾舵喆閸曨剛顦ㄧ紓渚囧枛閻倿宕洪妷锕€绶為柟閭﹀墻濞煎﹪姊洪幎鑺ユ殰闁稿鎹囬弻鐔虹矙閸喗娈诲┑顔硷攻濡炶棄鐣烽妸锔剧瘈闁告劦鐓堝Σ閬嶆⒒娴e懙鍦崲閹寸姷鐭欓柟鎹愵嚙缁犳煡鏌曡箛瀣偓鏇㈢嵁閵忥紕绠鹃柟瀵稿仧閹冲懘鏌涘鍡曢偗婵﹥妞藉畷婊堝箵閹哄秶鍑圭紓鍌欐祰椤曆囧疮閺夋垹鏆︾€规洖娲﹂崰鍡涙煕閺囨娅冪紒銊ヮ煼濡懘顢曢姀鈥愁槱闂佽鎮傜粻鏍嵁濡ゅ懏鍋愰柣顐墮闁帮絽鐣烽幆閭︽闂傚⿴鍓﹂崜姘跺Φ閸曨垰顫呴柍鈺佸暟椤︽澘顪冮妶鍐ㄧ仾妞ゃ劌妫濋獮蹇涘川閺夋垹顦梻濠庡亽閸樼偓寰勯敓锟�
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧湱鈧懓瀚崳纾嬨亹閹烘垹鍊炲銈嗗笒椤︿即寮查鍫熷仭婵犲﹤鍟扮粻缁橆殽閻愭潙鐏村┑顔瑰亾闂侀潧鐗嗛幊鎰版偪閳ь剚淇婇悙顏勨偓鏍涙担鑲濇盯宕熼浣稿妳婵犵數濮村ú锕傚煕閹寸姵鍠愰柣妤€鐗嗙粭鎺懨瑰⿰鈧崡鎶藉蓟濞戙垺鍋愰柛鎰级鐠囩偤鎮楃憴鍕闁搞劌娼¢悰顔碱潨閳ь剟鐛崶銊﹀闁荤喐婢橀崢鐐测攽閿涘嫬浜奸柛濠冪墵瀹曟繈骞嬮敃鈧崹鍌炴煕閿旇骞橀柣顓炵墛閵囧嫰寮村Δ鈧禍鎯р攽椤旂》鏀绘俊鐐舵铻為柛鎰╁妷濡插牊绻涢崱妯曟垿藟閿濆鈷掑ù锝呮嚈瑜版帗鏅濋柕鍫濐槹閸婅埖绻濋棃娑卞剱闁稿鏅犲娲垂椤曞懎鍓抽梻鍌氬鐎氼喚妲愰幒鏂哄亾閿濆簼绨藉ù鐘灮閳ь剝顫夐幐绋课涘┑鍡╂綎闁惧繐婀辩壕鍏间繆椤栨碍鎯堟い顐㈢Т椤啴濡堕崱妯锋嫻闂佺粯顨嗗ú鏍х暤閸曨偀鏀介柣鎰级閳绘洖霉濠婂嫮绠為柟顕嗙節閹垽宕楅懖鈺佸箺闂備礁鎼崐鍦偓绗涘洤绠熼柟闂寸劍閻撶喐銇勯幘璺轰哗閻庢氨澧楅妵鍕敇閳ュ啿濮峰銈忕畳濞呮洟濡甸崟顖毼╅柕澹啠鍙洪柣搴㈩問閸n噣宕戞繝鍥モ偓浣割潩鐠鸿櫣鍔﹀銈嗗笒鐎氼喖鐣垫笟鈧弻鐔兼倻濮楀棙鐣剁紓渚囧亜缁夊綊寮诲鍫闂佸憡鎸鹃崰搴敋閿濆绀冩繛鏉戭儏閻楁岸姊洪崜鎻掍簽闁哥姵鎹囧畷銏ゆ偨閸涘ň鎷洪柣鐘叉礌閳ь剙纾禒顓炩攽閻橆喖鐏弸顏呫亜閿濆懏鍋ユ慨濠勭帛閹峰懘鎼归悷鎵偧闂備浇顫夐幃鍌滅不閺嵮呮殾濞村吋娼欑粻娑㈡煛婢跺寒鍤﹂柨鏇炲€归悡鏇㈡煛閸ャ儱濡奸柣蹇涗憾閺屸剝鎷呯粙鎸庢闂侀潧娲ょ€氫即鐛崶顒€鐓涘ù锝堟〃閹絿绱撻崒娆掑厡濠殿喗鍎抽悾鐑芥偨閸偒娼熼梺瑙勫劤閻°劍鍒婇幘顔界厽闁靛牆楠搁悘鐘绘煕濮楀牏绡€婵﹨娅g划娆戞崉閵娧屽敼闂備焦瀵уú蹇涘垂瑜版帩鏁嬮柨婵嗘缁♀偓濠殿喗锕╅崢钘夆枍濠婂嫮绡€闁靛骏绲介悡鎰版嫅闁秵鐓涢柛婊冨暟缁夘喗鎱ㄦ繝鍛仩缂佽鲸甯掕灒闁告繂瀚峰ḿ鏃傜磽閸屾瑦顦烽柣鎺炵畵楠炴劙骞庨悾灞界ウ闂佸湱澧楀妯肩矆閸愨斂浜滈柡鍐ㄦ肠閹烘绠繛宸簼閳锋垿鏌ゆ慨鎰偓鏇㈠几閹寸偟绡€闁靛繆鍩楅鍕カ缂傚倸鍊烽悞锕佸綘婵炲瓨绮嶇划鎾诲蓟閻旇 鍋撳☉娆嬬細缂佺姰鍎叉穱濠囶敍濡も偓娴滈箖姊婚崒娆掑厡缂侇噮鍨辩粭鐔肺旈崨顓㈡7闂佹寧绻傞ˇ鍗炵暤娓氣偓閹鏁愭惔鈩冪亶闂佸搫鎳忕换鍫ュ蓟瀹ュ牜妾ㄩ梺鍛婃尰缁嬫捇宕氶幒鏃€瀚氭繛鏉戭儐椤秹姊洪棃娑氱畾婵$嫏鍥х濠电姵纰嶉埛鎴︽煕閹炬潙绲诲ù婊呭仱閺屾盯鎮╅搹顐㈢3闂佺硶鏅涢敃顏勵嚕閹绢喖顫呴柨娑樺楠炲牆鈹戦悩鍨毄濠殿喗鎸冲畷鎰板锤濡も偓閻鏌涢弴銊ュ闁告瑥绻愰埞鎴︽偐閹绘帩浼€闁汇埄鍨遍惄顖炲蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮⒑閸︻厼甯剁紓宥咃躬閹即顢欓懞銉ュ妳闂佽鍎抽崢鏍ㄧ珶閺囩喓绡€闁汇垽娼у瓭濠电偠顕滅粻鎾诲箖閳ユ枼妲堥柕蹇ョ磿閸樺崬鈹戦悙鏉戠仴鐎规洦鍓熷鎼佸Χ閸モ晝锛滈梺缁橈耿濞佳勭闁秵鐓涢悘鐐靛亾缁€瀣偓瑙勬礋娴滆泛顕i幘顔藉亹闁圭粯甯╅悗瀵哥磽閸屾艾鈧兘鎳楅崜浣稿灊妞ゆ牗绮嶅畷鏌ユ煕椤愶絿绠橀柡鍡畵閺屾盯顢曢敐鍡欘槰闂佹悶鍊曢澶愬蓟濞戔懇鈧箓骞嬪┑鍛嚬闂備胶绮换鎰不閹炬剚娼栧┑鐘宠壘绾惧吋绻涢崱妯虹劸婵″樊鍣e铏规喆閸曨厹鍋為梺閫炲苯澧茬紒澶樺枛鐓ゆい蹇撴噺濞呭洭姊虹粙鎸庢拱闁煎綊绠栧畷鎴濐吋婢跺鎷烘繛鏉戝悑閻熝囧礆閺夋鐔嗛悹铏瑰劋閸犳ḿ鈧娲橀崹鍧楃嵁濮椻偓楠炲洦鎷呴悷鏉垮帪濠碉紕鍋戦崐鏍箰妤e啫纾绘繛鎴欏灩缁犳椽鏌i姀鐘冲暈闁抽攱鍨块弻娑樷攽閸℃浠惧┑鐘亾濞寸厧鐡ㄩ悡鐔兼煃閸濆嫸宸ラ柣蹇ョ畵閺岋絽鈽夐崡鐐寸亪闁句紮绲介妴鎺戭潩閻撳海浠柣搴ㄦ涧閻倿寮婚敐澶嬪亹闁告瑥顦遍埞娑㈡倵濞堝灝鏋熼柟姝屽吹缁晠鎮㈤悡搴″祮闂侀潧绻嗗褔骞忕紒妯肩閺夊牆澧介崚浼存煙鐠囇呯瘈妤犵偛妫濆畷濂稿Ψ閿旀儳骞楁俊鐐€栭幐楣冨磿閹邦儵鐔煎焵椤掆偓铻栭柣姗€娼ф禒婊呯磼缂佹﹫鑰跨€殿噮鍋婇獮妯肩磼濡粯顏熼梻浣芥硶閸o箓骞忛敓锟�
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闂囧鏌ㄥ┑鍡欏妞ゅ繒濮风槐鎺楀焵椤掍胶绡€闁稿本顨嗛弬鈧梻浣虹帛钃辩憸鏉垮暣閸┾偓妞ゆ巻鍋撴い鏇ㄥ幘濡叉劙骞橀幇浣瑰兊闁哄鐗勯崝宀勫几閹达附鈷戦柛婵嗗閺嗘瑩鏌eΔ鈧€氫即宕洪埀顒併亜閹达絾纭剁紒鎰⒒閳ь剚顔栭崰鏇犲垝濞嗘挶鈧礁顫滈埀顒勫箖濞嗘挻鍤戦柛銊︾☉娴滈箖鏌涢…鎴濇灀闁衡偓娴犲鐓ユ繛鎴灻鈺伱归悩娆忔噽绾惧吋銇勯弴鐐村櫣闁诲骏濡囬埀顒侇問閸n噣宕戞繝鍥х畺闁冲搫鍟扮壕鍏间繆椤栫偞鏁遍悗姘偢濮婂宕掑▎鎴g獥闂佺ǹ顑呭Λ婵嗙暦閹存績妲堥柕蹇娾偓铏吅婵$偑鍊栭悧妤冪矙閹烘垟鏋嶉柣妯煎仺娴滄粓鏌¢崒娑卞劌婵炶偐鍠庨湁婵犲﹤瀚惌瀣煏閸パ冾伃妤犵偞岣块幑鍕姜閻楀牆濯伴梻鍌欒兌鏋い鎴濆暣瀹曟洟骞庨挊澶屽姦濡炪倖甯掗崰姘缚閹邦厾绠鹃柛娆忣槺閻帗顨ラ悙璇ц含妤犵偞岣块幏鐘绘嚑椤掆偓瀵劌鈹戦悩顔肩伇婵炲绋栨晶婵嬫⒑閸濆嫷鍎忛梺甯秮瀵鎮㈤崗鑲╁姺闂佹寧娲嶉崑鎾绘煛鐎n偆銆掔紒杈ㄥ浮楠炴捇骞掗幘鍏呮樊婵犳鍠栭敃銈夆€﹀畡鎵殾闁圭儤鍨熼弸搴ㄦ煙鐎涙ḿ绠撴い顒€顦靛缁樻媴缁涘娈愰梺鍝ュУ閻楃娀骞冮妷鈺傚亗閹艰揪绲惧▓楣冩⒑閸︻厼顣兼繝銏★耿瀹曪繝骞庨懞銉у幗闂婎偄娲﹂崙褰掑吹濞嗘垹纾界€广儱鎷戦煬顒侇殽閻愭彃鏆欐顏冨嵆瀹曞ジ鎮㈡搴㈩€嶆繝鐢靛О閸ㄧ厧鈻斿☉銏″剹闁割偁鍎遍懜褰掓煟閵忕姵鍟為柍閿嬪灴閹綊宕堕妸銉хシ闂佹悶鍊涙禍顒傛閹炬剚鍚嬮柛娑卞櫘濡箓鎮楃憴鍕;闁告鍟块锝嗙鐎e灚鏅濋梺闈涚墕鐎氼噣鎮峰┑瀣拻濞达絽鎲¢幆鍫ユ偠濮樼厧浜扮€规洘娲熷濠氬Ψ閿曗偓娴滄鈹戦悙鍙夘棞缂佸墎鏌夐妵鎰板箳閹惧厖绨甸梺纭呭閹活亞寰婃ィ鍐ㄧ疅闁绘挸绨堕弨浠嬫煟閹邦厽缍戞慨锝呮閺屾盯濡烽敐鍛瀷闂佸憡锕㈠ḿ褔鈥旈崘顔嘉ч柛鈩冿供濮婂潡鎮楃憴鍕闁轰礁鎽滈崚鎺楁晲婢跺﹦鐫勯梺閫炲苯澧存鐐茬墦婵℃悂鏁傞崜褏妲囬梻浣告啞娓氭宕抽鐣岊浄闁冲搫鎳忛埛鎴︽煕濞戞﹫鍔熷褜鍓熼弻锝呂旈崘銊愩垺銇勯弴顏嗙М妤犵偞锕㈤、娆撴寠婢跺鐩庨梻鍌欑閹诧紕缂撻崸妤€纾块弶鍫氭櫅缁躲倝鏌涢…鎴濇灀闁衡偓娴犲鐓ユ繛鎴灻鈺伱瑰⿰鍐﹀仮闁哄本绋掔换婵嬪礃閵娧傜礉闁诲氦顫夊ú婊堛€佹繝鍥﹂柟鐗堟緲缁犳娊鏌熼幆褏鎽犻柣婵囩墬娣囧﹪鎮欓鍕ㄥ亾閺囩姵宕查柟鎵閸嬪鏌涢弴銊ョ仩闁绘帒鐏氶妵鍕箣閿濆棛銆婂銈忚缁犳捇寮诲鍥ㄥ珰闁哄被鍎卞鏉课旈悩闈涗沪闁挎岸鏌i敐鍥у幋鐎规洖鐖奸幊婊堝极鐏炵喎鍟犻弨浠嬫煥濞戞ê顏╁ù婊冦偢閺屾稒绻濋崘顏勨拰濡ょ姷鍋為崝鏍Χ閿濆绀冮柕濞у懎鐐婇梻浣烘嚀閸氬鎮鹃鍫濈鐎广儱顦壕濠氭煟閺冨浂鍟忕憸鐗堝笚閸嬪倿骞栨潏鍓хɑ闁规彃銈稿娲箮閼恒儲鏆犻梺鎼炲妼濞尖€愁嚕鐠囨祴妲堟俊顖炴敱椤秴鈹戦绛嬫當闁绘锕顐c偅閸愨晝鍘介柟鑹版彧缁辨洘绂掑☉銏$厽闁绘柨寮跺▍濠勨偓娈垮枦椤曆囶敇婵傜ǹ閱囨い鎰剁秵閳ь剙娲缁樻媴閸涘﹤鏆堥梺瑙勬倐缁犳牕鐣烽悧鍫熷劅妞ゎ厽鍨堕弲顏堟⒑閹稿海绠撴俊顐g〒瀵囧焵椤掆偓閳规垿顢欓弬銈勭返闂佸憡枪濡嫰鍩㈠澶婎潊闁靛牆妫岄幏娲煟閻樺厖鑸柛鏂胯嫰閳诲秹骞囬悧鍫㈠幍闂佸憡鍨崐鏍偓姘炬嫹
婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘劙婀侀梺绋跨箰閸氬绱為幋锔界厱闁靛ǹ鍎遍埀顒€顭烽獮澶愬箹娴g懓浜遍梺鍓插亝缁诲嫰鎮烽弻銉︹拺缂佸灏呭銉╂煟閺嵮佸仮鐎殿喛顕ч埥澶愬閳哄倹娅囬梻浣虹帛钃辩憸鏉垮暞閹便劍鎯旈妸锔规嫼濠殿喚鎳撳ú銈夊焵椤掍緡娈滅€规洘鍨块獮姗€鎳滈棃娑樼哎婵犵數濞€濞佳囶敄閸℃蛋澶愬醇閻旇櫣顔曢梺鐟扮摠缁诲倿鎳滆ぐ鎺撶厱闁圭偓褰冨畵鍡樻叏婵犲啯銇濈€规洏鍔嶇换婵嬪川椤撗勵棨缂傚倸鍊搁崐鍝ョ矓閹绢喗鏅濇い蹇撶墛閸嬫ɑ銇勯弴妤€浜鹃悗娈垮枙缁瑦淇婇幖浣规櫆闁告搩鐏濋妶澶嬧拻濞达絽鎲¢崯鐐烘煙缁嬫寧顥㈢€规洏鍎甸弻銊р偓锝庝簽娴犲摜绱撴担铏瑰笡缂佽鍊块崺銏ゅ箻鐠囨彃鐎銈嗘煥瑜扮偤宕Δ鍛拻濞撴埃鍋撴繛浣冲洦鍋嬪┑鐘叉搐缁犳牠鏌涚仦鎯у毈闁搞倖娲栭埞鎴︽偐瀹曞浂鏆¢梺绋款儏鐎氫即寮婚敐澶婄闁诲繑妞挎禍顏勵嚕閹间礁纾奸柣鎰ˉ閹锋椽姊洪崨濠勨槈闁挎洏鍎插鍕礋椤栨稓鍘遍柣搴秵娴滄粓顢旈浣典簻闁靛牆鎳庨埀顒€鐏濋~蹇旂節濮橆剛锛滃┑鐐叉閸╁牆危椤曗偓濮婅櫣娑甸崪浣告疂缂備胶绮换鍌炴偩瀹勬噴娲敂閸曨収妲版俊鐐€栧Λ渚€宕戦幇鐗堟櫖婵炴垯鍨洪埛鎴︽煟閻斿憡绶查柍閿嬫⒒缁辨帡顢氶崨顓犱桓闂佽鍣换婵嬪箖閵忋倖鍋傞幖杈剧秵閸熷洦绻濋悽闈涘壋缂傚秴妫濆畷婊冣枎閹惧磭鍔﹀銈嗗灦閸庢娊鍩€椤掍焦绀€闁绘粌顭峰畷绋课旈埀顒傜不濞戙垺鐓熸俊銈傚亾闁绘绻樺畷銏ゆ濞戣鲸瀵岄梺闈涚墕濡瑩藟閸℃稒鐓曢悗锝庡亜婵秶鈧娲樺浠嬪极閹版澘鐐婇柨婵嗘噸婢规洟鏌i悢鍝ユ噧閻庢凹鍘剧划鍫ュ礃閳哄啰顔曢梺鑲┾拡閸撴瑩寮稿☉銏$厽婵炴垵宕弸鐔兼煙椤栨稒顥堝┑鈩冩倐閺佸啴鍩€椤掑嫭鍎岄柛鏇ㄥ墰缁♀偓闂侀潧楠忕徊鍓ф兜妤e啯鐓犳繛鑼额嚙閻忥箓鏌e☉鍗炴珝妤犵偞甯掕灃濞达絽寮剁€氳棄鈹戦悙鑸靛涧缂佸弶瀵ч悘娆撴⒑鐠団€虫灍闁搞劌婀卞Σ鎰板箳閹炬潙顎撻柣鐔哥懃鐎氼剟宕径鎰€垫繛鍫濈仢閺嬬喓鎲搁弶鍨殻闁靛牜浜濈€靛ジ寮堕幋锕€鏁规繝鐢靛█濞佳兠洪埡鍐╊偨闁靛骏绱曠弧鈧梺姹囧灲濞佳冪摥闂備焦瀵уú蹇涘磹濠靛绠栫憸搴f崲濠靛鐐婇柕濞垮劙缁ㄧ敻姊绘担鍛婃儓婵炲眰鍔戝畷浼村幢濡⒈娲稿┑鐘诧工閻楀﹪鎮″▎鎾寸厸濠㈣泛锕︽禒銏°亜閿濆棗鈻曢柡宀€鍠栭、娆撳垂椤旂粯鐫忕紓鍌欐祰妞村摜鏁敓鐘茬畺闁冲搫鍟版す宕囩棯椤撶偞鍣抽柛瀣崌瀹曠ǹ螖娴e搫骞愰梺璇茬箳閸嬫稒鏅舵禒瀣叀濠㈣泛顑冩禍婊勩亜閹板墎鎮肩紒鐘靛仦閵囧嫰濮€閳藉懓鈧潡鏌熼瑙勬珚鐎规洘锕㈠畷锝嗗緞鐏炰粙鍙¢梻鍌氬€搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅梺鍝勭▉閸樿偐绮eΔ浣虹闁规惌鍘界欢娑氱磽瀹ュ棛澧い顓℃硶閹瑰嫰鎼归崷顓濈礃缂傚倷鑳舵慨闈浳涢崘顔艰摕闁挎繂顦猾宥夋煕鐏炴崘澹樺ù鐘筹耿濮婅櫣绱掑Ο鍝勵潓闂佹寧娲╃粻鎾荤嵁婢跺瞼鐭欐繛鍡樺劤閹垿姊洪幖鐐插姉闁哄懏鐟х划顓熷緞閹邦厸鎷洪梺鐓庮潟閸婃洟寮稿☉銏$厱閻庯綆浜峰銉╂煏閸℃ê绗氱紒缁樼箓椤繈顢橀悩鎻掑闂傚倷绀佹竟濠囧磻閸涱垱宕查柛宀€鍋涘Ч鍙夌箾閸℃绠氶柡鈧禒瀣叆婵炴垶锚椤忣亝绻涢崨顔界缂佽鲸甯楀ḿ蹇涘Ω閵夛箒鐧佹俊鐐€戦崹娲偡閿斿墽绱﹂柣锝呯灱閻瑩鏌涢…鎴濇灈鐎殿喖鍢查埞鎴炲箠闁稿﹥顨嗛幈銊╂倻閽樺锛涘┑鐐村灍閹崇偤宕堕澶嬫櫖濠电娀娼ч悧鍛姳閻戣姤鈷掗柛灞剧懅椤︼箓鏌熷ù瀣⒉缂佹鍠庤灃闁告侗鍘鹃悰銉モ攽鎺抽崐鎰板磻閹剧粯鐓冮悹鍥皺鏁堟繝娈垮枓閸嬫捇姊洪棃娑氬婵☆偄鐭傞獮蹇撁洪鍛幗闂佺粯锚閸樻牠鎳滈鍫熺厱闁哄倽鍎荤€氫即鏌嶇拠鑼ф鐐叉喘閹囧醇閵忕姴绠ラ梻鍌欑閹诧繝宕归鐐茬9闁哄稁鍋€閸嬫挸顫濋悙顒€顏�