• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Docker的嵌入式軟件測(cè)試研究

      2020-02-04 07:12:24李耀周亞明羅輝黎毅輝
      電子技術(shù)與軟件工程 2020年12期
      關(guān)鍵詞:鏡像文件宿主機(jī)測(cè)試環(huán)境

      李耀 周亞明 羅輝 黎毅輝

      (威勝信息技術(shù)股份有限公司 湖南省長(zhǎng)沙市 410205)

      嵌入式軟件是運(yùn)行在嵌入式系統(tǒng)上的一組針對(duì)特定硬件而設(shè)計(jì)的應(yīng)用程序,這些應(yīng)用程序通常是為了滿足客戶特定需求而預(yù)先定義的一套專用的軟件,它不僅受制于特定的硬件資源限制,比如:CPU 頻率、內(nèi)存空間、存儲(chǔ)空間等等,而且其功能還受限于接入嵌入式系統(tǒng)的外圍硬件電路、元器件等所帶來(lái)的影響。為實(shí)現(xiàn)電子設(shè)備設(shè)定的功能、成本、體積、功耗等要求,嵌入式軟件必須強(qiáng)調(diào)軟硬件的協(xié)同性、可靠性和可裁剪性,因此,針對(duì)嵌入式軟件的測(cè)試遠(yuǎn)比傳統(tǒng)軟件的測(cè)試要更加復(fù)雜和困難。本文主要是結(jié)合嵌入式軟件的特點(diǎn),討論如何利用Docker 容器技術(shù)具有的一些優(yōu)勢(shì)和特性對(duì)傳統(tǒng)嵌入式軟件測(cè)試過(guò)程中被測(cè)試對(duì)象的交付、安裝和部署方法,對(duì)嵌入式軟件測(cè)試環(huán)境搭建,測(cè)試工具使用等方面進(jìn)行的改進(jìn)和優(yōu)化。最后通過(guò)在臺(tái)區(qū)智能終端的應(yīng)用,驗(yàn)證基于Docker 的嵌入式軟件測(cè)試可有效降低測(cè)試復(fù)雜性、提升測(cè)試效率和提高資源利用率。

      1 嵌入式軟件測(cè)試面臨的問(wèn)題

      隨著物聯(lián)網(wǎng)時(shí)代的到來(lái),以及設(shè)備智能化的推廣應(yīng)用,嵌入式軟件的質(zhì)量和可靠性日益成為人們關(guān)注的焦點(diǎn),與之相關(guān)的測(cè)試技術(shù)也逐漸受到研發(fā)人員和檢測(cè)機(jī)構(gòu)的重視。由于嵌入式軟件的應(yīng)用越來(lái)越廣泛和深入,使得這些軟件的規(guī)模與復(fù)雜度不斷增長(zhǎng),不僅導(dǎo)致開(kāi)發(fā)難度加大,而且針對(duì)嵌入式軟件的測(cè)試也變得越來(lái)越復(fù)雜。但傳統(tǒng)的軟件測(cè)試技術(shù)還沒(méi)有完全適應(yīng)這種變化,已凸顯出一些不足之處:

      1.1 嵌入式軟件測(cè)試難度越來(lái)越大

      嵌入式軟件測(cè)試是一項(xiàng)復(fù)雜性高、 綜合性強(qiáng)的工作,不僅受制于特定硬件設(shè)計(jì),而且受限于系統(tǒng)資源,需要測(cè)試人員具備較高的業(yè)務(wù)水平和較強(qiáng)的專業(yè)知識(shí),才能發(fā)現(xiàn)被測(cè)對(duì)象可能存在的缺陷。同時(shí),由于被測(cè)試嵌入式軟件的交付大多是基于可執(zhí)行程序或軟件壓縮包方式進(jìn)行,需要手動(dòng)搭建測(cè)試環(huán)境并配置各種所需的依賴關(guān)系,操作起來(lái)十分繁瑣。隨著電子設(shè)備的功能不斷增多,其中的嵌入式軟件規(guī)模與復(fù)雜度還在不斷提高,依賴關(guān)系和包含的組件也越來(lái)越復(fù)雜。

      1.2 嵌入式軟件測(cè)試效率跟不上發(fā)布

      隨著開(kāi)發(fā)迭代速度的加快,嵌入式軟件更新頻率已由原來(lái)以月、年為單位發(fā)展到現(xiàn)在的以天、周為單位,但嵌入式軟件測(cè)試環(huán)境搭建復(fù)雜且不靈活,測(cè)試不同的軟件或版本時(shí),需要重復(fù)搭建多套測(cè)試環(huán)境,設(shè)置不同的相關(guān)參數(shù),搭配各種不同的外接設(shè)備和檢測(cè)工具,測(cè)試人員需要進(jìn)行大量復(fù)雜的手工操作,有時(shí)還會(huì)因此產(chǎn)生錯(cuò)誤或遺漏。測(cè)試的軟件質(zhì)量以及項(xiàng)目進(jìn)度往往比預(yù)計(jì)的差很多,因而導(dǎo)致測(cè)試效率跟不上軟件發(fā)布的節(jié)奏。

      1.3 嵌入式軟件測(cè)試環(huán)境利用率低

      盡管搭建嵌入式軟件測(cè)試的環(huán)境非常繁瑣,但一套測(cè)試環(huán)境往往沒(méi)辦法并行測(cè)試多個(gè)不同版本或功能的嵌入式軟件,因?yàn)榇蟛糠智度胧杰浖紩?huì)獨(dú)占系統(tǒng)的資源,同時(shí)彼此之間還會(huì)相互影響,這就導(dǎo)致搭建出來(lái)的測(cè)試環(huán)境利用率并不高,在相關(guān)硬件和配套外接設(shè)備都較為短缺時(shí),這種情況更是雪上加霜。雖然還可以基于虛擬機(jī)方式搭建嵌入式軟件測(cè)試環(huán)境,但這項(xiàng)技術(shù)本身非常消耗宿主機(jī)的資源,從而又會(huì)導(dǎo)致系統(tǒng)資源利用率降低。

      圖1:Docker 的總體架構(gòu)

      圖2:嵌入式軟件測(cè)試環(huán)境

      圖3:Docker 環(huán)境安裝驗(yàn)證

      圖4:容器并行測(cè)試

      目前面臨的測(cè)試環(huán)境搭建復(fù)雜、測(cè)試效率不高、資源利用率較低的問(wèn)題已成為嵌入式軟件測(cè)試亟待解決的問(wèn)題。在此情況下,結(jié)合嵌入式軟件的特點(diǎn),研究如何利用新的測(cè)試技術(shù)和方法來(lái)構(gòu)建嵌入式軟件測(cè)試過(guò)程,對(duì)降低測(cè)試復(fù)雜度、提升測(cè)試效率和提高測(cè)試資源利用率具有十分重要的意義。

      2 嵌入式軟件測(cè)試的相關(guān)研究

      由于存在對(duì)硬件有較高的依賴性、受限于系統(tǒng)資源不足、開(kāi)發(fā)環(huán)境與運(yùn)行環(huán)境不一致等問(wèn)題,針對(duì)嵌入式軟件的測(cè)試通常會(huì)比傳統(tǒng)的軟件測(cè)試更加復(fù)雜。國(guó)外研究嵌入式軟件測(cè)試技術(shù)開(kāi)始于上個(gè)世紀(jì)七十年代,Robert L.Glass 在1980年發(fā)表的一篇文章[1],論述了嵌入式軟件測(cè)試技術(shù)落后于傳統(tǒng)軟件測(cè)試技術(shù)的原因并給出了一些解決方案,對(duì)嵌入式軟件測(cè)試技術(shù)的發(fā)展影響深遠(yuǎn)。國(guó)內(nèi)研究首先是在國(guó)防領(lǐng)域開(kāi)始對(duì)嵌入式軟件測(cè)試技術(shù)和工具進(jìn)行的。針對(duì)艦船嵌入式軟件的特點(diǎn),韓新宇等人[2]提出測(cè)試用例自動(dòng)驅(qū)動(dòng)方案,并基于此方案設(shè)計(jì)出測(cè)試用例自動(dòng)驅(qū)動(dòng)平臺(tái)。王浩宇等人[3]在雷達(dá)嵌入式軟件測(cè)試領(lǐng)域?qū)崿F(xiàn)對(duì)Cuttle ISE 的應(yīng)用。之后肖永健等人[4]研究出一種基于軟件故障注入的邏輯覆蓋測(cè)試平臺(tái)。盡管嵌入式軟件測(cè)試技術(shù)已得到廣泛應(yīng)用,但目前國(guó)內(nèi)對(duì)嵌入式軟件測(cè)試技術(shù)和工具的研究仍處于起步階段,特別是很少考慮嵌入式軟件測(cè)試環(huán)境搭建復(fù)雜、測(cè)試效率不高和資源利用率低的問(wèn)題,這些問(wèn)題卻是影響嵌入式軟件開(kāi)發(fā)進(jìn)度和成本的關(guān)鍵因素,仍需要進(jìn)行深入的研究。

      3 容器技術(shù)及工具的研究

      3.1 容器技術(shù)的介紹

      容器技術(shù)(Container)是一種新型的虛擬化技術(shù),它是操作系統(tǒng)中一組受到資源限制且彼此間相互隔離的獨(dú)立進(jìn)程。相比傳統(tǒng)的虛擬機(jī)技術(shù),容器技術(shù)資源利用率更高效、軟件封裝性更簡(jiǎn)單、軟件遷移和擴(kuò)展更方便。Docker 是依托于Linux 內(nèi)核的容器技術(shù)而發(fā)展起來(lái)的一種目前主流的容器引擎,它將底層系統(tǒng)、依賴環(huán)境、應(yīng)用程序等進(jìn)行統(tǒng)一打包,并形成一個(gè)整體的鏡像文件,最后作為一個(gè)獨(dú)立的容器部署在其他的平臺(tái)或宿主機(jī)上。

      3.2 Docker的總體架構(gòu)

      Docker 主要是實(shí)現(xiàn)應(yīng)用軟件層的虛擬化,通過(guò)沙盒機(jī)制可以保證在容器中運(yùn)行的任何應(yīng)用軟件都是獨(dú)立的,與外界的軟件接口都是可控的,從而保障了數(shù)據(jù)的安全性和運(yùn)行的可靠性。不同于其他虛擬化技術(shù),Docker 直接運(yùn)行在宿主機(jī)的操作系統(tǒng)之上,底層硬件并沒(méi)有虛擬化,因而可用最小的硬件開(kāi)銷達(dá)到更高的計(jì)算能力,這也為Docker 在嵌入式系統(tǒng)上應(yīng)用提供了理論依據(jù)和技術(shù)可行性。如圖1 所示,Docker 的架構(gòu)是基于Client-Server 模式設(shè)計(jì)的,服務(wù)端啟動(dòng)后會(huì)在宿主機(jī)上運(yùn)行一個(gè)守護(hù)進(jìn)程,客戶端通過(guò)這個(gè)守護(hù)進(jìn)程來(lái)遠(yuǎn)程控制Docker 容器的創(chuàng)建、運(yùn)行、停止、刪除等操作。

      3.3 Docker的文件系統(tǒng)

      Docker 的鏡像文件是基于分層結(jié)構(gòu)設(shè)計(jì)的,但其中并沒(méi)有包含Linux 內(nèi)核,只包含了運(yùn)行所需要的文件系統(tǒng)結(jié)構(gòu)。Docker 容器是鏡像文件的運(yùn)行態(tài)體現(xiàn),Docker 容器的文件系統(tǒng)大部分來(lái)自鏡像文件,其他為鏡像新建的內(nèi)容可分為初始層和讀寫(xiě)層。初始層主要包括在初始化容器環(huán)境時(shí)產(chǎn)生的相關(guān)默認(rèn)文件,而Docker 容器內(nèi)的進(jìn)程只能對(duì)讀寫(xiě)層擁有寫(xiě)權(quán)限,其他層對(duì)進(jìn)程而言都是只讀的。這樣從操作系統(tǒng)層面上就避免了軟件被誤刪或破壞的可能性,即便被強(qiáng)制破壞,也可以通過(guò)Docker 的初始化命令恢復(fù)到初始狀態(tài)。Docker 還使用了寫(xiě)入時(shí)復(fù)制技術(shù)(Copy-On-Write),所有運(yùn)行中的容器可以先共享一個(gè)基礎(chǔ)文件系統(tǒng),當(dāng)需要向文件系統(tǒng)進(jìn)行寫(xiě)操作時(shí),就引導(dǎo)它寫(xiě)到與該容器相關(guān)的另一個(gè)特定文件系統(tǒng)中,從而避免意外刪除或修改基礎(chǔ)文件系統(tǒng),同時(shí)也避免通過(guò)文件系統(tǒng)改變自身容器以外的內(nèi)容。

      3.4 Docker的隔離與安全

      不同于傳統(tǒng)意義上的虛擬化技術(shù),應(yīng)用軟件的隔離性與安全性是在操作系統(tǒng)之上由Docker 引擎來(lái)提供保證的。由于應(yīng)用軟件運(yùn)行在容器中,并與其他容器中的應(yīng)用軟件和根文件系統(tǒng)進(jìn)行隔離,因而宿主機(jī)的系統(tǒng)基本不會(huì)被應(yīng)用軟件或異常操作破壞。如果應(yīng)用軟件因受到外部攻擊而癱瘓,只需要重啟容器或啟動(dòng)一個(gè)新的容器即可恢復(fù),并不需要重新啟動(dòng)宿主機(jī),也不會(huì)影響到其他容器的正常運(yùn)行。我們可以用Docker 在不同的容器中并行運(yùn)行不同的應(yīng)用軟件,如果不再需要某個(gè)應(yīng)用軟件,就可以通過(guò)刪除容器中的這個(gè)應(yīng)用軟件來(lái)完成,并且操作系統(tǒng)上不會(huì)因此留下任何臨時(shí)文件。此外,Docker 還能確保每個(gè)應(yīng)用軟件只能使用分配給它的資源,包括CPU、內(nèi)存、網(wǎng)絡(luò)、存儲(chǔ)空間等,不會(huì)因?yàn)槌绦蛉毕莼驉阂庑袨檎加玫较到y(tǒng)全部的可用資源,避免了因此導(dǎo)致系統(tǒng)性能降低或被拖垮。

      4 Docker對(duì)嵌入式軟件測(cè)試的改進(jìn)

      4.1 降低嵌入式軟件測(cè)試的復(fù)雜性

      測(cè)試人員不再需要為測(cè)試某個(gè)版本的應(yīng)用軟件重復(fù)安裝操作系統(tǒng)、配置運(yùn)行環(huán)境和設(shè)置相關(guān)參數(shù),這些手動(dòng)或半自動(dòng)的復(fù)雜操作,極容易人為引入一些操作錯(cuò)誤或遺漏某些步驟?;贒ocker 鏡像的嵌入式軟件測(cè)試已將這些復(fù)雜的配置過(guò)程封裝起來(lái),不僅減少了重復(fù)的操作,還讓測(cè)試過(guò)程的整體復(fù)雜性最小化。

      4.2 提高嵌入式軟件測(cè)試環(huán)境利用率

      基于Docker 的嵌入式軟件測(cè)試可使得一套測(cè)試環(huán)境能夠同時(shí)用于多個(gè)不同軟件的測(cè)試中,而且彼此之間并不會(huì)受到太多相互影響。特別是在樣機(jī)測(cè)試階段,相關(guān)的硬件和配套的外圍設(shè)備都較為短缺,此時(shí)不僅可以提高測(cè)試環(huán)境和專用設(shè)備的利用率,而且還降低了為搭建多套測(cè)試環(huán)境所產(chǎn)生的費(fèi)用。

      4.3 提升嵌入式軟件的測(cè)試效率

      由于不再需要重復(fù)搭建多套測(cè)試環(huán)境、也不需要準(zhǔn)備過(guò)多的硬件檢測(cè)設(shè)備,只需要通過(guò)容器管理工具將包含測(cè)試對(duì)象的Docker鏡像文件部署到測(cè)試環(huán)境中,就可以很快在相關(guān)的應(yīng)用場(chǎng)景中開(kāi)始測(cè)試。因而嵌入式軟件測(cè)試的效率得到極大提升,特別是在做回歸測(cè)試和現(xiàn)場(chǎng)驗(yàn)證時(shí),相比傳統(tǒng)的方式更有優(yōu)勢(shì)。

      5 基于Docker的嵌入式軟件測(cè)試

      臺(tái)區(qū)智能終端是一種由我司研制的用于配網(wǎng)供用電信息采集、電能表和各類傳感器數(shù)據(jù)收集、設(shè)備狀態(tài)監(jiān)測(cè)等功能于一體的智能化電力電子設(shè)備。它的核心主板硬件提供了ARM Cortex-A7 架構(gòu)四核CPU、2GB DDR3L 內(nèi)存、4GB eMMC 存儲(chǔ)器,目前搭載的操作系統(tǒng)是ARM 32bit 版本的Ubuntu16.04 發(fā)行版。同時(shí)配有4 個(gè)UART 接口、載波模塊、時(shí)鐘芯片、4G 模塊、GPIO、以太網(wǎng)等豐富的接口和外接器件。如圖2 所示,以下將基于臺(tái)區(qū)智能終端搭建一整套嵌入式軟件測(cè)試環(huán)境。臺(tái)區(qū)智能終端安裝在電氣柜的左上角,下方通過(guò)RS485 接入了漏電保護(hù)器、智能開(kāi)關(guān)、三相電能表、末端感知裝置及負(fù)載,臺(tái)區(qū)智能終端的操作系統(tǒng)上部署了Docker,同時(shí)通過(guò)自編寫(xiě)的C/C++應(yīng)用程序,實(shí)現(xiàn)數(shù)據(jù)的采集與存儲(chǔ)。

      5.1 Docker環(huán)境的搭建

      首先通過(guò)以太網(wǎng)登陸到臺(tái)區(qū)智能終端的Linux 控制臺(tái),并在設(shè)備的宿主機(jī)中安裝Docker 服務(wù)??梢酝ㄟ^(guò)Docker 官方指導(dǎo)文檔進(jìn)行遠(yuǎn)程安裝Docker 服務(wù),具體操作命令為:“curl -fsSL get.docker.com -o get-docker.sh”和“sh get-docker. sh”,安裝完成后如圖3 所示。可以通過(guò)命令“docker exec -it c_data /bin/bash”進(jìn)入運(yùn)行中的Docker 容器,查看應(yīng)用程序在容器內(nèi)部的執(zhí)行情況。另外,還可以在PC 主機(jī)的交叉編譯環(huán)境下編譯ARM 版本的應(yīng)用程序,再采用Dockerfile 的方式將生成可執(zhí)行程序和運(yùn)行所需的配置文件整合打包進(jìn)Docker 鏡像文件中,最后通過(guò)部署該鏡像文件到啟動(dòng)Docker容器中,就能實(shí)現(xiàn)自己編寫(xiě)的應(yīng)用程序在Docker 容器中運(yùn)行。

      5.2 容器并行測(cè)試驗(yàn)證

      使用Docker 主要就是為了能夠在不同的容器中同時(shí)運(yùn)行多個(gè)應(yīng)用程序,這樣就可以提高嵌入式軟件測(cè)試環(huán)境的利用率,提升嵌入式軟件測(cè)試的效率。如圖4 所示,以下利用自己編寫(xiě)的三個(gè)嵌入式程序打包生成的Docker 鏡像:數(shù)據(jù)中心c_data、數(shù)據(jù)采集c_base和IEC104 協(xié)議c_104,連同搭載Docker 的臺(tái)區(qū)智能終端組成一套測(cè)試驗(yàn)證環(huán)境。驗(yàn)證的思路是先后啟動(dòng)容器加載這三個(gè)Docker 鏡像,分別利用數(shù)據(jù)采集c_base 完成數(shù)據(jù)的收集,利用數(shù)據(jù)中心c_data 完成數(shù)據(jù)的存儲(chǔ),利用IEC104 協(xié)議c_104 完成數(shù)據(jù)上送到主站。由于Docker 下的容器運(yùn)行采用的是沙盒機(jī)制,因而各容器是互相獨(dú)立的,并且互不影響。首先由數(shù)據(jù)采集c_base 收集外接設(shè)備的各類電參量實(shí)時(shí)數(shù)據(jù),并寫(xiě)入數(shù)據(jù)到數(shù)據(jù)中心c_data,交由數(shù)據(jù)中心c_data 完成數(shù)據(jù)的存儲(chǔ)。此時(shí)主站可通過(guò)IEC104 協(xié)議c_104 同時(shí)向臺(tái)區(qū)智能終端召測(cè)所需數(shù)據(jù),然后由IEC104 協(xié)議c_104 向數(shù)據(jù)中心c_data 發(fā)出讀取數(shù)據(jù)的命令,并由數(shù)據(jù)中心c_data 完成讀取數(shù)據(jù)的返回。三個(gè)嵌入式程序分別安裝在不同的容器中,相互之間收發(fā)數(shù)據(jù)都只允許通過(guò)TCP 或UDP 的網(wǎng)絡(luò)連接進(jìn)行。

      利用Docker 容器技術(shù),可以實(shí)現(xiàn)運(yùn)行于不同環(huán)境下的嵌入式程序在同一臺(tái)宿主機(jī)中共存,Docker 通過(guò)隔離底層操作系統(tǒng)與應(yīng)用軟件,做到了嵌入式軟件運(yùn)行環(huán)境的統(tǒng)一,不僅降低了嵌入式軟件開(kāi)發(fā)過(guò)程中依賴運(yùn)行環(huán)境所做的大量移植工作,而且通過(guò)Docker的核心組件還可以為應(yīng)用軟件的組合、鏡像文件的制作提供便利的工具和方案。

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

      嵌入式軟件因其架構(gòu)的特殊性,測(cè)試起來(lái)并不像傳統(tǒng)軟件那樣簡(jiǎn)單容易。而隨著物聯(lián)網(wǎng)的蓬勃發(fā)展、各類設(shè)備功能的日益強(qiáng)大,業(yè)務(wù)需求的不斷增加,也導(dǎo)致針對(duì)嵌入式軟件的測(cè)試愈發(fā)復(fù)雜。在眾多測(cè)試方案中,基于Docker 的嵌入式軟件測(cè)試優(yōu)勢(shì)明顯,不僅占用系統(tǒng)資源少、運(yùn)行環(huán)境統(tǒng)一,而且啟動(dòng)速度快、安裝部署方便,大幅降低測(cè)試人員的工作量。通過(guò)在臺(tái)區(qū)智能終端上驗(yàn)證基于Docker 的嵌入式軟件測(cè)試環(huán)境,充分挖掘出其應(yīng)用潛能,并為降低嵌入式軟件測(cè)試的復(fù)雜度,提升嵌入式軟件的測(cè)試效率,提高測(cè)試環(huán)境和測(cè)試資源的利用率帶來(lái)幫助。

      猜你喜歡
      鏡像文件宿主機(jī)測(cè)試環(huán)境
      全數(shù)字仿真測(cè)試環(huán)境在航天軟件測(cè)試中的應(yīng)用研究
      雷達(dá)航跡處理測(cè)試環(huán)境構(gòu)建方法研究
      科技視界(2019年10期)2019-09-02 03:22:27
      網(wǎng)絡(luò)設(shè)備自動(dòng)化測(cè)試設(shè)計(jì)與實(shí)現(xiàn)
      沒(méi)光驅(qū)不要緊 裝個(gè)免費(fèi)虛擬的
      虛擬網(wǎng)絡(luò)實(shí)驗(yàn)室在農(nóng)村職校計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)教學(xué)中的應(yīng)用研究
      嵌入式計(jì)算機(jī)軟件測(cè)試關(guān)鍵技術(shù)的思考
      用RamOS降低公用機(jī)的維護(hù)工作量
      嵌入式計(jì)算機(jī)軟件測(cè)試關(guān)鍵技術(shù)研究
      Win7升級(jí)Win10教程
      電腦迷(2015年9期)2015-05-30 22:08:35
      負(fù)離子紡織品檢測(cè)方法分析
      依安县| 博客| 历史| 桃源县| 嘉鱼县| 五常市| 无锡市| 惠水县| 类乌齐县| 瑞安市| 勐海县| 土默特右旗| 鹤山市| 五寨县| 鄢陵县| 酒泉市| 靖边县| 襄垣县| 安吉县| 龙川县| 左贡县| 临洮县| 皋兰县| 西吉县| 开江县| 千阳县| 镇巴县| 丹凤县| 阿拉尔市| 内丘县| 育儿| 新宾| 洛隆县| 宁国市| 商河县| 黑河市| 天镇县| 甘孜| 华蓥市| 朔州市| 定边县|