欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種嵌入式系統(tǒng)監(jiān)控及復(fù)位控制方法

文檔序號(hào):6549863閱讀:270來(lái)源:國(guó)知局
一種嵌入式系統(tǒng)監(jiān)控及復(fù)位控制方法
【專利摘要】本發(fā)明涉及一種系統(tǒng)監(jiān)控及復(fù)位控制方法,應(yīng)用于各種嵌入式操作系統(tǒng)及設(shè)備,用以提高系統(tǒng)及設(shè)備運(yùn)行的安全性、可靠性和穩(wěn)定性。本發(fā)明方法利用系統(tǒng)軟件和CPLD邏輯代碼相結(jié)合的方式來(lái)產(chǎn)生喂狗信號(hào),同時(shí)結(jié)合復(fù)位機(jī)制,可以使系統(tǒng)初始狀態(tài)更加確定,系統(tǒng)復(fù)位更加徹底。
【專利說(shuō)明】一種嵌入式系統(tǒng)監(jiān)控及復(fù)位控制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種系統(tǒng)監(jiān)控及復(fù)位控制方法,應(yīng)用于各種嵌入式操作系統(tǒng)及設(shè)備,用以提高系統(tǒng)及設(shè)備運(yùn)行的安全性、可靠性和穩(wěn)定性。
【背景技術(shù)】
[0002]WDT(watch dog timer)是最常見(jiàn)的系統(tǒng)異常監(jiān)控方法,其中硬件電路一般采用MAX706等看門(mén)狗控制芯片,喂狗信號(hào)WDI —般有如下兩種產(chǎn)生方法。
[0003]第一種是直接利用系統(tǒng)軟件來(lái)產(chǎn)生周期性的喂狗信號(hào)。該方法的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,喂狗信號(hào)是否正常直接反映了操作系統(tǒng)軟件是否正常工作。但是,它的缺點(diǎn)非常致命。因?yàn)镸AX706等看門(mén)狗控制芯片的喂狗信號(hào)一般需要在1.6秒之內(nèi)從高到低,或者從低到高產(chǎn)生跳變,一旦操作系統(tǒng)中的任務(wù)調(diào)度比較繁忙的話,經(jīng)常會(huì)保證不了在1.6秒之內(nèi)使喂狗信號(hào)產(chǎn)生跳變,從而會(huì)導(dǎo)致由于WDT定時(shí)器溢出而使系統(tǒng)復(fù)位的誤監(jiān)控情況發(fā)生。
[0004]第二種是直接利用CPLD邏輯代碼來(lái)產(chǎn)生喂狗信號(hào)。該方法的優(yōu)點(diǎn)是可以保證喂狗信號(hào)的精準(zhǔn),不會(huì)發(fā)生由于操作系統(tǒng)任務(wù)調(diào)度不及時(shí)而造成的喂狗信號(hào)產(chǎn)生不精準(zhǔn)的問(wèn)題,同時(shí),用CPLD來(lái)產(chǎn)生喂狗信號(hào)也可以減輕操作系統(tǒng)的負(fù)擔(dān)。這一種方法的缺點(diǎn)是不能直接監(jiān)控操作系統(tǒng)的運(yùn)行狀況,它只能直接監(jiān)控系統(tǒng)中CPLD邏輯代碼的運(yùn)行狀況,因?yàn)椴僮飨到y(tǒng)和CPLD邏輯是各自獨(dú)立的,其中一種運(yùn)行出問(wèn)題,不代表另外一種也一定會(huì)出問(wèn)題。

【發(fā)明內(nèi)容】

