国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于Windows USB Mass Storage類的信令和數(shù)據(jù)傳輸方式

2022-07-21 06:09黃學(xué)達楊俊杰侯志鵬黃俞霖章世博
物聯(lián)網(wǎng)技術(shù) 2022年7期
關(guān)鍵詞:基本型下位命令

黃學(xué)達,楊俊杰,侯志鵬,黃俞霖,章世博

(重慶郵電大學(xué) 自動化學(xué)院,重慶 400065)

0 引 言

傳統(tǒng)USB Mass Storage類的設(shè)備俗稱U盤,是即插即用裝置,使用現(xiàn)有的“標(biāo)準(zhǔn)”設(shè)備驅(qū)動程序,無須安裝任何設(shè)備驅(qū)動即可用于所有系統(tǒng)運行。當(dāng)操作系統(tǒng)檢查到USB裝置插入時,就會自動詢問該裝置相關(guān)參數(shù)以了解其能力和要求,并自動將適合的驅(qū)動程序加載到操作系統(tǒng)中,用戶就可以正常使用該設(shè)備。當(dāng)該設(shè)備從USB接口拔出時,操作系統(tǒng)就會自動停止該設(shè)備的使用并卸載其驅(qū)動程序。USB裝置與其內(nèi)部存儲的軟件(固件)一起銷售,用于控制該裝置(即下位機)的運行,其一般采用通用的標(biāo)準(zhǔn)驅(qū)動程序,只對PC端(上位機)下發(fā)的讀取、寫入、擦除等相關(guān)標(biāo)準(zhǔn)命令作出響應(yīng)。

USB接口在PC及消費電子等領(lǐng)域普及率高,因此該種傳輸方式應(yīng)用范圍很廣泛。但也存在以下缺點:傳統(tǒng)USB Mass Storage類設(shè)備只能滿足簡單的數(shù)據(jù)傳輸需求,不能支持其他擴展命令(如嵌入式調(diào)試設(shè)備常用的調(diào)試命令)傳輸?shù)裙δ?;在?shù)據(jù)傳輸過程中如果出現(xiàn)意外中斷(如U盤意外復(fù)位、斷電等情況),數(shù)據(jù)傳輸命令在U盤重新連接后無法繼續(xù)執(zhí)行。

4G、5G手機和相關(guān)終端模塊以及Cat1、eMTC、NB-IoT等通信終端在出廠前必須要對射頻參數(shù)進行校準(zhǔn)、綜測,射頻參數(shù)的校準(zhǔn)、綜測指標(biāo)主要有APC(自動功率控制)、AGC(自動增益控制)、AFC(自動頻率控制)等,耗時大約2~3 min。通信終端校準(zhǔn)、綜測的硬件接口一般采用USB接口,使用夾具頂針的方式去接觸電路板上的測試點,從而完成信號的連通。在實際的工廠校準(zhǔn)、綜測過程中若存在通信終端設(shè)備異常斷電或者USB松動,就會導(dǎo)致校準(zhǔn)、綜測失敗。為了提高效率,需要在USB接口重新插好后繼續(xù)從上次中斷的地方進行射頻參數(shù)的校準(zhǔn)和綜測。

1 異常掉電后重新上電執(zhí)行機制

本文研究的主要目的是:針對下位機在未執(zhí)行上位機命令而掉電的情況,提供一種在下次上電時使其繼續(xù)執(zhí)行未完成操作的方案。

USB Mass Storage設(shè)備采用FLASH進行數(shù)據(jù)存儲,F(xiàn)LASH具有在掉電后數(shù)據(jù)不會丟失的特點。通過上位機在USB Mass Storage設(shè)備中劃分出命令交互區(qū)等,供異常斷電恢復(fù)后去判斷是否需要繼續(xù)執(zhí)行上次未執(zhí)行完的操作。

1.1 重新上電執(zhí)行方案

