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

    基于485總線(xiàn)的STM32遠(yuǎn)程固件更新與實(shí)現(xiàn)

    2022-12-01 01:06:20劉鵬飛徐明陽(yáng)邢宇鵬
    計(jì)算機(jī)測(cè)量與控制 2022年11期
    關(guān)鍵詞:用戶(hù)程序固件通信協(xié)議

    陳 峰,劉鵬飛,徐明陽(yáng),伍 能,邢宇鵬,謝 征

    (中國(guó)電子科技集團(tuán)公司第三十四研究所,廣西 桂林 541004)

    0 引言

    STM32系列微控制器具備性能高、成本低、功耗低、兼?zhèn)鋵?shí)時(shí)功能和數(shù)字信號(hào)處理等特點(diǎn),使其成為嵌入式應(yīng)用設(shè)計(jì)的首要選擇,以高集成度和開(kāi)發(fā)簡(jiǎn)單著稱(chēng)的ARM Cortex-M0、M3、M4以及M7內(nèi)核的控制器,已在消費(fèi)電子、網(wǎng)絡(luò)應(yīng)用、工業(yè)控制和安全產(chǎn)品等場(chǎng)景中被廣泛應(yīng)用[1-5]。STM32F103系列是ST公司發(fā)布的基于ARM Cortex-M3 32位內(nèi)核的微控制器芯片。其中STM32F103RCT6是增強(qiáng)型微控制器,高達(dá)72 MHz的工作主頻,是同類(lèi)產(chǎn)品中性能高好的產(chǎn)品,片內(nèi)Flash和RAM的容量分別為256 k和48 k,具有64個(gè)IO端口以及集成SPI、UART、ADC和TIMER等模塊,同時(shí)具備十分豐富實(shí)用的外設(shè)[1-3],可滿(mǎn)足一般工業(yè)設(shè)計(jì)和生產(chǎn)對(duì)微控制器經(jīng)濟(jì)性和實(shí)用性需求,使其成為微控制器中的理想器件。

    RS-485總線(xiàn)是一種串行總線(xiàn)推薦性標(biāo)準(zhǔn)(RS,rcommended standard),采用平衡驅(qū)動(dòng)器與差分接收器的方式進(jìn)行信號(hào)傳輸[5]。由于RS-485總線(xiàn)具有布線(xiàn)簡(jiǎn)單、傳輸距離遠(yuǎn)、支持節(jié)點(diǎn)多(32個(gè))、傳輸線(xiàn)成本低以及抑制共模干擾能力強(qiáng)的特性,使得RS-485成為工業(yè)應(yīng)用中數(shù)據(jù)傳輸?shù)氖走x標(biāo)準(zhǔn),被廣泛應(yīng)用在汽車(chē)電子、電信設(shè)備局域網(wǎng)、航空電子、智能控制、環(huán)境監(jiān)測(cè)等領(lǐng)域中[16-21]。然而當(dāng)RS-485總線(xiàn)節(jié)點(diǎn)上的STM32設(shè)備需要進(jìn)行軟件升級(jí)或軟件維護(hù)時(shí),將設(shè)備一一拆裝,逐一采用編程器進(jìn)行嵌入式軟件更新,將會(huì)十分耗費(fèi)人力、物力和時(shí)間。更為致命的是,有些設(shè)備一旦集成完畢后,甚至不允許拆卸,就算將每臺(tái)設(shè)備的下載口都連接到設(shè)備外殼上,由于使用環(huán)境因素的制約,有時(shí)候人工已經(jīng)無(wú)法觸及到設(shè)備,這將給設(shè)備的升級(jí)維護(hù)帶來(lái)極大的困難與挑戰(zhàn)。為了解決RS-485總線(xiàn)上設(shè)備固件更新困難的問(wèn)題,本文提出基于RS-485總線(xiàn),采用應(yīng)用內(nèi)編程IAP(in-application programming)的方式[6-12]對(duì)設(shè)備進(jìn)行遠(yuǎn)程固件更新的方法,為STM32控制器在線(xiàn)升級(jí)提供一個(gè)方便快捷、穩(wěn)定可靠的解決方案。

    1 系統(tǒng)構(gòu)成

    RS-485串行總線(xiàn)允許一對(duì)雙絞線(xiàn)上一個(gè)發(fā)送器驅(qū)動(dòng)多個(gè)負(fù)載設(shè)備,由于發(fā)送和接收共用同一組物理信道,在任何時(shí)刻只允許一臺(tái)設(shè)備處于發(fā)送狀態(tài),其它設(shè)備必須在總線(xiàn)上信號(hào)已經(jīng)發(fā)送完成后才能進(jìn)行應(yīng)答。在本系統(tǒng)中,PC端為主設(shè)備,即主機(jī),經(jīng)USB轉(zhuǎn)RS-485模塊后連接到485總線(xiàn)上。其余設(shè)備為從設(shè)備,從設(shè)備出廠(chǎng)時(shí)自帶有系統(tǒng)內(nèi)部唯一的設(shè)備流水號(hào),根據(jù)系統(tǒng)容量,流水號(hào)分別固化為1到N。主設(shè)備需要與從設(shè)備進(jìn)行通信時(shí),所有的從設(shè)備都接收到主設(shè)備發(fā)送的數(shù)據(jù)信息,由于通信協(xié)議上攜帶設(shè)備流水號(hào)信息,只有流水號(hào)正確的設(shè)備才能進(jìn)行響應(yīng)?;?85總線(xiàn)的系統(tǒng)構(gòu)成如圖1所示。

    圖1 系統(tǒng)構(gòu)成示意圖

    在基于RS-485總線(xiàn)的系統(tǒng)中,傳輸路徑上如果存在不連續(xù)阻抗或者出現(xiàn)阻抗不匹配的現(xiàn)象,極易引起信號(hào)傳輸過(guò)程中的電磁反射,反射的電磁場(chǎng)與原磁場(chǎng)疊加,將使傳輸信號(hào)出現(xiàn)畸變,極易導(dǎo)致通信過(guò)程出現(xiàn)誤碼。因此,需要在總線(xiàn)遠(yuǎn)端線(xiàn)路上增加端接電阻,通常端接電阻的阻值為120 Ω,利用端接電阻來(lái)吸收噪聲并減少電磁反射,可以大幅度提高RS-485通信的可靠性[5]。

    由于RS-485為半雙工通信方式,采用主-從結(jié)構(gòu)方式進(jìn)行通信時(shí),總線(xiàn)通信受主機(jī)控制,從設(shè)備不能主動(dòng)發(fā)送命令或數(shù)據(jù),所有的通信都應(yīng)由主機(jī)發(fā)起,各從設(shè)備之間也不能相互進(jìn)行通信。這種通信方式限制了不能對(duì)系統(tǒng)中的設(shè)備進(jìn)行統(tǒng)一集中升級(jí)。因此,在對(duì)系統(tǒng)中設(shè)備進(jìn)行固件在線(xiàn)升級(jí)時(shí),只能逐一對(duì)設(shè)備進(jìn)行升級(jí),且在升級(jí)過(guò)程中不能對(duì)其它設(shè)備進(jìn)行操作,否則有可能會(huì)引起RS-485總線(xiàn)競(jìng)爭(zhēng),導(dǎo)致遠(yuǎn)程固件更新不成功。

    2 STM32遠(yuǎn)程固件更新方案

    2.1 STM32固件更新方式

    通常對(duì)STM32進(jìn)行固件更新的方式有以下3種。

    1)在電路內(nèi)編程ICP(in-circuit programming):ICP是STM32電路調(diào)試時(shí)最為常用的,一般有兩種調(diào)試方式,分別是JTAG仿真調(diào)試和串行單線(xiàn)調(diào)試SWD。標(biāo)準(zhǔn)的JTAG協(xié)議接口需要4根信號(hào)線(xiàn)(TDO、TDI、TCK、TMS)和硬件復(fù)位RST信號(hào),JTAG主要用于芯片內(nèi)部測(cè)試;而SWD需要2根信號(hào)線(xiàn),分別為SWCLK和SWDIO。由于SWD方式具備調(diào)試速度快、占用IO口少的特點(diǎn),因此,在電路板調(diào)試時(shí),通常利用MDK等編譯工具以及STM32 ST-LINK Utiliyt下載助手等工具,便可實(shí)現(xiàn)通過(guò)SWD協(xié)議接口下載器更新固件。

    2)在系統(tǒng)內(nèi)編程ISP(in-system programming):使用ISP方式更新固件不需要下載器,是使用STM32系統(tǒng)存儲(chǔ)器中自帶的自舉引導(dǎo)程序(bootloader)進(jìn)行燒錄,可以通過(guò)STM32控微制器的接口,例如USB/UART/SPI/I2C/RS-485/CAN等,利用微控制器接口接收數(shù)據(jù)并將其內(nèi)部的APROM、數(shù)據(jù)閃存(DataFlash)和用戶(hù)配置(Config)區(qū)域進(jìn)行更新。無(wú)論是電路板上的空白控制器還是已經(jīng)編程過(guò)的微控制器,都可以通過(guò)系統(tǒng)內(nèi)編程的方式達(dá)到固件更新的目的。

    3)在應(yīng)用內(nèi)編程IAP(in-application programming):通過(guò)通信接口實(shí)現(xiàn)在線(xiàn)固件更新,它不需要使用任何工具,僅僅是通過(guò)軟件的方法來(lái)更新FLASH中的數(shù)據(jù),即利用用戶(hù)編寫(xiě)的引導(dǎo)程序在運(yùn)行過(guò)程中對(duì)User Flash的部分區(qū)域進(jìn)行在線(xiàn)電擦除和再編程[9]。因此,IAP需要在程序設(shè)計(jì)時(shí)編寫(xiě)兩個(gè)項(xiàng)目工程,第一個(gè)項(xiàng)目程序作為更新引導(dǎo)程序,執(zhí)行對(duì)第二部分真正用戶(hù)代碼的更新或超時(shí)跳轉(zhuǎn)至用戶(hù)程序,以實(shí)現(xiàn)器件固件更新功能以及用戶(hù)程序的正常啟動(dòng)[7-16]。

    使用ICP升級(jí)固件時(shí),需要將常用的下載工具,比如JLINK、ULINK、CMSIS-DAP、STLINK等通過(guò)下載線(xiàn)纜連接到目標(biāo)器件的下載接口上,該方法是硬件調(diào)試階段較為合理的器件固件更新方法。當(dāng)硬件調(diào)試結(jié)束封裝成模塊或設(shè)備后,后期如果需要再次更新固件時(shí),就必須對(duì)設(shè)備進(jìn)行拆裝或者將每一個(gè)設(shè)備的下載口引到設(shè)備機(jī)殼外部,這樣都不利于總線(xiàn)上設(shè)備的高效升級(jí)。ISP的優(yōu)勢(shì)是不需要編程器就可以實(shí)現(xiàn)STM32的設(shè)計(jì)和開(kāi)發(fā),該技術(shù)通過(guò)器件出廠(chǎng)時(shí)自帶的升級(jí)引導(dǎo)程序,原則上支持遠(yuǎn)程固件更新,但是在升級(jí)時(shí)需要對(duì)器件啟動(dòng)模式進(jìn)行選擇,不可避免地引入對(duì)硬件的物理連接操作。一般ISP的步驟為:電腦通過(guò)USB轉(zhuǎn)232線(xiàn)連接控制器的USART1,打開(kāi)下載軟件,設(shè)置跳線(xiàn)或使用按鍵,使控制器的BOOT0為高電平,BOOT1為低電平,從而復(fù)位控制器使其進(jìn)入bootloader模式,通過(guò)下載軟件更新程序,程序更新完畢后,再將BOOT0設(shè)置為低電平,確保器件重啟后從內(nèi)部FLASH啟動(dòng)程序。ISP模式的引導(dǎo)程序是器件出廠(chǎng)時(shí)自帶的,使用固定的硬件接口,用戶(hù)無(wú)法對(duì)其進(jìn)行修改和重定義,這也在一定程度上限制了ISP方式的大量應(yīng)用。而IAP遠(yuǎn)程固件更新則完全不需要對(duì)器件進(jìn)行任何額外的硬件連接操作,IAP技術(shù)從結(jié)構(gòu)上將Flash存儲(chǔ)器劃分成兩個(gè)相互獨(dú)立的存儲(chǔ)區(qū)域,一個(gè)區(qū)域用來(lái)存放升級(jí)引導(dǎo)程序Bootloader,另外一個(gè)區(qū)域用來(lái)存放用戶(hù)應(yīng)用程序。IAP升級(jí)引導(dǎo)程序是由用戶(hù)編寫(xiě)的,可根據(jù)實(shí)際使用需求選擇不同的硬件外設(shè)以及自定義數(shù)據(jù)傳輸協(xié)議,相對(duì)ISP的方式,IAP方式在升級(jí)時(shí),顯得更加靈活方便。IAP的一般實(shí)現(xiàn)過(guò)程為:設(shè)備上電后首先進(jìn)入引導(dǎo)程序,引導(dǎo)程序在確認(rèn)無(wú)固件更新需求后跳轉(zhuǎn)到用戶(hù)應(yīng)用程序。當(dāng)需要對(duì)總線(xiàn)上的某一臺(tái)設(shè)備進(jìn)行固件更新時(shí),可向該設(shè)備發(fā)送軟件重啟命令,使其再次進(jìn)入升級(jí)引導(dǎo)程序,接收來(lái)自主機(jī)的待升級(jí)固件數(shù)據(jù),并寫(xiě)入控制器指定的Flash區(qū)域,待所有數(shù)據(jù)接收完畢并編程成功后跳轉(zhuǎn)到新程序入口地址,執(zhí)行新寫(xiě)入的程序,達(dá)到遠(yuǎn)程固件更新的目的。

    2.2 IAP遠(yuǎn)程固件更新方案

    2.2.1 IAP實(shí)現(xiàn)技術(shù)原理

    IAP的實(shí)現(xiàn)技術(shù)原理如圖2所示,其IAP實(shí)現(xiàn)過(guò)程如下。

    1)STM32微控制器在復(fù)位后,首先從基地址0x0800 0000開(kāi)始啟動(dòng),然后從內(nèi)部閃存地址0x0800 0004取出復(fù)位中斷向量的地址,并跳轉(zhuǎn)到IAP復(fù)位中斷服務(wù)程序[2-4],在運(yùn)行完復(fù)位中斷服務(wù)程序之后跳轉(zhuǎn)到IAP中main(void)函數(shù)。IAP的main(void)函數(shù)的主要功能是啟用時(shí)鐘、初始化串口以及解除存儲(chǔ)區(qū)域的寫(xiě)保護(hù)等,當(dāng)需要升級(jí)固件時(shí)按協(xié)議規(guī)范接收固件數(shù)據(jù)并寫(xiě)到相應(yīng)的FLASH區(qū)域;當(dāng)不需要升級(jí)時(shí)跳轉(zhuǎn)至0x0800 0004+N+M處執(zhí)行真正的用戶(hù)APP(User-application)程序;

    2)IAP代碼執(zhí)行結(jié)束之后,即新的用戶(hù)APP代碼已成功寫(xiě)入STM32的FLASH中,此時(shí),用戶(hù)程序的復(fù)位中斷向量表起始地址變?yōu)?x0800 0004+N+M,取出新程序的復(fù)位中斷向量表的地址,并跳轉(zhuǎn)執(zhí)行新程序的復(fù)位中斷服務(wù)程序,隨后跳轉(zhuǎn)至用戶(hù)APP的main(void)函數(shù)[2-4];

    3)在用戶(hù)APP的main(void)函數(shù)執(zhí)行過(guò)程中,如果微控制器得到一個(gè)新的中斷請(qǐng)求,PC指針仍強(qiáng)制跳轉(zhuǎn)到地0x0800 0004中斷向量表處,而不是用戶(hù)程序的0x0800 0004+N+M中斷向量表處[2-4];

    4)執(zhí)行完步驟1)后,程序再根據(jù)設(shè)置的中斷向量表偏移量,跳轉(zhuǎn)到對(duì)應(yīng)中斷源新的中斷服務(wù)程序中,在執(zhí)行完新的中斷服務(wù)程序后,程序返回用戶(hù)程序main(void)函數(shù)繼續(xù)運(yùn)行程序[2-4]。

    圖2 IAP實(shí)現(xiàn)技術(shù)原理圖

    2.2.2 Flash空間分配

    將STM32啟動(dòng)模式配置為用戶(hù)Flash啟動(dòng),控制器Flash區(qū)域劃分如圖3所示。根據(jù)IAP和用戶(hù)程序占用空間大小,將IAP升級(jí)引導(dǎo)程序存放于0x0800 0000起始的12 kB地址空間中,當(dāng)系統(tǒng)上電后,先從0x0800 0000進(jìn)入IAP升級(jí)引導(dǎo)程序,等待升級(jí)固件確認(rèn)信號(hào),在規(guī)定時(shí)間內(nèi)設(shè)備接收到升級(jí)信號(hào),則進(jìn)入升級(jí)處理程序,否則將程序跳轉(zhuǎn)至用戶(hù)應(yīng)用程序。升級(jí)引導(dǎo)程序和用戶(hù)程序Flash空間分配具體設(shè)置如下。

    1)引導(dǎo)程序空間設(shè)置:在MDK編譯器的Target options-Target標(biāo)簽下的IROMl的起始地址設(shè)置為0x0800 0000,空間大小配置為0x2FFF;

    2)用戶(hù)程序空間設(shè)置:在MDK編譯器中將IROMl的起始地址設(shè)置為0x08003000,并將剩余空間分配為用戶(hù)程序區(qū),最重要的是在用戶(hù)程序main()函數(shù)中添加中斷向量表地址偏移量:NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x3000),或者在system_stm32f10x.c文件下重新定義中斷向量表偏移量:#define VECT_TAB_OFFSET 0x3000,以確保用戶(hù)程序部分從0x8003000開(kāi)始啟動(dòng),不會(huì)與IAP程序空間造成沖突。

    圖3 Flash區(qū)域劃分示意圖

    2.2.3 數(shù)據(jù)傳輸協(xié)議設(shè)計(jì)

    在數(shù)據(jù)傳輸時(shí)使用自定義通信協(xié)議,以提高固件更新過(guò)程中的抗誤碼性能。傳輸協(xié)議見(jiàn)表1和表2。其中,上位機(jī)到設(shè)備端通信協(xié)議中,第1、2字節(jié)為幀頭,第3、4字節(jié)為待傳輸數(shù)據(jù)包總長(zhǎng)度,第5、6字節(jié)為當(dāng)前傳輸幀序號(hào),第7字節(jié)為設(shè)備流水號(hào),第8字節(jié)為命令字,用命令字定義所需要執(zhí)行的具體操作,第9到N字節(jié)為所攜帶的數(shù)據(jù),傳輸升級(jí)固件數(shù)據(jù)時(shí),數(shù)據(jù)段固定長(zhǎng)度為256字節(jié),其它類(lèi)型數(shù)據(jù)長(zhǎng)度根據(jù)實(shí)際需求確定,以避免不必要的開(kāi)銷(xiāo)。然后是校驗(yàn)位,采用和校驗(yàn)的方式,將第3到N字節(jié)數(shù)據(jù)進(jìn)行和校驗(yàn),最后兩個(gè)字節(jié)為幀尾。設(shè)備到上位機(jī)通信協(xié)議與上位機(jī)到設(shè)備通信協(xié)議基本一致,不同之處在于第9字節(jié)表示命令執(zhí)行結(jié)果標(biāo)識(shí),用0x00表示命令執(zhí)行失敗,0xFF表示命令執(zhí)行成功。

    表1 上位機(jī)到設(shè)備通信協(xié)議

    表2 設(shè)備到上位機(jī)通信協(xié)議

    固件更新時(shí)主機(jī)向待升級(jí)設(shè)備發(fā)送一幀數(shù)據(jù),等待設(shè)備返回信息或返回信息超時(shí)。設(shè)備根據(jù)幀頭、幀尾以及校驗(yàn)位判斷當(dāng)前幀是否接收成功,并將執(zhí)行結(jié)果上報(bào)主機(jī)。如果當(dāng)前幀接收正確,主機(jī)將發(fā)送下一幀數(shù)據(jù),否則將當(dāng)前數(shù)據(jù)幀重新發(fā)送,當(dāng)同一數(shù)據(jù)幀發(fā)送次數(shù)大于5時(shí),終止發(fā)送,此時(shí)判斷設(shè)備或通信出現(xiàn)故障。當(dāng)固件更新過(guò)程中出現(xiàn)異常情況時(shí),用戶(hù)程序區(qū)域有可能已遭受破壞,此時(shí)將無(wú)法正常啟動(dòng)用戶(hù)程序。但是,由于升級(jí)過(guò)程中不會(huì)對(duì)引導(dǎo)程序部分區(qū)域進(jìn)行操作,因此可通過(guò)斷電重啟設(shè)備的形式,對(duì)設(shè)備再次進(jìn)行更新升級(jí)即可。

    2.2.4 上位機(jī)軟件設(shè)計(jì)

    Visual C++6.0在可視化編程和數(shù)據(jù)管理方面功能十分強(qiáng)大,它以類(lèi)和事件驅(qū)動(dòng)為核心,具有程序框架自動(dòng)生成、代碼編寫(xiě)和界面設(shè)計(jì)集成交互操作的優(yōu)點(diǎn),非常適合于嵌入式軟件人員進(jìn)行上位機(jī)軟件的編程[18-22]。因此上位機(jī)控制程序采用VC++6.0設(shè)計(jì),利用Microsoft公司提供的簡(jiǎn)化Windows下串行通信編程的ActiveX控件,各個(gè)控件的觸發(fā)轉(zhuǎn)換為相應(yīng)的協(xié)議數(shù)據(jù)處理,實(shí)現(xiàn)串口通信功能。通信接口具體配置為:波特率:9 600,校驗(yàn)位:無(wú),數(shù)據(jù)位:8位,停止位:1位。上位機(jī)控制軟件主要實(shí)現(xiàn)的功能包括通信串口號(hào)配置、設(shè)備流水號(hào)設(shè)置、確認(rèn)更新、下載或上傳固件、啟動(dòng)用戶(hù)程序、軟件重啟、發(fā)送文件、執(zhí)行用戶(hù)程序以及一些升級(jí)過(guò)程中的關(guān)鍵輔助信息提示。上位機(jī)程序操作界面如圖4所示,程序界面簡(jiǎn)潔直觀,指引性強(qiáng),易于操作,即便是對(duì)軟件、硬件一點(diǎn)都不熟悉的人員,都能通過(guò)該界面輕易地實(shí)現(xiàn)設(shè)備的遠(yuǎn)程固件更新。

    圖4 上位機(jī)程序操作界面

    2.2.5 生成目標(biāo)下載固件

    MDK編譯器將嵌入式程序代碼經(jīng)編譯后一般生成AXF格式文件,經(jīng)配置編譯選項(xiàng)后,也可以生成HEX和BIN格式文件。AXF文件是編譯器默認(rèn)生成的目標(biāo)代碼文件,它不僅包含了有效代碼數(shù)據(jù),而且還包含了全部調(diào)試信息,通常在MDK進(jìn)行在線(xiàn)調(diào)試時(shí)使用該文件。一般情況下,AXF格式文件并不適合用來(lái)當(dāng)作待升級(jí)固件文件。而HEX和BIN文件都是由AXF格式文件生成的,屬于AXF文件的簡(jiǎn)化版本,HEX格式文件的數(shù)據(jù)內(nèi)容如圖5(a)所示。HEX文件使用十六進(jìn)制符號(hào)表示的數(shù)據(jù)記錄,其數(shù)據(jù)具體定義見(jiàn)表3。以圖5(a)第二行為例,表明該行數(shù)據(jù)長(zhǎng)度為0x10字節(jié)(N=0x10),地址偏移量為0x3000,數(shù)據(jù)類(lèi)型為0x00,表示該數(shù)據(jù)為普通數(shù)據(jù),從0xD0到0x08的16個(gè)字節(jié)為數(shù)據(jù)內(nèi)容,即需要寫(xiě)到0x8003000起始地址的具體數(shù)據(jù)值,最后一個(gè)字節(jié)是校驗(yàn)和,用來(lái)檢驗(yàn)數(shù)據(jù)的準(zhǔn)確性。

    表3 HEX文件數(shù)據(jù)定義

    由于HEX格式文件在數(shù)據(jù)上增加了額外的開(kāi)銷(xiāo),數(shù)據(jù)量較多、文件所占空間通常較大,而B(niǎo)IN文件是最小可運(yùn)行的文件,其包含了最直接的代碼映像,BIN格式文件數(shù)據(jù)內(nèi)容如圖5(b)所示。從第一行可以看出,其第一個(gè)數(shù)據(jù)字節(jié)是0xD0,第十六個(gè)字節(jié)為0x08,剛好與HEX文件中第二行的數(shù)據(jù)部分完全一致。因此,固件程序文件選擇BIN文件,以盡量減少升級(jí)過(guò)程中傳輸?shù)臄?shù)據(jù)量,提高升級(jí)效率。由AXF到BIN文件轉(zhuǎn)換需要在MDK編譯器上添加類(lèi)似如下命令:fromelf--bin-o".in_file@L.bin" "#L"。值得注意的是,固件選用BIN格式文件時(shí),由于BIN格式文件不攜帶地址信息,燒寫(xiě)數(shù)據(jù)時(shí),必須從設(shè)置好的地址偏移量開(kāi)始燒錄,否則將會(huì)導(dǎo)致升級(jí)后的程序無(wú)法正常運(yùn)行。

    圖5 HEX和BIN格式文件構(gòu)成

    2.2.6 固件更新詳細(xì)流程

    STM32遠(yuǎn)程固件更新詳細(xì)流程如圖6所示。在點(diǎn)對(duì)點(diǎn)通信模式下,設(shè)備上電后初始化系統(tǒng),首先進(jìn)入IAP升級(jí)引導(dǎo)程序,向主機(jī)發(fā)送開(kāi)機(jī)提示操作信息并檢測(cè)串口輸入,等待主機(jī)發(fā)送確認(rèn)升級(jí)固件字符“Y”。如果在3秒時(shí)間內(nèi)主機(jī)沒(méi)有返回執(zhí)行信息或返回的信息不是字符“Y”,則執(zhí)行超時(shí)操作,自動(dòng)切換到用戶(hù)程序運(yùn)行。在規(guī)定的時(shí)間內(nèi)一旦接收到確認(rèn)升級(jí)字符,程序跳轉(zhuǎn)到固件更新主菜單,提示下一步操作選項(xiàng),可選擇固件更新、固件上傳或切換到用戶(hù)程序。

    圖6 IAP固件更新流程圖

    若主機(jī)回復(fù)“1”,選擇固件更新,則設(shè)備端按照通信協(xié)議按幀接收固件數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),并將接收成功與否信息返回主機(jī)。當(dāng)某一數(shù)據(jù)幀接收失敗或檢驗(yàn)失敗時(shí),重傳該幀,重傳次數(shù)不大于5次。由于所使用STM32的Flash每一頁(yè)的大小為2 k,因此每校驗(yàn)完2 k的數(shù)據(jù),便將該數(shù)據(jù)按頁(yè)寫(xiě)入對(duì)應(yīng)的Flash地址空間。當(dāng)所有的數(shù)據(jù)接收完畢后從設(shè)備回復(fù)主機(jī)接收成功信息,否則回復(fù)主機(jī)接收失敗。

    若主機(jī)回復(fù)“2”,選擇固件上傳,則將0x0800 3000開(kāi)始的數(shù)據(jù)讀出,并按照上位機(jī)到設(shè)備的通信協(xié)議上傳數(shù)據(jù),以獲取當(dāng)前設(shè)備內(nèi)部的程序備份。

    若主機(jī)回復(fù)“3”,選擇切換到用戶(hù)程序,設(shè)備跳轉(zhuǎn)至0x0800 3000處執(zhí)行用戶(hù)應(yīng)用程序軟件,系統(tǒng)將正常啟動(dòng)設(shè)備。

    在RS-485總線(xiàn)模式下,需要對(duì)設(shè)備進(jìn)行固件更新時(shí),首先發(fā)送指令使待升級(jí)設(shè)備軟件重啟,然后微控制器強(qiáng)制從復(fù)位中斷向量0x0800 0004處進(jìn)入IAP程序,提示主機(jī)執(zhí)行下一步操作。由于在通信協(xié)議中包含了設(shè)備流水號(hào)信息,因此只有被選擇固件更新的設(shè)備才正常響應(yīng)主機(jī)的命令,并與主機(jī)建立通信連接,再利用點(diǎn)對(duì)點(diǎn)的通信模式實(shí)現(xiàn)固件更新。

    3 IAP遠(yuǎn)程固件更新實(shí)現(xiàn)

    IAP遠(yuǎn)程更新RS-485總線(xiàn)上STM32設(shè)備固件的具體操作步驟和方法如下。

    1)固件更新前準(zhǔn)備工作:從電腦上打開(kāi)上位機(jī)軟件,檢查確認(rèn)當(dāng)前電腦與設(shè)備通信所使用的串口號(hào),在上位機(jī)軟件的串口配置中選擇正確的串口號(hào),并打開(kāi)該串口。此時(shí),上位機(jī)軟件將經(jīng)電腦通過(guò)USB轉(zhuǎn)RS-485總線(xiàn)與設(shè)備建立物理通道連接關(guān)系,固件更新準(zhǔn)備工作就緒;

    2)選擇待升級(jí)設(shè)備:當(dāng)總線(xiàn)上的設(shè)備需要升級(jí)固件時(shí),上位機(jī)軟件首先選擇該設(shè)備對(duì)應(yīng)的流水號(hào),例如需要升級(jí)5號(hào)設(shè)備的固件,將設(shè)備流水號(hào)“5”寫(xiě)入串口配置里的流水號(hào)空白框中,選擇軟件重啟,將重啟5號(hào)設(shè)備;

    3)5號(hào)設(shè)備重啟后,首先進(jìn)入IAP升級(jí)引導(dǎo)程序,設(shè)備初始化完成后向上位機(jī)發(fā)送升級(jí)主菜單提示信息,如圖7(a)所示,為防止誤升級(jí),設(shè)備返回升級(jí)主菜單中包括了該設(shè)備的SN碼,流水號(hào)等信息,并提示是否需要對(duì)該設(shè)備進(jìn)行升級(jí)。在核對(duì)設(shè)備的流水號(hào)信息無(wú)誤后,在規(guī)定時(shí)間內(nèi)點(diǎn)擊“確認(rèn)更新:Y”按鍵進(jìn)行確認(rèn)升級(jí)操作;

    4)設(shè)備接收到確認(rèn)升級(jí)的回復(fù)后,將返回下載菜單操作提示信息,如圖7(b)所示。提示本次操作是固件更新、固件上傳還是啟動(dòng)用戶(hù)程序。根據(jù)下載提示信息,此時(shí)應(yīng)選擇“1、固件更新”選項(xiàng),等待發(fā)送固件數(shù)據(jù);

    5)在文件選擇選項(xiàng)中添加待更新固件.BIN文件所在目錄,然后選擇發(fā)送文件,上位機(jī)將按照已定義的傳輸協(xié)議將固件數(shù)據(jù)分包下發(fā),并在接收到正確接收回復(fù)后發(fā)送下一數(shù)據(jù)包,控制軟件在信息提示框中打印數(shù)據(jù)包發(fā)送及接收的狀態(tài)信息,同時(shí)通過(guò)進(jìn)度條顯示固件更新的實(shí)時(shí)進(jìn)度情況。固件更新過(guò)程如圖7(c)所示。待固件數(shù)據(jù)全部更新完成后,設(shè)備發(fā)送接收成功通知,并再次返回下載菜單,此時(shí)可以選擇“執(zhí)行用戶(hù)程序”或斷電、軟件重啟設(shè)備,設(shè)備將按照新固件運(yùn)行用戶(hù)程序,至此固件更新完畢。

    圖7 遠(yuǎn)程固件更新操作過(guò)程示意圖

    由上述遠(yuǎn)程固件更新操作流程可知,通過(guò)IAP遠(yuǎn)程固件更新技術(shù),利用編寫(xiě)的上位機(jī)控制軟件,對(duì)RS-485總線(xiàn)上設(shè)備遠(yuǎn)程升級(jí)的過(guò)程操作簡(jiǎn)單、方便快捷,僅僅需要幾個(gè)簡(jiǎn)單的人機(jī)交互過(guò)程就可以實(shí)現(xiàn)在線(xiàn)設(shè)備的固件更新,不但省去了拆裝設(shè)備、接插線(xiàn)纜等操作所帶來(lái)的麻煩,而且提高了設(shè)備升級(jí)維護(hù)的效率。經(jīng)長(zhǎng)期驗(yàn)證考核表明,使用該遠(yuǎn)程固件更新方案,包文傳輸出錯(cuò)幾率極低,固件升級(jí)成功可靠性高,取得了良好的實(shí)用效果。

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

    本文介紹了RS-485總線(xiàn)及STM32控制器在應(yīng)用中編程的技術(shù)原理和技術(shù)特點(diǎn),設(shè)計(jì)了STM32控制器固件在線(xiàn)更新的技術(shù)方案,編寫(xiě)了遠(yuǎn)程固件更新上位機(jī)控制軟件,解析了編譯器生成的程序文件具體數(shù)據(jù)形式,確定了待更新固件的格式,采用自定義串口傳輸通信協(xié)議,確保了數(shù)據(jù)傳輸過(guò)程中的有效性,實(shí)現(xiàn)了STM32微控制器的遠(yuǎn)程固件更新和維護(hù)。實(shí)踐應(yīng)用表明,通過(guò)VC++編寫(xiě)的上位機(jī)控制軟件,結(jié)合自定義串口通信協(xié)議實(shí)現(xiàn)的IAP遠(yuǎn)程固件更新,固件更新過(guò)程操作簡(jiǎn)單便捷,程序運(yùn)行穩(wěn)定可靠,解決了RS-485總線(xiàn)上STM32設(shè)備固件更新困難的問(wèn)題,具有極為廣泛的應(yīng)用前景。

    猜你喜歡
    用戶(hù)程序固件通信協(xié)議
    變速箱控制系統(tǒng)Bootloader設(shè)計(jì)與實(shí)現(xiàn)
    嵌入式設(shè)備遠(yuǎn)程升級(jí)方案設(shè)計(jì)
    基于Z-Stack通信協(xié)議棧的紅外地溫采集電路設(shè)計(jì)
    基于固件的遠(yuǎn)程身份認(rèn)證
    基于DMX512通信協(xié)議的多路轉(zhuǎn)發(fā)器設(shè)計(jì)與研究
    基于NS-3的PLC多頻通信協(xié)議仿真平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
    提取ROM固件中的APP
    C8051F410單片機(jī)BootLoader的實(shí)現(xiàn)
    一種通過(guò)USB接口的可靠固件升級(jí)技術(shù)
    RSSP-I、RSSP-Ⅱ及SAHARA三種安全通信協(xié)議實(shí)現(xiàn)技術(shù)簡(jiǎn)介
    天堂动漫精品| 久久精品国产综合久久久| 亚洲国产欧美网| 曰老女人黄片| 美女午夜性视频免费| 色综合站精品国产| 三级毛片av免费| 国产精品一区二区在线不卡| 日韩中文字幕欧美一区二区| 在线观看免费视频网站a站| or卡值多少钱| 久久这里只有精品19| 久久人人爽av亚洲精品天堂| 亚洲电影在线观看av| 国产精品久久久人人做人人爽| 久久人妻福利社区极品人妻图片| 十分钟在线观看高清视频www| 成人精品一区二区免费| 成人av一区二区三区在线看| 99国产精品免费福利视频| 日日干狠狠操夜夜爽| 国产国语露脸激情在线看| 国产在线精品亚洲第一网站| 亚洲人成网站在线播放欧美日韩| 欧美午夜高清在线| 成人手机av| 成人18禁高潮啪啪吃奶动态图| 国产精品99久久99久久久不卡| 国产在线观看jvid| 大型av网站在线播放| 最新在线观看一区二区三区| 亚洲国产日韩欧美精品在线观看 | 免费在线观看影片大全网站| 国产精品日韩av在线免费观看 | 色在线成人网| cao死你这个sao货| www.www免费av| aaaaa片日本免费| 国产在线精品亚洲第一网站| 变态另类成人亚洲欧美熟女 | 亚洲第一欧美日韩一区二区三区| 成人永久免费在线观看视频| 婷婷精品国产亚洲av在线| 久久精品影院6| 免费看十八禁软件| 欧美另类亚洲清纯唯美| 欧美激情久久久久久爽电影 | 狂野欧美激情性xxxx| 精品高清国产在线一区| 亚洲精品在线观看二区| 亚洲人成77777在线视频| 久久性视频一级片| 两个人看的免费小视频| 亚洲中文字幕日韩| 亚洲男人天堂网一区| 69av精品久久久久久| 日本vs欧美在线观看视频| xxx96com| 久久香蕉精品热| 国产不卡一卡二| 亚洲欧美一区二区三区黑人| 欧美成人免费av一区二区三区| 9191精品国产免费久久| 国产亚洲精品第一综合不卡| videosex国产| 日本vs欧美在线观看视频| 国产成人免费无遮挡视频| 欧美日韩黄片免| 国产欧美日韩一区二区三| 免费人成视频x8x8入口观看| 精品日产1卡2卡| 亚洲一区二区三区不卡视频| 亚洲自拍偷在线| 久久久久久大精品| 很黄的视频免费| 窝窝影院91人妻| 亚洲精品在线美女| 人人妻人人爽人人添夜夜欢视频| 亚洲色图 男人天堂 中文字幕| 国产av一区在线观看免费| 在线十欧美十亚洲十日本专区| 日本五十路高清| 19禁男女啪啪无遮挡网站| 国产亚洲av嫩草精品影院| 在线播放国产精品三级| 国产视频一区二区在线看| 欧美黑人精品巨大| 一级,二级,三级黄色视频| 精品久久久久久成人av| 黄色成人免费大全| 免费av毛片视频| 久久天躁狠狠躁夜夜2o2o| 欧美中文综合在线视频| 亚洲欧美日韩另类电影网站| 国产成年人精品一区二区| 这个男人来自地球电影免费观看| 九色国产91popny在线| 日本黄色视频三级网站网址| 18禁国产床啪视频网站| 在线观看日韩欧美| netflix在线观看网站| 男人舔女人的私密视频| 黄色视频,在线免费观看| 国内精品久久久久久久电影| 欧美绝顶高潮抽搐喷水| 一区福利在线观看| 色播亚洲综合网| 成熟少妇高潮喷水视频| 777久久人妻少妇嫩草av网站| 日本 av在线| 啪啪无遮挡十八禁网站| 欧美久久黑人一区二区| 成人国产一区最新在线观看| 亚洲人成77777在线视频| 久久精品国产99精品国产亚洲性色 | 久久青草综合色| 亚洲av成人不卡在线观看播放网| 日韩av在线大香蕉| 窝窝影院91人妻| 最好的美女福利视频网| 日本 欧美在线| 丰满人妻熟妇乱又伦精品不卡| 午夜两性在线视频| 国产精品自产拍在线观看55亚洲| 日本在线视频免费播放| 精品国产超薄肉色丝袜足j| 国产亚洲欧美在线一区二区| 色av中文字幕| 动漫黄色视频在线观看| 黄色视频,在线免费观看| 成人三级做爰电影| 悠悠久久av| 露出奶头的视频| 中出人妻视频一区二区| 黄色成人免费大全| 露出奶头的视频| 成熟少妇高潮喷水视频| 国产精品综合久久久久久久免费 | 脱女人内裤的视频| av中文乱码字幕在线| 久久久国产精品麻豆| 中文字幕色久视频| 久久精品91蜜桃| 国产午夜精品久久久久久| 极品人妻少妇av视频| 亚洲国产精品合色在线| 国产精品九九99| 免费不卡黄色视频| 久久国产精品影院| 亚洲无线在线观看| 欧美大码av| 自线自在国产av| 免费女性裸体啪啪无遮挡网站| √禁漫天堂资源中文www| 日本黄色视频三级网站网址| 天天添夜夜摸| 日本三级黄在线观看| 999久久久精品免费观看国产| 欧美日韩中文字幕国产精品一区二区三区 | 男男h啪啪无遮挡| 久久国产精品男人的天堂亚洲| 午夜福利在线观看吧| 最新美女视频免费是黄的| 亚洲全国av大片| 制服丝袜大香蕉在线| 女人精品久久久久毛片| 欧美日韩黄片免| 久久中文字幕一级| 九色国产91popny在线| 神马国产精品三级电影在线观看 | 亚洲精品在线美女| а√天堂www在线а√下载| 最新美女视频免费是黄的| 韩国精品一区二区三区| 18美女黄网站色大片免费观看| 一级毛片女人18水好多| 在线观看免费视频网站a站| 真人一进一出gif抽搐免费| 91在线观看av| 欧美黄色片欧美黄色片| 99久久综合精品五月天人人| 999精品在线视频| 精品国产乱码久久久久久男人| 久久伊人香网站| 久久久久久人人人人人| 一边摸一边抽搐一进一小说| 中文字幕精品免费在线观看视频| 国产一区二区三区综合在线观看| 欧美黄色淫秽网站| 午夜视频精品福利| 久久精品成人免费网站| 国产成+人综合+亚洲专区| 中文字幕人成人乱码亚洲影| 波多野结衣一区麻豆| 好看av亚洲va欧美ⅴa在| 色综合亚洲欧美另类图片| 日韩有码中文字幕| 女同久久另类99精品国产91| 久久久久久国产a免费观看| 精品午夜福利视频在线观看一区| 日韩欧美国产一区二区入口| 久久九九热精品免费| 国产亚洲精品一区二区www| 两个人免费观看高清视频| 国产精品美女特级片免费视频播放器 | 国产麻豆69| 国产精品一区二区精品视频观看| 国产精品99久久99久久久不卡| 美女高潮到喷水免费观看| 欧美成人免费av一区二区三区| 亚洲成人免费电影在线观看| 最近最新中文字幕大全免费视频| 久久人妻av系列| 日本五十路高清| 高清毛片免费观看视频网站| 国产免费男女视频| 变态另类丝袜制服| 午夜成年电影在线免费观看| 亚洲国产精品sss在线观看| 国产精品久久久久久人妻精品电影| 欧美久久黑人一区二区| 国产精品久久久av美女十八| 精品无人区乱码1区二区| 九色亚洲精品在线播放| 国产成人精品在线电影| 欧美中文综合在线视频| 天天躁狠狠躁夜夜躁狠狠躁| 国产成人精品无人区| 亚洲国产中文字幕在线视频| 亚洲全国av大片| 色精品久久人妻99蜜桃| 亚洲国产精品合色在线| 久久中文字幕一级| 成人精品一区二区免费| 日韩欧美三级三区| 精品久久久久久成人av| 日韩成人在线观看一区二区三区| 后天国语完整版免费观看| 国产伦一二天堂av在线观看| 久久精品人人爽人人爽视色| 欧美一级a爱片免费观看看 | 国产精品综合久久久久久久免费 | 亚洲va日本ⅴa欧美va伊人久久| 深夜精品福利| 久久午夜亚洲精品久久| 国语自产精品视频在线第100页| 国产成年人精品一区二区| 婷婷丁香在线五月| 午夜福利18| 欧美色视频一区免费| 久久精品亚洲熟妇少妇任你| 精品久久久久久久毛片微露脸| 精品午夜福利视频在线观看一区| 午夜影院日韩av| 久久久国产成人免费| 曰老女人黄片| 亚洲精品中文字幕一二三四区| 国产精品野战在线观看| 国产欧美日韩精品亚洲av| 成人亚洲精品av一区二区| 每晚都被弄得嗷嗷叫到高潮| 麻豆av在线久日| 熟妇人妻久久中文字幕3abv| 日韩视频一区二区在线观看| 午夜免费鲁丝| 日韩欧美三级三区| 中文字幕最新亚洲高清| av视频免费观看在线观看| 两人在一起打扑克的视频| 日韩精品中文字幕看吧| 搡老妇女老女人老熟妇| 国产精品亚洲美女久久久| 19禁男女啪啪无遮挡网站| 国产精品一区二区在线不卡| 国产免费av片在线观看野外av| 夜夜夜夜夜久久久久| 国产视频一区二区在线看| 国产高清有码在线观看视频 | 91国产中文字幕| 手机成人av网站| 欧美日韩亚洲综合一区二区三区_| 国内久久婷婷六月综合欲色啪| 村上凉子中文字幕在线| 免费在线观看黄色视频的| 精品不卡国产一区二区三区| 免费搜索国产男女视频| 欧美不卡视频在线免费观看 | 亚洲av日韩精品久久久久久密| xxx96com| 1024香蕉在线观看| 欧洲精品卡2卡3卡4卡5卡区| 日韩精品青青久久久久久| 亚洲五月婷婷丁香| 变态另类成人亚洲欧美熟女 | 999久久久精品免费观看国产| 一级片免费观看大全| 国产精品电影一区二区三区| 宅男免费午夜| 多毛熟女@视频| 亚洲自拍偷在线| 美女 人体艺术 gogo| 国产成人欧美| 久久久久九九精品影院| 久久精品国产综合久久久| 丰满的人妻完整版| 欧美乱妇无乱码| 亚洲情色 制服丝袜| 久久狼人影院| 精品久久久久久成人av| 精品一品国产午夜福利视频| www.精华液| 啦啦啦免费观看视频1| 极品人妻少妇av视频| ponron亚洲| 亚洲五月婷婷丁香| 亚洲电影在线观看av| 国产精品 国内视频| 亚洲午夜理论影院| av在线天堂中文字幕| 免费一级毛片在线播放高清视频 | 中文字幕精品免费在线观看视频| 91av网站免费观看| 香蕉久久夜色| 香蕉丝袜av| 国产99久久九九免费精品| av在线播放免费不卡| 中出人妻视频一区二区| 午夜福利欧美成人| 欧洲精品卡2卡3卡4卡5卡区| 午夜福利一区二区在线看| 精品欧美一区二区三区在线| 日韩精品青青久久久久久| 两个人视频免费观看高清| 精品国产国语对白av| 国产一卡二卡三卡精品| 女人被狂操c到高潮| 欧美亚洲日本最大视频资源| 成人手机av| 中文亚洲av片在线观看爽| 国产亚洲欧美精品永久| 亚洲 国产 在线| 久久久国产成人免费| 亚洲一区二区三区色噜噜| 男女之事视频高清在线观看| 岛国在线观看网站| 老鸭窝网址在线观看| 国产伦一二天堂av在线观看| 精品免费久久久久久久清纯| 757午夜福利合集在线观看| 精品免费久久久久久久清纯| 日韩国内少妇激情av| 制服丝袜大香蕉在线| 国产伦一二天堂av在线观看| 亚洲精品中文字幕一二三四区| 中文字幕精品免费在线观看视频| 狠狠狠狠99中文字幕| 韩国av一区二区三区四区| 亚洲av电影在线进入| 50天的宝宝边吃奶边哭怎么回事| 日韩欧美三级三区| 久久青草综合色| АⅤ资源中文在线天堂| 麻豆一二三区av精品| 日韩三级视频一区二区三区| 一级毛片高清免费大全| 淫秽高清视频在线观看| 热re99久久国产66热| 国产精品爽爽va在线观看网站 | 欧美日本视频| 99国产综合亚洲精品| 看黄色毛片网站| 一二三四社区在线视频社区8| 精品久久久久久久久久免费视频| 久久天堂一区二区三区四区| 级片在线观看| 亚洲第一青青草原| 怎么达到女性高潮| 美女高潮喷水抽搐中文字幕| 久久影院123| 亚洲第一青青草原| 啦啦啦韩国在线观看视频| 欧美激情 高清一区二区三区| 亚洲国产精品久久男人天堂| 久久婷婷人人爽人人干人人爱 | 久久精品人人爽人人爽视色| 国产亚洲精品一区二区www| 久久人妻福利社区极品人妻图片| 欧美激情久久久久久爽电影 | 身体一侧抽搐| 一级作爱视频免费观看| 成人国产一区最新在线观看| 欧美黄色淫秽网站| av欧美777| 欧美另类亚洲清纯唯美| 91麻豆精品激情在线观看国产| 九色国产91popny在线| 中文字幕人妻丝袜一区二区| 国产1区2区3区精品| 久久久国产精品麻豆| 国产亚洲精品综合一区在线观看 | 国产成年人精品一区二区| 人妻丰满熟妇av一区二区三区| 国产黄a三级三级三级人| 免费在线观看日本一区| or卡值多少钱| 欧美精品啪啪一区二区三区| 在线观看午夜福利视频| 999精品在线视频| 女警被强在线播放| 欧美+亚洲+日韩+国产| 操美女的视频在线观看| 国产精品久久久久久亚洲av鲁大| www国产在线视频色| avwww免费| 国产精品一区二区在线不卡| 变态另类丝袜制服| 好看av亚洲va欧美ⅴa在| 男女之事视频高清在线观看| 一二三四在线观看免费中文在| 国产精品久久视频播放| 精品一区二区三区视频在线观看免费| 日本一区二区免费在线视频| 在线视频色国产色| 亚洲avbb在线观看| 国产私拍福利视频在线观看| 久久人妻av系列| 黄色视频不卡| 搞女人的毛片| 这个男人来自地球电影免费观看| 欧美亚洲日本最大视频资源| aaaaa片日本免费| 美女免费视频网站| 国内久久婷婷六月综合欲色啪| 99热只有精品国产| 一级毛片高清免费大全| 欧美激情高清一区二区三区| 不卡av一区二区三区| 亚洲黑人精品在线| 亚洲人成网站在线播放欧美日韩| 日韩有码中文字幕| 国产精品久久久av美女十八| 欧美一级a爱片免费观看看 | 一区二区日韩欧美中文字幕| 91老司机精品| 色综合站精品国产| 中文字幕精品免费在线观看视频| 亚洲黑人精品在线| 色哟哟哟哟哟哟| 国产精品久久视频播放| 女人被躁到高潮嗷嗷叫费观| 亚洲免费av在线视频| 午夜a级毛片| 亚洲精品国产色婷婷电影| 老汉色av国产亚洲站长工具| 国产亚洲精品一区二区www| 日韩av在线大香蕉| 色哟哟哟哟哟哟| 国内精品久久久久久久电影| 午夜a级毛片| 国产在线精品亚洲第一网站| 精品久久久久久久毛片微露脸| 少妇熟女aⅴ在线视频| 亚洲av熟女| 激情在线观看视频在线高清| 久久性视频一级片| 亚洲少妇的诱惑av| 成人亚洲精品av一区二区| 国产精品免费一区二区三区在线| 男男h啪啪无遮挡| 欧美成人性av电影在线观看| 国产精品一区二区精品视频观看| 亚洲一卡2卡3卡4卡5卡精品中文| 亚洲国产毛片av蜜桃av| 最近最新中文字幕大全电影3 | 69av精品久久久久久| 夜夜看夜夜爽夜夜摸| 国产精品美女特级片免费视频播放器 | 麻豆av在线久日| 悠悠久久av| 国产精品亚洲av一区麻豆| 久久精品aⅴ一区二区三区四区| 国产在线精品亚洲第一网站| 极品教师在线免费播放| 又紧又爽又黄一区二区| 18禁黄网站禁片午夜丰满| 波多野结衣高清无吗| 老司机午夜福利在线观看视频| 91麻豆精品激情在线观看国产| 看片在线看免费视频| 亚洲精品中文字幕一二三四区| 国产亚洲精品久久久久久毛片| 无人区码免费观看不卡| 亚洲国产精品sss在线观看| 国产精品一区二区在线不卡| 亚洲人成77777在线视频| 精品福利观看| 国产极品粉嫩免费观看在线| 亚洲全国av大片| 欧美日韩亚洲国产一区二区在线观看| 亚洲久久久国产精品| 欧美乱码精品一区二区三区| 亚洲精华国产精华精| 午夜精品国产一区二区电影| 欧美另类亚洲清纯唯美| 啦啦啦 在线观看视频| 欧美性长视频在线观看| 一区二区三区精品91| 色哟哟哟哟哟哟| 国产成人欧美在线观看| 午夜福利,免费看| 香蕉久久夜色| 大香蕉久久成人网| 亚洲精品在线观看二区| 国产高清videossex| 淫秽高清视频在线观看| 黄色成人免费大全| 国产麻豆69| 午夜福利一区二区在线看| 国产1区2区3区精品| 色播亚洲综合网| 午夜精品国产一区二区电影| 欧美中文综合在线视频| 亚洲av日韩精品久久久久久密| 成年版毛片免费区| 女警被强在线播放| 久久亚洲精品不卡| 亚洲欧洲精品一区二区精品久久久| 国产欧美日韩精品亚洲av| 欧美国产精品va在线观看不卡| tocl精华| 国产又色又爽无遮挡免费看| 窝窝影院91人妻| 欧美在线一区亚洲| 大型黄色视频在线免费观看| 色尼玛亚洲综合影院| 色综合站精品国产| 麻豆成人av在线观看| 精品一区二区三区四区五区乱码| 婷婷六月久久综合丁香| 亚洲中文日韩欧美视频| 精品免费久久久久久久清纯| 悠悠久久av| 免费久久久久久久精品成人欧美视频| 国产亚洲欧美在线一区二区| 黄色成人免费大全| 99久久精品国产亚洲精品| 一级a爱片免费观看的视频| 正在播放国产对白刺激| 极品教师在线免费播放| 国产午夜福利久久久久久| 少妇的丰满在线观看| 一进一出好大好爽视频| 一本综合久久免费| 真人一进一出gif抽搐免费| 国产又色又爽无遮挡免费看| 精品久久久久久久人妻蜜臀av | 超碰成人久久| 99精品久久久久人妻精品| 日本 av在线| 亚洲国产欧美网| 午夜免费激情av| 国产成人系列免费观看| 亚洲精品av麻豆狂野| 欧美在线一区亚洲| 日韩精品青青久久久久久| 国产精品一区二区在线不卡| 午夜亚洲福利在线播放| 国产高清视频在线播放一区| 丰满人妻熟妇乱又伦精品不卡| 大陆偷拍与自拍| 国产一级毛片七仙女欲春2 | av免费在线观看网站| 在线观看午夜福利视频| 波多野结衣av一区二区av| 我的亚洲天堂| 亚洲aⅴ乱码一区二区在线播放 | 妹子高潮喷水视频| 99久久综合精品五月天人人| 国产一区二区激情短视频| 国产精品99久久99久久久不卡| aaaaa片日本免费| 99精品欧美一区二区三区四区| 亚洲国产欧美网| 国产色视频综合| av在线播放免费不卡| 色播在线永久视频| 给我免费播放毛片高清在线观看| 中文字幕人成人乱码亚洲影| 久久久久久久久中文| 91国产中文字幕| av在线播放免费不卡| 99久久99久久久精品蜜桃| 给我免费播放毛片高清在线观看| 男人舔女人下体高潮全视频| 一级毛片女人18水好多| 色精品久久人妻99蜜桃| 精品久久久久久,| 91老司机精品| 久久亚洲真实| 91成人精品电影| 亚洲精品av麻豆狂野| 日韩大码丰满熟妇| 人人妻,人人澡人人爽秒播| 久久久久久久久免费视频了| 满18在线观看网站| 妹子高潮喷水视频| 午夜成年电影在线免费观看| 亚洲av成人av| 女性被躁到高潮视频| 亚洲一卡2卡3卡4卡5卡精品中文| 丰满的人妻完整版| 天天一区二区日本电影三级 | 男女下面进入的视频免费午夜 | 777久久人妻少妇嫩草av网站| 国产成人影院久久av|