[0005]本發(fā)明的目的是為了克服上述【背景技術(shù)】的不足之處,提供一種系統(tǒng)監(jiān)控及復(fù)位控制方法,利用系統(tǒng)軟件和CPLD邏輯代碼相結(jié)合的方式來(lái)產(chǎn)生喂狗信號(hào),同時(shí)結(jié)合復(fù)位機(jī)制,不但可以避免上述兩種方式中問(wèn)題,同時(shí)還可以使系統(tǒng)初始狀態(tài)更加確定,系統(tǒng)復(fù)位更加徹底。
[0006]本發(fā)明的發(fā)明目的是通過(guò)如下技術(shù)手段實(shí)現(xiàn)的。
[0007]—種系統(tǒng)監(jiān)控及復(fù)位控制方法,該方法使用的硬件部分包括CPLD芯片、CPU芯片、看門(mén)狗控制芯片及其他外圍硬件電路,該方法中看門(mén)狗控制芯片的喂狗信號(hào)WDI采用系統(tǒng)軟件和CPLD邏輯代碼相結(jié)合的方式來(lái)產(chǎn)生,包括以下步驟:
(I)CPLD邏輯代碼產(chǎn)生周期小于3.2秒的方波信號(hào)SI,SI通過(guò)一個(gè)看門(mén)狗使能控制位FLAGl和一個(gè)CPU喂狗信號(hào)是否正常標(biāo)識(shí)位FLAG2共同控制以后,再經(jīng)CPLD的一個(gè)I/O管腳Jl輸出給看門(mén)狗控制芯片的喂狗輸入管腳;其中,看門(mén)狗使能控制位FLAGl默認(rèn)不使能,關(guān)閉看門(mén)狗,CPU操作系統(tǒng)初始化完成以后再由軟件動(dòng)態(tài)使能該控制位FLAG1,打開(kāi)看門(mén)狗。
[0008](2)按如下策略控制CPU喂狗信號(hào)是否正常標(biāo)識(shí)位FLAG2:
操作系統(tǒng)軟件通過(guò)CPU的一個(gè)GP1管腳向CPLD的一個(gè)I/O管腳J2輸入周期為T(mén)的方波信號(hào)S2,在CPLD邏輯代碼中判斷S2是否在正常跳變,如果跳變正常,F(xiàn)LAG2置為正常,否則置為異常;考慮到CPU操作系統(tǒng)的調(diào)度工作量和系統(tǒng)監(jiān)控效果,T 一般大于3.2S,小于6S為宜;
FLAGl使能,F(xiàn)LAG2正常時(shí),SI正常輸出給看門(mén)狗控制芯片的喂狗輸入管腳;FLAG1不使能或者FLAGl使能,F(xiàn)LAG2異常時(shí),SI停止輸出給看門(mén)狗控制芯片的喂狗輸入管腳;
這種嵌套產(chǎn)生喂狗信號(hào)的方法既監(jiān)控了 CPLD邏輯代碼的實(shí)時(shí)運(yùn)行狀態(tài),也監(jiān)控了操作系統(tǒng)軟件的實(shí)時(shí)運(yùn)行狀態(tài),同時(shí)S2的產(chǎn)生周期T可根據(jù)系統(tǒng)的實(shí)際負(fù)荷情況進(jìn)行靈活調(diào)整,從而保證操作系統(tǒng)能夠調(diào)度及時(shí)。
[0009](3) CPU操作系統(tǒng)復(fù)位控制:
看門(mén)狗控制芯片的復(fù)位輸出管腳W_R接入CPLD的I/O管腳J3,設(shè)備的手動(dòng)復(fù)位按鈕SW并聯(lián)接入看門(mén)狗控制芯片的手動(dòng)復(fù)位管腳MR,這樣看門(mén)狗芯片因喂狗信號(hào)不正常而復(fù)位、手動(dòng)按鈕復(fù)位和設(shè)備上電啟動(dòng)時(shí)J3上都會(huì)輸入復(fù)位信號(hào)RST,RST的低電平寬度為200毫秒,之后會(huì)自行跳變到高電平;CPLD邏輯代碼利用RST信號(hào)給相應(yīng)的寄存器賦予確定的初值,其中,CPLD的喂狗輸出管腳Jl上賦予高阻態(tài)初值,看門(mén)狗使能控制位FLAGl —定要不使能,否則會(huì)造成系統(tǒng)啟動(dòng)過(guò)程中由于CPU還未來(lái)得及產(chǎn)生S2時(shí),Jl上的喂狗信號(hào)不正常而造成系統(tǒng)不斷重啟。同時(shí)在CPLD邏輯代碼中定義寄存器REG用于系統(tǒng)軟件控制各硬件芯片的復(fù)位,各硬件芯片的復(fù)位信號(hào)RSTO,RSTl等由J3上的復(fù)位信號(hào)RST和系統(tǒng)軟件復(fù)位控制位REG共同控制,任意一種有效都會(huì)控制CPU芯片及操作系統(tǒng)和其他硬件芯片的復(fù)位。
[0010]此復(fù)位機(jī)制中由于手動(dòng)復(fù)位按鈕SW并聯(lián)接入看門(mén)狗控制芯片的手動(dòng)復(fù)位管腳MR,而不是直接接入CPLD的I/O管腳,這樣就可以利用看門(mén)狗控制芯片的防抖動(dòng)特性,避免CPLD邏輯代碼錯(cuò)誤的將SW上的抖動(dòng)當(dāng)成復(fù)位操作。同時(shí)利用看門(mén)狗芯片輸出的復(fù)位信號(hào)RST來(lái)賦予相應(yīng)的CPLD寄存器初值,可以使相應(yīng)的初始狀態(tài)更加確定,避免了由于沒(méi)有初始狀態(tài)而引發(fā)的一些異常問(wèn)題發(fā)生。各硬件芯片的復(fù)位操作由看門(mén)狗芯片輸出的復(fù)位信號(hào)RST和軟件復(fù)位控制位REG共同控制,可以使復(fù)位操作更加徹底和更加靈活。
[0011]在上述技術(shù)方案中,發(fā)明方法硬件部分包括CPLD芯片、看門(mén)狗控制芯片MAX706、CPU芯片,所述CPU芯片通過(guò)一個(gè)GP1管腳與CPLD的一個(gè)I/O管腳J2相連,CPLD芯片的I/O管腳Jl與MAX706芯片的WDI輸入管腳相連,設(shè)備的手動(dòng)復(fù)位按鈕SW通過(guò)4.7K的上拉電阻后并聯(lián)接入MAX706芯片的手動(dòng)復(fù)位按鈕MR, MAX706芯片的RST管腳與CPLD的I/O管腳J3相連,CPLD的I/O管腳J4和I/O管腳J5別與CPU芯片及其他外圍硬件電路相連。
[0012]本發(fā)明一種系統(tǒng)監(jiān)控及復(fù)位控制方法,該方法基于CPLD邏輯、硬件電路和軟件控制策略,可以實(shí)現(xiàn)對(duì)實(shí)時(shí)運(yùn)行的系統(tǒng)是否正常運(yùn)行進(jìn)行監(jiān)控,同時(shí)也提供一種系統(tǒng)上電及系統(tǒng)異常復(fù)位控制機(jī)制,可有效提高嵌入式系統(tǒng)及設(shè)備運(yùn)行的安全性、可靠性和穩(wěn)定性。
【專利附圖】