本方案的主要思想是采用先存儲命令(含命令所需數(shù)據(jù))然后再執(zhí)行命令的方式。具體實施方案由在PC側(cè)運行的上位機軟件部分和與之通過USB口連接且以Mass Storage類枚舉到PC的下位機完成。在U盤中設(shè)置特定的命令和數(shù)據(jù)交互區(qū)(A區(qū)和B區(qū)),如圖1(基本型)和圖2(擴展模式)所示,上位機發(fā)送給下位機的所有命令,包括標(biāo)準(zhǔn)的USB讀寫命令以及擴展命令,都使用標(biāo)準(zhǔn)USB寫命令數(shù)據(jù)包發(fā)送到A區(qū),實際的命令作為數(shù)據(jù)封裝到USB標(biāo)準(zhǔn)數(shù)據(jù)包中;USB設(shè)備將接收到的包含命令的數(shù)據(jù)包寫入A區(qū)指定地址,并定時查詢A區(qū)數(shù)據(jù),如果查詢到A區(qū)中存在命令,解析命令并執(zhí)行,完成后將A區(qū)中的命令改寫為命令響應(yīng)。

圖1 上下位機的命令和數(shù)據(jù)交互區(qū)分布圖(基本型)

圖2 上下位機的命令和數(shù)據(jù)交互區(qū)分布圖(擴展型)

USB設(shè)備上電枚舉成功后,上位機讀取A區(qū)中的數(shù)據(jù),如果是響應(yīng)包,則發(fā)送新命令;如果不是響應(yīng)包,則等待USB設(shè)備執(zhí)行A區(qū)中的命令。將上位機給下位機的命令寫入命令交互區(qū)的格式如圖3所示,而當(dāng)命令執(zhí)行完成后下位機寫入命令交互區(qū)的格式如圖4所示,各個“保留區(qū)間”作為數(shù)據(jù)保護及今后功能擴展使用;數(shù)據(jù)區(qū)格式如圖5所示。根據(jù)上述方式擴展而來的衍生型多個命令/響應(yīng)包組合寫入、響應(yīng)方式如圖6、圖7所示,對應(yīng)多個命令/響應(yīng)包的數(shù)據(jù)區(qū)格式如圖8所示。

圖3 命令交互區(qū)(A區(qū))的命令包格式(基本型)

圖4 命令交互區(qū)(A區(qū))的響應(yīng)包格式(基本型)

圖5 數(shù)據(jù)區(qū)格式(基本型)

圖6 命令交互區(qū)(A區(qū))的命令包格式(擴展型)

圖7 命令交互區(qū)(A區(qū))的響應(yīng)包格式(擴展型)

圖8 數(shù)據(jù)區(qū)格式(擴展型)

1.2 基本型實現(xiàn)方案

完成整個功能時,將用戶下發(fā)的各種操作轉(zhuǎn)換為下位機支持的對應(yīng)命令或命令集,同時對用戶的操作對象(一般是各種數(shù)據(jù))進行拆包、分段等預(yù)處理操作;

(3)命令包、數(shù)據(jù)包打包組裝單元:以規(guī)定方式將命令執(zhí)行碼、命令執(zhí)行起始地址、命令執(zhí)行長度及數(shù)據(jù)文件分別打包成有效的命令包、數(shù)據(jù)包;

(4)響應(yīng)包及響應(yīng)數(shù)據(jù)解析處理單元:將獲取到的響應(yīng)

由于普通的Mass Storage類設(shè)備只能對上位機(PC)的讀取、寫入、擦除等操作命令進行對應(yīng)命令響應(yīng),無法滿足對U盤約定偏移地址的命令交互區(qū)參數(shù)及數(shù)據(jù)交互區(qū)數(shù)據(jù)的讀/寫操作要求,因此下位機需要額外使用本方案的功能支持模塊(軟件或硬件方式)來實現(xiàn)上述功能;同樣上位機需要運行一個額外的軟件或軟/硬件模塊來支持該功能。如圖9所示為添加了上下位機功能支持模塊的結(jié)構(gòu)框圖。新增模塊的內(nèi)部各功能單元結(jié)構(gòu)框圖如圖10所示。

