• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    天脈1下龍芯1B網(wǎng)卡驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

    2016-11-14 07:03:25王宏偉麥先根
    電子科技 2016年10期
    關(guān)鍵詞:龍芯描述符網(wǎng)卡

    梅 濤,王宏偉,麥先根

    (中航工業(yè)西安計(jì)算技術(shù)研究所 基礎(chǔ)軟件室,陜西 西安710068)

    ?

    天脈1下龍芯1B網(wǎng)卡驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

    梅 濤,王宏偉,麥先根

    (中航工業(yè)西安計(jì)算技術(shù)研究所 基礎(chǔ)軟件室,陜西 西安710068)

    針對(duì)某嵌入式項(xiàng)目需要實(shí)現(xiàn)基于龍芯1B處理器的計(jì)算和以太網(wǎng)通信功能。文中采用龍心1B處理器集成兩路千兆以太網(wǎng),基于天脈1嵌入式實(shí)時(shí)操作系統(tǒng),設(shè)計(jì)實(shí)現(xiàn)了龍芯1B處理器平臺(tái)下雙網(wǎng)卡以太網(wǎng)驅(qū)動(dòng)。網(wǎng)卡驅(qū)動(dòng)可同時(shí)支持基于以太網(wǎng)的調(diào)試和通信功能;也可通過(guò)一路網(wǎng)卡進(jìn)行調(diào)試,同時(shí)使用另外一路網(wǎng)卡進(jìn)行通信。實(shí)驗(yàn)結(jié)果證明,所設(shè)計(jì)實(shí)現(xiàn)的以太網(wǎng)驅(qū)動(dòng)功能正確,在天脈1嵌入式操作系統(tǒng)下,能正確實(shí)現(xiàn)對(duì)龍芯1B處理器兩路千兆網(wǎng)卡的控制;網(wǎng)卡驅(qū)動(dòng)能正確,可靠地工作,以太網(wǎng)通信功能正常。

    天脈1操作系統(tǒng);龍芯1B處理器;以太網(wǎng)驅(qū)動(dòng);設(shè)計(jì)與實(shí)現(xiàn)

    MEI Tao, WANG Hongwei, MAI Xiangen

    (Basic Software Section, Aeronautical Computing Technique Research Institute, Xi’an 710068, China)

    龍芯1B[1]是基于MIPS[2]架構(gòu)的SOC[3],MIPS架構(gòu)只有LOAD/STORE訪存指令,在指令執(zhí)行的過(guò)程中要求嚴(yán)格的按4字節(jié)對(duì)齊。隨著國(guó)產(chǎn)化軟硬件的推進(jìn),龍芯處理器在控制領(lǐng)域的使用越來(lái)越廣泛。天脈1操作系統(tǒng)是一款嵌入式實(shí)時(shí)操作系統(tǒng),具有高可靠、實(shí)時(shí)性等特點(diǎn)。天脈1操作系統(tǒng)提供基于BSD4.4[4]的以太網(wǎng)協(xié)議棧功能。某項(xiàng)目需要基于天脈1操作系統(tǒng)進(jìn)行龍芯1B處理器的適配工作。龍芯1B處理器在外圍集成了兩個(gè)千兆的以太網(wǎng)控制器,需要提供獨(dú)立的網(wǎng)卡驅(qū)動(dòng),用于支持以太網(wǎng)通信功能。

    天脈1操作系統(tǒng)的網(wǎng)絡(luò)驅(qū)動(dòng)模型[5]如圖1所示。為了實(shí)現(xiàn)多設(shè)備支持,在網(wǎng)絡(luò)層協(xié)議與物理設(shè)備層之間提供了一個(gè)中間層,用于簡(jiǎn)化網(wǎng)卡驅(qū)動(dòng)的設(shè)計(jì)。中間層實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議層與具體網(wǎng)卡驅(qū)動(dòng)之間的隔離,同時(shí)實(shí)現(xiàn)驅(qū)動(dòng)與協(xié)議層之間的數(shù)據(jù)和指令的轉(zhuǎn)發(fā)。該層為具體驅(qū)動(dòng)的功能抽象,實(shí)現(xiàn)上層網(wǎng)絡(luò)協(xié)議與底層設(shè)備之間的解耦,為設(shè)備和協(xié)議提供良好的擴(kuò)展性。

    圖1 天脈1網(wǎng)絡(luò)驅(qū)動(dòng)模型

    1 網(wǎng)絡(luò)驅(qū)動(dòng)結(jié)構(gòu)

    1.1 龍芯1B以太網(wǎng)驅(qū)動(dòng)結(jié)構(gòu)設(shè)計(jì)

    龍芯1B集成兩路10/100/1 000 M自適應(yīng)的以太網(wǎng)適配器。兩路網(wǎng)卡設(shè)備均兼容IEEE802.3標(biāo)準(zhǔn)。對(duì)網(wǎng)卡PHY芯片提供千兆模式(RGMII)[6]和百兆(MII)接口。兩路網(wǎng)卡均支持半雙工/全雙工的工作模式,半雙工模式下,支持沖突檢測(cè)與重傳機(jī)制(CSMA/CD)[6]。支持CRC校驗(yàn)碼的自動(dòng)生成和校驗(yàn)的功能。

    為實(shí)現(xiàn)對(duì)龍芯1B的兩路以太網(wǎng)控制器GMAC0/GMAC1的控制和驅(qū)動(dòng)。根據(jù)使用需求配置以太網(wǎng)控制器的通信速率為百兆或者千兆模式。連接外部百兆PHY時(shí),驅(qū)動(dòng)中要復(fù)用兩路脈沖信號(hào)和一路時(shí)鐘信號(hào)。通過(guò)以太網(wǎng)控制器的GMAC寄存器和DMA寄存器,為兩路物理網(wǎng)卡設(shè)置通信使用的MAC地址和DMA地址。

    驅(qū)動(dòng)程序中通過(guò)DMA描述符實(shí)現(xiàn)網(wǎng)卡設(shè)備與上層協(xié)議之間的數(shù)據(jù)交互。驅(qū)動(dòng)中DMA描述符記錄網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存地址和狀態(tài)。網(wǎng)卡驅(qū)動(dòng)中使用不同的DMA描述符定義接收數(shù)據(jù)描述符和發(fā)送數(shù)據(jù)描述符。驅(qū)動(dòng)中定義的DMA描述符的格式如圖2所示,每一個(gè)DMA描述符包含兩個(gè)數(shù)據(jù)緩沖,兩個(gè)字節(jié)計(jì)數(shù)緩沖和兩個(gè)指向數(shù)據(jù)緩沖地址的指針。驅(qū)動(dòng)設(shè)計(jì)過(guò)程中必須保證DMA描述符的地址與系統(tǒng)總線的位寬對(duì)齊,同時(shí)網(wǎng)絡(luò)字節(jié)序與系統(tǒng)字節(jié)序相同,龍芯1B處理器默認(rèn)為小端模式。

    圖2 DMA描述符結(jié)構(gòu)

    1.2 網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

    天脈1操作系統(tǒng)下,通過(guò)內(nèi)存緩沖mbuf(memory buffer)[7]實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的管理和維護(hù)。設(shè)計(jì)實(shí)現(xiàn)的mbuf由包頭和數(shù)據(jù)緩沖構(gòu)成,數(shù)據(jù)包頭由mBlk結(jié)構(gòu)描述,數(shù)據(jù)緩沖由clBlk結(jié)構(gòu)描述。每個(gè)clBlk結(jié)構(gòu)對(duì)應(yīng)一個(gè)數(shù)據(jù)簇,數(shù)據(jù)簇表示具體的數(shù)據(jù)塊的構(gòu)成;通過(guò)mBlk索引clBlk結(jié)構(gòu),實(shí)現(xiàn)由不同的數(shù)據(jù)塊構(gòu)成網(wǎng)絡(luò)數(shù)據(jù)包的功能。網(wǎng)絡(luò)數(shù)據(jù)包的構(gòu)成如圖3所示。

    圖3 網(wǎng)絡(luò)數(shù)據(jù)包結(jié)構(gòu)圖

    網(wǎng)絡(luò)數(shù)據(jù)包的構(gòu)造中,不同的mBlk結(jié)構(gòu)通過(guò)索引同一個(gè)clBlk結(jié)構(gòu),實(shí)現(xiàn)對(duì)共享數(shù)據(jù)塊的引用。通信過(guò)程中,通過(guò)傳遞mBlk結(jié)構(gòu)實(shí)現(xiàn)數(shù)據(jù)交換的目的。同時(shí)在clBlk控制塊中維護(hù)當(dāng)前數(shù)據(jù)簇的引用計(jì)數(shù)[8],當(dāng)數(shù)據(jù)簇的引用計(jì)數(shù)為0時(shí),表示當(dāng)前數(shù)據(jù)簇不再被使用,此時(shí)釋放對(duì)應(yīng)的數(shù)據(jù)簇空間。

    2 網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)現(xiàn)

    天脈1操作系統(tǒng)下,網(wǎng)卡驅(qū)動(dòng)需要實(shí)現(xiàn)以下功能模塊:(1)網(wǎng)卡設(shè)備初始化;(2)網(wǎng)卡驅(qū)動(dòng)空間初始化;(3)網(wǎng)卡數(shù)據(jù)轉(zhuǎn)發(fā);(4)網(wǎng)卡設(shè)備啟動(dòng)。龍芯1B以太網(wǎng)控制器初始化過(guò)程如圖4所示。

    圖4 龍芯1B網(wǎng)卡初始化過(guò)程

    2.1 網(wǎng)卡設(shè)備初始化

    網(wǎng)卡設(shè)備初始化主要完成MAC層和PHY層的初始化。設(shè)置GMAC的配置參數(shù),完成網(wǎng)卡MAC基地址,DMA基地址的配置,同時(shí)完成PHY基址的設(shè)置,并將配置參數(shù)設(shè)置到網(wǎng)卡驅(qū)動(dòng)控制結(jié)構(gòu)中。保證GMAC能夠正確地訪問(wèn)對(duì)應(yīng)的PHY芯片,讀取網(wǎng)卡的MAC寄存器,鏈路狀態(tài),速率以及工作模式等信息。在設(shè)備初始化的過(guò)程中,同時(shí)包括初始化網(wǎng)卡的數(shù)據(jù)過(guò)濾策略,組播和多播策略;數(shù)據(jù)轉(zhuǎn)發(fā)控制策略以及網(wǎng)卡時(shí)鐘的初始化等工作。具體細(xì)節(jié)參考龍芯1B以太網(wǎng)控制器的用戶手冊(cè)。

    網(wǎng)卡MAC層初始化過(guò)程中,設(shè)置網(wǎng)卡設(shè)備的MAC地址。龍芯1B集成了兩個(gè)以太網(wǎng)控制器,在設(shè)置MAC地址的時(shí)候,針對(duì)不同的以太網(wǎng)控制器設(shè)置不同的MAC地址。在天脈1操作系統(tǒng)下,其中一路網(wǎng)卡實(shí)現(xiàn)通信與調(diào)試共用,通過(guò)獲取調(diào)試代理為網(wǎng)卡配置的MAC地址,實(shí)現(xiàn)MAC地址的獨(dú)立性,實(shí)現(xiàn)共用的目的;驅(qū)動(dòng)中只需為另一路網(wǎng)卡設(shè)置獨(dú)立的MAC地址,并將MAC地址信息設(shè)置到網(wǎng)卡驅(qū)動(dòng)控制結(jié)構(gòu)中。

    網(wǎng)卡驅(qū)動(dòng)設(shè)備列表中明確定義兩路網(wǎng)卡設(shè)備的配置信息,提供設(shè)備單元號(hào),設(shè)備的MAC基地址,對(duì)應(yīng)的中斷號(hào)等信息。明確指定需要啟動(dòng)的第一路網(wǎng)卡,將其作為設(shè)備列表中的第一項(xiàng)。在完成設(shè)備初始化工作后,根據(jù)使用需求啟動(dòng)第二路網(wǎng)卡。

    2.2 網(wǎng)卡驅(qū)動(dòng)空間初始化

    龍芯1B的以太網(wǎng)控制器提供兩種方式管理網(wǎng)卡的DMA描述符:(1)環(huán)式組織結(jié)構(gòu);(2)鏈?zhǔn)浇M織結(jié)構(gòu)[9]。環(huán)式組織結(jié)構(gòu)下,DMA描述符組成一個(gè)環(huán)形緩沖,最后一個(gè)緩沖的后續(xù)節(jié)點(diǎn)指向第一個(gè)節(jié)點(diǎn)。鏈?zhǔn)浇M織結(jié)構(gòu)下,DMA描述符的第二個(gè)數(shù)據(jù)緩沖的指針指向下一個(gè)DMA描述符,依次構(gòu)成一個(gè)鏈?zhǔn)浇Y(jié)構(gòu)。

    天脈1下龍芯1B網(wǎng)卡驅(qū)動(dòng),采用環(huán)式組織結(jié)構(gòu),將DMA描述符組織成環(huán)形緩沖。網(wǎng)卡驅(qū)動(dòng)空間初始化過(guò)程完成對(duì)DMA描述符緩沖空間的分配和構(gòu)造。為每個(gè)數(shù)據(jù)緩沖分配DMA空間,同時(shí)將DMA描述符組織成環(huán)形結(jié)構(gòu)。DMA描述符包括接收數(shù)據(jù)描述符和發(fā)送數(shù)據(jù)描述符。天脈1操作系統(tǒng)下,使用內(nèi)存分配服務(wù)獲得DMA描述符和數(shù)據(jù)緩沖空間。通過(guò)映射獨(dú)立的IO空間,為網(wǎng)卡驅(qū)動(dòng)所需的數(shù)據(jù)描述符結(jié)構(gòu)分配空間。網(wǎng)卡驅(qū)動(dòng)緩沖空間配置必須保證緩沖起始地址嚴(yán)格按照4 Byte對(duì)齊,否則數(shù)據(jù)訪問(wèn)過(guò)程會(huì)報(bào)告對(duì)齊異常。

    2.3 數(shù)據(jù)轉(zhuǎn)發(fā)處理

    以太網(wǎng)驅(qū)動(dòng)實(shí)現(xiàn)過(guò)程中選擇中斷方式進(jìn)行數(shù)據(jù)處理?;谔烀}1操作系統(tǒng),龍芯1B處理器網(wǎng)卡驅(qū)動(dòng)的中斷處理過(guò)程如圖5所示。

    圖5 龍芯1B網(wǎng)卡中斷處理流程

    根據(jù)中斷號(hào)判斷產(chǎn)生中斷的網(wǎng)卡設(shè)備,進(jìn)入網(wǎng)卡中斷處理過(guò)程。首先禁止當(dāng)前網(wǎng)卡的所有中斷,獲取中斷類型,判斷當(dāng)前所發(fā)生的中斷是發(fā)送中斷還是接收中斷;然后分別進(jìn)入對(duì)應(yīng)的中斷處理例程。最后更新網(wǎng)卡中斷狀態(tài)寄存器,使能網(wǎng)卡中斷。數(shù)據(jù)發(fā)送的處理過(guò)程如圖6所示。

    數(shù)據(jù)發(fā)送過(guò)程,停止對(duì)網(wǎng)卡設(shè)備隊(duì)列的處理;獲取可用的發(fā)送緩沖描述符,將需要發(fā)送的數(shù)據(jù)復(fù)制到對(duì)應(yīng)的數(shù)據(jù)緩沖;啟動(dòng)網(wǎng)卡的數(shù)據(jù)發(fā)送處理,完成數(shù)據(jù)發(fā)送,更新網(wǎng)卡的中斷狀態(tài)寄存器;恢復(fù)對(duì)網(wǎng)卡設(shè)備隊(duì)列的處理。數(shù)據(jù)接收中斷的處理過(guò)程相對(duì)簡(jiǎn)單,將網(wǎng)卡收到的數(shù)據(jù)幀的內(nèi)容直接傳遞給上層協(xié)議,更新網(wǎng)卡狀態(tài)即完成一次接收中斷的處理。為減小中斷響應(yīng)時(shí)間,具體數(shù)據(jù)包的處理通過(guò)后臺(tái)網(wǎng)絡(luò)任務(wù)完成。

    圖6 龍芯1B網(wǎng)卡發(fā)送數(shù)據(jù)過(guò)程

    2.4 網(wǎng)卡設(shè)備啟動(dòng)

    當(dāng)上述初始化工作完成,網(wǎng)卡就處于就緒狀態(tài),使能網(wǎng)卡中斷,網(wǎng)卡即可開(kāi)始正常工作。使能網(wǎng)卡中斷時(shí),需要確保正確連接了網(wǎng)卡的中斷處理程序。若網(wǎng)卡中斷號(hào)與驅(qū)動(dòng)中設(shè)置的不一致,天脈1操作系統(tǒng)會(huì)報(bào)告未預(yù)期的中斷。至此,網(wǎng)卡驅(qū)動(dòng)可正常工作。

    3 測(cè)試與驗(yàn)證

    測(cè)試過(guò)程中主要進(jìn)行了黑盒測(cè)試和壓力測(cè)試。黑盒測(cè)試驗(yàn)證網(wǎng)卡的輸入能夠獲得正確的輸出;壓力測(cè)試主要測(cè)試網(wǎng)卡驅(qū)動(dòng)工作的穩(wěn)定性。黑盒測(cè)試通過(guò)讀寫網(wǎng)卡相關(guān)寄存器的方式進(jìn)行驗(yàn)證。驗(yàn)證當(dāng)數(shù)據(jù)幀到達(dá),中斷發(fā)生時(shí)網(wǎng)卡寄存器狀態(tài)的變化。

    壓力測(cè)試選擇基于UDP/TCP協(xié)議的以太網(wǎng)通信測(cè)試案例。測(cè)試過(guò)程中在PC機(jī)端通過(guò)網(wǎng)絡(luò)抓包工具Wireshark[10]進(jìn)行以太網(wǎng)數(shù)據(jù)的捕獲,通過(guò)對(duì)比抓包工具所獲取數(shù)據(jù)包的內(nèi)容與發(fā)送數(shù)據(jù)內(nèi)容,以驗(yàn)證網(wǎng)卡驅(qū)動(dòng)功能是否正確?;赨DP協(xié)議的通信測(cè)試結(jié)果,如圖7所示。

    圖7 基于UDP的通信測(cè)試結(jié)果

    基于TCP協(xié)議的通信測(cè)試結(jié)果如圖8所示。

    圖8 基于TCP的通信測(cè)試結(jié)果

    實(shí)驗(yàn)結(jié)果證明,網(wǎng)卡驅(qū)動(dòng)能準(zhǔn)確響應(yīng)各種命令請(qǐng)求,數(shù)據(jù)處理功能正確,網(wǎng)卡工作正常。

    4 結(jié)束語(yǔ)

    本文描述了天脈1嵌入式實(shí)時(shí)操作系統(tǒng)下,基于龍芯1B處理器平臺(tái)的雙網(wǎng)卡驅(qū)動(dòng)的適配。天脈1操作系統(tǒng)是一款實(shí)時(shí)、可靠的嵌入式操作系統(tǒng),該操作系統(tǒng)提供基于BSD4.4的TCP/IP網(wǎng)絡(luò)協(xié)議棧功能,可支持基于RISC架構(gòu)的PowerPC處理器以及基于MIPS架構(gòu)的處理器平臺(tái)。龍芯1B是一款兼容于MIPS架構(gòu)的處理器平臺(tái),集成了兩路千兆以太網(wǎng)控制器。本文設(shè)計(jì)實(shí)現(xiàn)了基于天脈1操作系統(tǒng)的龍芯1B處理器雙網(wǎng)卡驅(qū)動(dòng),通過(guò)網(wǎng)卡驅(qū)動(dòng)控制兩路以太網(wǎng)設(shè)備,實(shí)現(xiàn)基于以太網(wǎng)的通信功能。通過(guò)實(shí)驗(yàn)驗(yàn)證,結(jié)果證明本文實(shí)現(xiàn)的網(wǎng)卡驅(qū)動(dòng)功能正確可靠,以太網(wǎng)通信功能正常。

    [1] 龍芯中科技術(shù)有限公司.龍芯1B處理器用戶手冊(cè)[M]. 北京:龍芯中科技術(shù)有限公司,2014.

    [2] Dominic Sweetman.MIPS體系結(jié)構(gòu)透視[M].李鵬,鮑崢,石洋,等,譯.北京:機(jī)械工業(yè)出版社,2008.

    [3] 郭兵,沈艷,林永宏,等.SoC技術(shù)原理與應(yīng)用[M].北京:清華大學(xué)出版社,2006.

    [4] Paul Venezia.Get started with FreeBSD:A brief intro for linux users[M/OL].(2014-12-06)[2015-11-10] http://www.infoworld.com/article/2858288/unix/intro-to-freebsd-for-linux-users.html.

    [5] 曹桂平.VxWorks設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解[M].北京:電子工業(yè)出版社,2011.

    [6] IEEE-SA.IEEE Standard for Ethernet,IEEE 802.3[S].USA: IEEE,2012.

    [7] Shahriyar R, Blackburn S M, Yang X, et al. Taking off the gloves with reference counting Immix[J]. Acm Sigplan Notices,2013, 48(10):93-110.

    [8] Fall K R, Stevens R W. TCP/IP詳解,卷1:協(xié)議[M].2版.北京:機(jī)械工業(yè)出版社,2012.

    [9] 樊東東,莫瀾.Linux內(nèi)核源碼剖析:TCP/IP實(shí)現(xiàn)[M].北京:機(jī)械工業(yè)出版社,2011.

    [10] Free Software Foundation,Inc.Wireshark user’s guide[M].USA:Free Software Foundation,Inc,2004.

    Design and Realization of the Network Driver for Loongson 1B in ACoreOS

    A driver for the double Gigabit Ethernet cards integrated in the Loongson 1B processor on the Tianmai embedded real-time operating system is designed and implemented. The driver supports not only simultaneous Ethernet-based debugging and communication but also one card for debugging and the other for communication. Experimental results show that the designed Ethernet driver functions correctly for the Loongson 1B double Gigabit Ethernet cards on the Tianmai embedded operating system, realizing reliable operation and normal Ethernet communication functions.

    ACoreOS RTOS; Loongson 1B processor; ethernet driver; design and realization

    2015- 12- 26

    國(guó)家某重點(diǎn)科研基金資助項(xiàng)目(MJ-S-2012-05)

    梅濤(1984-),男,碩士,工程師。研究方向:嵌入式實(shí)時(shí)操作系統(tǒng)和網(wǎng)絡(luò)。

    10.16180/j.cnki.issn1007-7820.2016.10.016

    TP316

    A

    1007-7820(2016)10-054-04

    猜你喜歡
    龍芯描述符網(wǎng)卡
    在DDS 中間件上實(shí)現(xiàn)雙冗余網(wǎng)卡切換的方法
    基于國(guó)產(chǎn)化龍芯的動(dòng)環(huán)數(shù)據(jù)采集系統(tǒng)
    基于結(jié)構(gòu)信息的異源遙感圖像局部特征描述符研究
    Server 2016網(wǎng)卡組合模式
    Linux單線程并發(fā)服務(wù)器探索
    利用CNN的無(wú)人機(jī)遙感影像特征描述符學(xué)習(xí)
    “龍芯之父”胡偉武
    龍芯發(fā)布新一代處理器產(chǎn)品
    挑戰(zhàn)Killer網(wǎng)卡Realtek網(wǎng)游專用Dragon網(wǎng)卡
    基于PDIUSBD12的USB接口設(shè)計(jì)應(yīng)用研究
    秭归县| 临漳县| 大余县| 姜堰市| 辽阳市| 澜沧| 高州市| 海兴县| 桃源县| 栾城县| 专栏| 马边| 镇康县| 祁东县| 瑞金市| 乌拉特前旗| 常宁市| 武川县| 贵德县| 新闻| 聂荣县| 宁城县| 沁源县| 平武县| 林甸县| 张掖市| 重庆市| 深泽县| 乐亭县| 车险| 中方县| 庆云县| 瑞金市| 休宁县| 吴川市| 四会市| 霸州市| 涡阳县| 屏山县| 瑞昌市| 新余市|