【附圖說(shuō)明】
[0013]圖1為本發(fā)明中喂狗信號(hào)WDI及復(fù)位信號(hào)產(chǎn)生硬件連接示意圖。
[0014]圖2為本發(fā)明喂狗信號(hào)WDI產(chǎn)生流程圖。
【具體實(shí)施方式】
[0015]下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述。
[0016]如圖1所示,本實(shí)施例硬件部分包括CPLD芯片、看門(mén)狗控制芯片MAX706、CPU芯片,所述CPU芯片通過(guò)一個(gè)GP1管腳輸出周期為T(mén)的方波信號(hào)S2給CPLD的一個(gè)I/O管腳J2,CPLD邏輯產(chǎn)生的喂狗信號(hào)WDI通過(guò)I/O管腳Jl輸入到MAX706芯片的WDI輸入管腳,設(shè)備的手動(dòng)復(fù)位按鈕SW通過(guò)4.7K的上拉電阻上拉后并聯(lián)接入MAX706芯片的手動(dòng)復(fù)位按鈕MR, MAX706產(chǎn)生的復(fù)位信號(hào)RST通過(guò)I/O管腳J3輸入給CPLD,CPLD產(chǎn)生的復(fù)位信號(hào)RSTO和RSTl等分別通過(guò)I/O管腳J4和I/O管腳J5輸入給CPU芯片及其他外圍硬件電路芯片。其中,為了給復(fù)位信號(hào)一個(gè)確定的初始非復(fù)位狀態(tài),電路中各復(fù)位信號(hào)均通過(guò)一個(gè)4.7K的電阻上拉,并且為了去抖動(dòng),各復(fù)位信號(hào)同時(shí)通過(guò)一個(gè)1nf左右的電容并聯(lián)到地,MAX706的定時(shí)器溢出管腳WD0_N直接和MR相連,這樣一旦WDI喂狗不及時(shí),MAX706芯片內(nèi)部的定時(shí)器溢出或者設(shè)備的手動(dòng)復(fù)位按鈕SW按下時(shí),MAX706的復(fù)位管腳RST_N均會(huì)輸出200ms左右的低電平復(fù)位號(hào)。
[0017]如圖2所示為由系統(tǒng)軟件和CPLD邏輯代碼相結(jié)合來(lái)產(chǎn)生WDI信號(hào)的流程圖。
[0018]第一步,系統(tǒng)啟動(dòng)一個(gè)看門(mén)狗定時(shí)器來(lái)通過(guò)CPU的一個(gè)GP1管腳產(chǎn)生周期為T(mén)的方波信號(hào)S2:啟動(dòng)看門(mén)狗定時(shí)器,通過(guò)CPU的GP1管腳8產(chǎn)生周期T=4秒的方波信號(hào)S2 ;
第二步,系統(tǒng)軟件設(shè)置CPLD中的看門(mén)狗使能控制位FLAGl為使能狀態(tài);
第三步,CPLD邏輯代碼產(chǎn)生周期小于3.2秒的方波信號(hào)SI ;
第四步,判斷S2信號(hào)的高低跳變周期是否小于Τ/2,若為是則判斷CPU喂狗信號(hào)是否正常標(biāo)識(shí)位FLAG2跳變正常,進(jìn)入步驟五;若為否則判斷CPU喂狗信號(hào)是否正常標(biāo)識(shí)位FLAG2跳變不正常,則SI停止輸出給看門(mén)狗控制芯片的WDI管腳;
第五步,判斷是否滿足看門(mén)狗使能控制位FLAGl使能,CPU喂狗信號(hào)是否正常標(biāo)識(shí)位FLAG2正常,若為是SI正常輸出給看門(mén)狗控制芯片的WDI管腳,若為否則SI停止輸出給看門(mén)狗控制芯片的WDI管腳;
第六步,返回第四步。
[0019]本實(shí)施例中還提供一種CPU操作系統(tǒng)復(fù)位控制,具體實(shí)現(xiàn)方式如下:
看門(mén)狗控制芯片的復(fù)位輸出管腳W_R接入CPLD的I/O管腳J3,設(shè)備的手動(dòng)復(fù)位按鈕SW并聯(lián)接入看門(mén)狗控制芯片的手動(dòng)復(fù)位管腳MR,這樣看門(mén)狗芯片因喂狗信號(hào)不正常而復(fù)位、手動(dòng)按鈕復(fù)位和設(shè)備上電啟動(dòng)時(shí)J3上都會(huì)輸入復(fù)位信號(hào)RST,RST的低電平寬度為200毫秒,之后會(huì)自行跳變到高電平;CPLD邏輯代碼利用RST信號(hào)給相應(yīng)的寄存器賦予確定的初值,其中,CPLD的喂狗輸出管腳Jl上賦予高阻態(tài)初值,看門(mén)狗使能控制位FLAGl —定要不使能,同時(shí)在CPLD邏輯代碼中定義寄存器REG用于系統(tǒng)軟件控制各硬件芯片的復(fù)位,各硬件芯片的復(fù)位信號(hào)由J3上的復(fù)位信號(hào)RST和系統(tǒng)軟件復(fù)位控制位REG共同控制,任意一種有效都會(huì)控制CPU芯片及操作系統(tǒng)和其他硬件芯片的復(fù)位。
[0020]以VxWorks操作系統(tǒng)為例,系統(tǒng)啟動(dòng)一個(gè)看門(mén)狗定時(shí)器來(lái)通過(guò)CPU的一個(gè)GP1管腳產(chǎn)生周期為T(mén)的方波信號(hào)S2的實(shí)現(xiàn)過(guò)程如下:
/*啟動(dòng)看門(mén)狗定時(shí)器,通過(guò)CPU的GP1管腳8產(chǎn)生周期T=4秒的方波信號(hào)S2*/ void Feed_ffdt_Start (void)
{
WdIdO =wdCreate() ;//創(chuàng)建看門(mén)狗定時(shí)器
ffd_Ctrl_Low() ;//啟動(dòng)看門(mén)狗定時(shí)器產(chǎn)生周期為4秒的方波信號(hào)
}Void ffd_Ctrl_Low (void)
{
Gp18_direct1n_output (0) ; // 控制 CPU 的 GP108 對(duì)外輸出低電平 wdStart(ffdIdO, T/2, (FUNCPTR)ffd_Ctrl_High, NULL) ;// 啟動(dòng)看門(mén)狗定時(shí)器
}
Void ffd_Ctrl_High (void)
{
Gp18_direct1n_output (I) ; // 控制 CPU 的 GP108 對(duì)外輸出高電平 wdStart(ffdIdO, T/2, (FUNCPTR)ffd_Ctrl_Low, NULL) ;// 啟動(dòng)看門(mén)狗定時(shí)器
}
操作系統(tǒng)啟動(dòng)完成以后,執(zhí)行如下函數(shù)Init_WDT()來(lái)開(kāi)啟系統(tǒng)的監(jiān)控功能。
[0021]void Init_WDT (void)
{
Feed_ffdt_Start () ;//啟動(dòng)看門(mén)狗定時(shí)器產(chǎn)生周期為4秒的方波信號(hào) CPLD_ffd_En() ;//使能CPLD中的看門(mén)狗使能控制為FLAGl
}
以Verilog可編程邏輯語(yǔ)言為例,CPLD邏輯中檢測(cè)S2信號(hào)是否在按周期T正常跳變, 產(chǎn)生WDI喂狗信號(hào)以及復(fù)位控制等的實(shí)現(xiàn)過(guò)程如下: input GP108, //J2 input RST, //J3 output WDI, //Jl output RSTO, //J4 output RSTI, //J5
wire FLAG2; //S2產(chǎn)生是否正常標(biāo)識(shí)位 reg WDI_reg;
reg FLAGl;//看門(mén)狗使能控制位
regCLK_8K;//8KHz 的時(shí)鐘信號(hào)
reg S2_HIGH;//S2的高電平半周期跳變標(biāo)識(shí)位
reg S2_L0ff;//S2的低電平半周期跳變標(biāo)識(shí)位
reg run_per1d_2s; //周期為2秒的方波信號(hào),用于輸出給WDI
reg soft_rst_ctl [7:0];系統(tǒng)軟件復(fù)位各芯片控制位
always (posedge CLK_8K or negedge RST)//WDI 產(chǎn)生模塊
begin
if (RST == I’ bO) // MAX706輸出低電平復(fù)位信號(hào)
begin
FLAGK=IJ bO; //初始化時(shí)把看門(mén)狗使能位置為不使能
ffDI_reg<=rbz; //復(fù)位過(guò)程中WDI給高阻態(tài),不啟動(dòng)MAX706內(nèi)部的定時(shí)器,以免MAX706不斷輸出復(fù)位信號(hào),使系統(tǒng)無(wú)法正常啟動(dòng)end
【權(quán)利要求】
1.一種嵌入式系統(tǒng)監(jiān)控及復(fù)位控制方法,該方法使用的硬件部分包括CPLD芯片、CPU芯片、看門(mén)狗控制芯片及其他外圍硬件電路,其特征在于該方法包括以下步驟: (1)CPLD邏輯代碼產(chǎn)生周期小于3.2秒的方波信號(hào)SI,SI通過(guò)一個(gè)看門(mén)狗使能控制位FLAGl和一個(gè)CPU喂狗信號(hào)是否正常標(biāo)識(shí)位FLAG2共同控制以后,再經(jīng)CPLD芯片的一個(gè)I/O管腳Jl輸出給看門(mén)狗控制芯片的喂狗輸入管腳;其中,看門(mén)狗使能控制位FLAGl默認(rèn)不使能,關(guān)閉看門(mén)狗,CPU操作系統(tǒng)初始化完成后再由軟件動(dòng)態(tài)使能控制位FLAG1,打開(kāi)看門(mén)狗; (2)按如下策略控制CPU喂狗信號(hào)是否正常標(biāo)識(shí)位FLAG2: CPU操作系統(tǒng)通過(guò)CPU的一個(gè)GP1管腳向CPLD的一個(gè)I/O管腳J2輸入周期為T(mén)的方波信號(hào)S2,在CPLD邏輯代碼中判斷S2是否在正常跳變,如果跳變正常,F(xiàn)LAG2置為正常,否則置為異常;其中,T 一般大于3.2S,小于6S; (3)若FLAGl使能,F(xiàn)LAG2正常時(shí),SI正常輸出給看門(mén)狗控制芯片的喂狗輸入管腳;FLAGl不使能或者FLAGl使能,F(xiàn)LAG2異常時(shí),SI停止輸出給看門(mén)狗控制芯片的喂狗輸入管腳; (4)CPU操作系統(tǒng)復(fù)位控制: 看門(mén)狗控制芯片的復(fù)位輸出管腳W_R接入CPLD的I/O管腳J3,設(shè)備的手動(dòng)復(fù)位按鈕SW并聯(lián)接入看門(mén)狗控制芯片的手動(dòng)復(fù)位管腳MR,這樣看門(mén)狗芯片因喂狗信號(hào)不正常而復(fù)位、手動(dòng)按鈕復(fù)位和設(shè)備上電啟動(dòng)時(shí)J3上都會(huì)輸入復(fù)位信號(hào)RST,RST的低電平寬度為200毫秒,之后會(huì)自行跳變到高電平;CPLD邏輯代碼利用RST信號(hào)給相應(yīng)的寄存器賦予確定的初值,其中,CPLD的喂狗輸出管腳Jl上賦予高阻態(tài)初值,看門(mén)狗使能控制位FLAGl —定要不使能,同時(shí)在CPLD邏輯代碼中定義寄存器REG用于系統(tǒng)軟件控制各硬件芯片的復(fù)位,各硬件芯片的復(fù)位信號(hào)由J3上的復(fù)位信號(hào)RST和系統(tǒng)軟件復(fù)位控制位REG共同控制,任意一種有效都會(huì)控制CPU芯片及操作系統(tǒng)和其他硬件芯片的復(fù)位。
2.根據(jù)權(quán)利要求1所述的嵌入式系統(tǒng)監(jiān)控及復(fù)位控制方法,其特征是:所述方法硬件部分包括CPLD芯片、看門(mén)狗控制芯片MAX706、CPU芯片,所述CPU芯片通過(guò)一個(gè)GP1管腳與CPLD的一個(gè)I/O管腳J2相連,CPLD芯片的I/O管腳Jl與MAX706芯片的WDI輸入管腳相連,設(shè)備的手動(dòng)復(fù)位按鈕SW通過(guò)4.7K的上拉電阻后并聯(lián)接入MAX706芯片的手動(dòng)復(fù)位按鈕MR, MAX706芯片的RST管腳與CPLD的I/O管腳J3相連,CPLD的I/O管腳J4和I/O管腳J5分別與CPU芯片及其他外圍硬件電路相連。
【文檔編號(hào)】G06F11/30GK104035536SQ201410269423
【公開(kāi)日】2014年9月10日 申請(qǐng)日期:2014年6月18日 優(yōu)先權(quán)日:2014年6月18日
【發(fā)明者】鄭霞, 郭浩, 陳鵬, 徐鵬飛, 淳增輝, 李三, 張翼, 陳昊, 鄧松, 何裕舒, 程曉, 蔡立安, 鄧玉華, 溫照柏, 徐翔, 湯靈 申請(qǐng)人:中國(guó)船舶重工集團(tuán)公司第七二二研究所
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
枣庄市| 保山市| 柞水县| 图木舒克市| 河池市| 平安县| 法库县| 阿坝| 正宁县| 澎湖县| 高要市| 泰顺县| 牡丹江市| 上饶市| 如东县| 百色市| 阿巴嘎旗| 马关县| 广元市| 德钦县| 武乡县| 嘉黎县| 怀化市| 普兰店市| 扶沟县| 新乡市| 商河县| 甘德县| 兰州市| 临清市| 翁源县| 合阳县| 沈阳市| 呼和浩特市| 乌苏市| 咸阳市| 敦煌市| 汾西县| 武邑县| 凤庆县| 奉化市|