圖9 本方案功能支持模塊的上下位機結(jié)構(gòu)框圖

圖10 上下位機功能支持模塊的內(nèi)部子模塊框圖

1.2.1 上位機功能支持模塊

上位機功能支持模塊的功能如下:

(1)界面顯示、用戶操作響應(yīng)單元:對用戶執(zhí)行的各種操作進行響應(yīng),以及對命令執(zhí)行進度、結(jié)果進行顯示,同時也為各種設(shè)置選項提供輸入接口;

(2)用戶操作命令或命令集轉(zhuǎn)換單元:當(dāng)單個命令無法信息按規(guī)定方式拆包、解析,判斷命令執(zhí)行的響應(yīng)結(jié)果,提取響應(yīng)數(shù)據(jù),并在需要的情況下對響應(yīng)數(shù)據(jù)重新組包、恢復(fù)成超大數(shù)據(jù)包傳回給上位機;

(5)命令數(shù)據(jù)緩存及執(zhí)行結(jié)果記錄單元:記錄當(dāng)前USB設(shè)備的ID號及其在命令執(zhí)行時緩存本條命令的命令包、數(shù)據(jù)包信息,并隨時記錄該命令的執(zhí)行情況,以便當(dāng)本條命令執(zhí)行失敗時,上位機能夠重新下發(fā)該命令或完成上次操作未完成的響應(yīng)數(shù)據(jù)獲取工作;

(6)A/B區(qū)數(shù)據(jù)讀寫單元:完成對指定偏移地址的A/B區(qū)數(shù)據(jù)的讀寫功能;

(7)命令執(zhí)行流程維護單元:對以上單元的功能執(zhí)行情況進行判斷維護,判斷當(dāng)前命令是否執(zhí)行失敗、是否重新執(zhí)行當(dāng)前命令、是否需要提示用戶干預(yù)操作以及通過USB的ID判斷當(dāng)前USB設(shè)備是否有上次未完成的操作等。

1.2.2 下位機功能支持模塊

下位機功能支持模塊的功能如下:

(1)A/B區(qū)數(shù)據(jù)讀寫單元:完成對指定偏移地址的A/B區(qū)數(shù)據(jù)的讀(獲取命令包)/寫(寫入響應(yīng)包)功能,特別是以固定時間間隔輪詢A區(qū)數(shù)據(jù),以便隨時獲取上位機下發(fā)的命令;

(2)命令包、數(shù)據(jù)包解析及有效性判斷單元:以規(guī)定方式將命令包、數(shù)據(jù)包進行解析,并判斷其有效性及是否支持該命令等;

(3)命令執(zhí)行單元:將命令包里的命令執(zhí)行碼轉(zhuǎn)換為對應(yīng)的一系列下位機操作過程,并使用數(shù)據(jù)包里的數(shù)據(jù)來具體執(zhí)行該操作;

(4)響應(yīng)包及響應(yīng)數(shù)據(jù)組裝單元:將由命令執(zhí)行單元執(zhí)行后的結(jié)果以執(zhí)行響應(yīng)碼及響應(yīng)數(shù)據(jù)的方式分別打包成命令執(zhí)行響應(yīng)包及響應(yīng)數(shù)據(jù)包以便向A/B區(qū)寫入。

2 具體實施方式

上位機和下位機的具體實現(xiàn)以基本型命令執(zhí)行過程為例進行詳細描述。

2.1 基本型上位機執(zhí)行過程

上位機下發(fā)命令執(zhí)行流程如圖11所示,上位機在下發(fā)新命令之前會先通過USB的ID號判斷USB設(shè)備是否有上次未執(zhí)行完的操作,如果沒有,則按照正常流程分別根據(jù)用戶的操作情況生成命令執(zhí)行碼及對應(yīng)數(shù)據(jù),再按照規(guī)定組裝成命令包、數(shù)據(jù)包,并經(jīng)過上位機緩存記錄后分別寫入對應(yīng)的A/B區(qū),即完成本條命令的下發(fā)過程。在命令下發(fā)后,上位機就不停地查詢A區(qū)數(shù)據(jù),以判斷是否有下位機執(zhí)行完成的響應(yīng)包寫回;在規(guī)定時間內(nèi)獲取響應(yīng)包及響應(yīng)數(shù)據(jù)后,上位機就進行解包及命令執(zhí)行結(jié)果判斷等工作。至此本條命令交互流程就完成了,上位機可以進入下一條命令的下發(fā)交互流程。如果以上任意流程執(zhí)行失敗或下位機寫回響應(yīng)包超時,該條命令將會標(biāo)記為執(zhí)行失敗,可以根據(jù)設(shè)置情況重新下發(fā)命令、暫停命令執(zhí)行流程或要求用戶干預(yù)。

圖11 上位機下發(fā)命令執(zhí)行流程

如果當(dāng)前USB設(shè)備的上次命令未執(zhí)行完成,上位機會讀取下位機A區(qū)的數(shù)據(jù),并判斷其是否為上次命令的正常響應(yīng)包,如果是,就將該響應(yīng)包及響應(yīng)數(shù)據(jù)獲取回來,以便完成上次遺留的命令交互過程,然后再進行新命令的下發(fā)操作;如果不是響應(yīng)包而是命令包,說明上次命令的響應(yīng)包還未被下位機寫入,在判斷A/B區(qū)數(shù)據(jù)與緩存數(shù)據(jù)一致的情況下,上位機在等待下位機將該命令執(zhí)行完并寫入響應(yīng)包、響應(yīng)數(shù)據(jù)包后,再獲取響應(yīng)數(shù)據(jù),以便完成上次未完成的命令,然后再發(fā)新命令。如果上位機發(fā)現(xiàn)A/B區(qū)數(shù)據(jù)與緩存數(shù)據(jù)不一致,將重寫A/B區(qū)以便上次的命令能夠正確執(zhí)行,再進行上述操作。

2.2 基本型下位機執(zhí)行過程

下位機模塊對于本方案的基本型命令執(zhí)行流程如圖12所示。下位機均為以一定時間間隔輪詢A、B區(qū)的信息,以便及時判斷上位機是否有新命令下發(fā)。在獲取到上位機寫入的命令包后,確認命令包及數(shù)據(jù)包有效的情況下就會加載數(shù)據(jù)并執(zhí)行該命令執(zhí)行碼對應(yīng)的操作,再把執(zhí)行結(jié)果(響應(yīng)包及響應(yīng)數(shù)據(jù))寫入指定地址中,從而完成一個命令碼的執(zhí)行過程。

圖12 下位機接收命令并執(zhí)行的流程

如果下位機檢查到A/B區(qū)數(shù)據(jù)不是合法的命令/數(shù)據(jù)包,可能為上次命令執(zhí)行后寫入的正常響應(yīng)包,或被破壞的命令/數(shù)據(jù)包,就不會執(zhí)行任何操作,會等待一定時間再查詢A/B區(qū)數(shù)據(jù),以便讓上位機讀取響應(yīng)數(shù)據(jù)或在上位機重新下發(fā)正確的命令和數(shù)據(jù)包后才繼續(xù)命令執(zhí)行過程。

按照上述方式,即使在下位機出現(xiàn)異常掉電、干擾等復(fù)位情況,也會在上電完成PC的枚舉識別后,先檢查A區(qū)是否存在有效的命令包,如果存在,則說明上次斷電前該命令未執(zhí)行完成,下位機就會重新執(zhí)行該命令,并會用執(zhí)行完成后的響應(yīng)包及數(shù)據(jù)覆蓋寫入到對應(yīng)的A區(qū)、B區(qū),以標(biāo)志該命令執(zhí)行完成。因此,本套機制對于異常掉電后的上電狀態(tài)仍舊適用。

2.3 擴展型執(zhí)行過程

本方案擴展型的命令執(zhí)行過程與基本型的基本原理一致,只不過上位機可以一次性下發(fā)多個命令及對應(yīng)數(shù)據(jù),而下位機則可以依次執(zhí)行對應(yīng)命令并寫回對應(yīng)命令的命令執(zhí)行響應(yīng)包及響應(yīng)數(shù)據(jù)包執(zhí)行結(jié)果。根據(jù)實際使用需求可以每執(zhí)行完成一步就寫回該步的執(zhí)行結(jié)果,或整個命令集執(zhí)行完成后再統(tǒng)一把每步的響應(yīng)寫入對應(yīng)位置,確保了需要多次命令操作才能夠執(zhí)行完成某一功能的命令集合在掉電、異常重啟等情況下的執(zhí)行有效性。

對于標(biāo)準(zhǔn)命令,將其含有命令、數(shù)據(jù)、校驗等信息的整個標(biāo)準(zhǔn)命令包作為數(shù)據(jù)包發(fā)送到B區(qū),然后發(fā)送一條擴展命令到A區(qū),標(biāo)示該B區(qū)的數(shù)據(jù)為標(biāo)準(zhǔn)命令包,USB設(shè)備解析到該擴展命令后,即可從B區(qū)完整地取出該標(biāo)準(zhǔn)命令包,再按原有的標(biāo)準(zhǔn)命令執(zhí)行功能執(zhí)行該命令。

3 結(jié) 語

本文實現(xiàn)了一種確保下位機在未執(zhí)行上位機命令而掉電后,仍舊能夠在下次上電繼續(xù)執(zhí)行未完成操作的方案。設(shè)計方案覆蓋了基本型和擴展型兩種操作方式,對命令包格式和響應(yīng)包格式進行了相應(yīng)的描述。本方案可以確保Mass Storage類下位機對各類命令執(zhí)行的可靠性,即使在掉電或受異常干擾中斷命令執(zhí)行后也能夠在下次上電繼續(xù)執(zhí)行未完成命令,特別適合數(shù)據(jù)操作要求高、傳輸量大、USB連接不可靠的場合。

在國內(nèi)某手機芯片廠家的Cat1模塊實際生產(chǎn)射頻參數(shù)的校準(zhǔn)、綜測中,采用了本文的技術(shù)方案后,因夾具或者工人操作導(dǎo)致的USB Mass Storage類設(shè)備異常斷電并重新上電后,可以繼續(xù)在上次中斷的地方進行校準(zhǔn)、綜測,而不用重新開始,大大節(jié)約了繼續(xù)校準(zhǔn)、綜測的時間,提高工作效率。

本文的技術(shù)方案不但可以用于通信終端的射頻參數(shù)校準(zhǔn)、綜測環(huán)節(jié),還可以運用于任何有如下要求的Mass Storage類設(shè)備:當(dāng)遇到異常斷電并重新上電后需要繼續(xù)執(zhí)行上次中斷地方的程序。

猜你喜歡
基本型下位命令
只聽主人的命令
2019年9月基本型乘用車(轎車)生產(chǎn)匯總表
2019年3月基本型乘用車(轎車)銷售匯總表
2019年1月基本型乘用車(轎車)銷售匯總表
發(fā)射機房監(jiān)控系統(tǒng)之下位機
移防命令下達后
景洪電廠監(jiān)控系統(tǒng)下位機數(shù)據(jù)傳輸網(wǎng)絡(luò)改造
圍觀黨“下位”,吐槽帝“登基”
這是人民的命令
CAN總線并發(fā)通信時下位機應(yīng)用軟件設(shè)計
朔州市| 鹤壁市| 三明市| 民丰县| 商水县| 全南县| 赤峰市| 综艺| 招远市| 玉田县| 金门县| 宜宾市| 正镶白旗| 林芝县| 澎湖县| 竹北市| 平利县| 绥德县| 炉霍县| 长沙市| 瑞昌市| 吉安市| 响水县| 黄浦区| 青田县| 手游| 县级市| 铁岭市| 镇平县| 临沧市| 灯塔市| 沁阳市| 罗江县| 云林县| 乌兰浩特市| 区。| 嘉定区| 赤峰市| 手游| 青河县| 黄平县|