專利名稱:Mon08接口批量數(shù)據(jù)傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及HC08系列微控制器的編程調(diào)試接口批量數(shù)據(jù)傳輸方法,具體 涉及一種用于MON08接口的數(shù)據(jù)通信,實(shí)現(xiàn)髙速批量數(shù)據(jù)傳輸。
背景技術(shù):
HC08系列MCU有近百種型號,具有穩(wěn)定性好、功耗低、帶有Flash存 儲器等特點(diǎn),在嵌入式系統(tǒng)中被廣泛選用。MON08接口是Freescale HC08系 列微控制器(MicroController Unit, MCU)的編程調(diào)試接口,在嵌入式產(chǎn)品的 研發(fā)及生產(chǎn)階段,大批量數(shù)據(jù)都要通過編程接口下載到MCU的存儲器中,而 MCU的下載及調(diào)試過程中,絕大部分時間都消耗在數(shù)據(jù)傳輸上,擦寫Flash 的時間很短。因此,提髙編程接口的數(shù)據(jù)傳輸速率,可以有效地提髙嵌入式產(chǎn) 品的研發(fā)和生產(chǎn)效率。
HC08系列MCU可以工作在兩種模式用戶模式和監(jiān)控模式。用戶模式 是MCU上電復(fù)位后,轉(zhuǎn)向復(fù)位矢量所指向的地址,執(zhí)行Flash中的用戶程序。 監(jiān)控模式是MCU在上電復(fù)位后,執(zhí)行監(jiān)控ROM中的程序(MCU出廠時,固 化在芯片中的程序)。監(jiān)控模式下MCU和外界通過MON08接口進(jìn)行交互,標(biāo) 準(zhǔn)的MON08接口如圖l所示。MCU進(jìn)入監(jiān)控模式需要一些外界條件,例如 IRQ引腳加髙電壓(1.5倍VDD)、某些1/0 口的特定電平。
在監(jiān)控模式下,微控制器內(nèi)部的監(jiān)控ROM程序開始工作,并通過I/0口 實(shí)現(xiàn)單線半雙工串行通信,為連接的主機(jī)提供服務(wù),這里的主機(jī)可能是PC機(jī), 也可能是另一個MCU。監(jiān)控模式下MCU以標(biāo)準(zhǔn)不歸零(NRZ)的數(shù)據(jù)格式進(jìn)行 異步串行通信,每傳輸l字節(jié)需要l位開始位、8位數(shù)據(jù)位和1位停止位,共 計(jì)10位,數(shù)據(jù)傳輸速率為9600bps(HC08中的GZ60系列是7200bps)。
MON08接口的基本功能是將用戶程序?qū)懭氲組CU的Flash存儲器中, Flash的擦寫是需要一定的時序來完成的,直接的MON08接口通信是不能實(shí) 現(xiàn)的。監(jiān)控ROM程序提供了 6條指令,實(shí)現(xiàn)對MCU內(nèi)存地址的讀、連續(xù)讀、 寫、連續(xù)寫、讀堆棧指針、運(yùn)行內(nèi)存中的程序(執(zhí)行RTI命令)。有了這6條指令,主機(jī)首先把Flash擦寫程序的目標(biāo)代碼發(fā)送到目標(biāo)MCU內(nèi)存中,再發(fā) 送一批用戶程序目標(biāo)代碼到目標(biāo)MCU內(nèi)存中,執(zhí)行寫Flash程序,將該批數(shù) 據(jù)寫入,然后再發(fā)送下一批程序代碼、寫入,直到所有程序數(shù)據(jù)寫入完畢。這 里將用戶程序代碼分批的原因在于①對Flash的寫入是按頁的方式來進(jìn)行 的,不同的MCU其頁大小也不相同,GP32的Flash頁大小為128字節(jié)② HC08系列MCU內(nèi)存較小,通常在128B 2KB, 一次緩存的數(shù)據(jù)不可能太多。
這些監(jiān)控指令的執(zhí)行也需要遵從嚴(yán)格的時序要求,主機(jī)每發(fā)送一字節(jié),目 標(biāo)MCU都會將該字節(jié)返回給主機(jī),供主機(jī)校驗(yàn)。圖2給出了向特定內(nèi)存單元 寫數(shù)據(jù)的時序圖,向目標(biāo)MCU指定內(nèi)存寫一字節(jié)數(shù)據(jù)需要先發(fā)送寫命令(命 令代碼是0x49),再發(fā)送內(nèi)存地址髙字節(jié)和低字節(jié),然后發(fā)送數(shù)據(jù),每一字節(jié) 都需要等待對方的回應(yīng),最后還需要等待12位的延時,才可以發(fā)送下一個命 令。因此,向目標(biāo)MCU內(nèi)存寫1字節(jié)數(shù)據(jù)需要時間為
1 + 10+2 + 10+1 + 10+2+10+1 + 10+2 + 10+1 + 10+2 + 10+1 + 11 + 1 = 105位時間
在批量數(shù)據(jù)傳輸時,寫第一字節(jié)需要地址信息,后續(xù)字節(jié)使用連續(xù)寫命令 (0x19),省略地址信息,發(fā)送l字節(jié)時間為105-46 = 59位
則發(fā)送32KB的數(shù)據(jù)所需要理論時間為
32X1024X59 + 9600=201.4秒
用基本的MON08接口通信傳輸32KB數(shù)據(jù)最少需要3分半鐘,而程序下 載時還需要擦除、寫入、寫入校驗(yàn)等時間,對于開發(fā)者或生產(chǎn)者來說,這是一 個漫長的時間。
因此,基本MON08接口通信的數(shù)據(jù)傳輸率很低,不適合于批量數(shù)據(jù)傳輸。
發(fā)明內(nèi)容
本發(fā)明目的是提供一種MON08接口批量數(shù)據(jù)傳輸方法,通過方法的改進(jìn), 提髙MON08接口通信的數(shù)據(jù)傳輸率,以加快開發(fā)和生產(chǎn)速度。
為達(dá)到上述發(fā)明目的,本發(fā)明采用的技術(shù)方案是 一種MON08接口批量 數(shù)據(jù)傳輸方法,包括下列步驟
(1) 編寫串行通信程序,編譯成目標(biāo)代碼,所述串行通信程序中,在數(shù)據(jù)傳 輸時,對每64 256字節(jié)數(shù)據(jù)進(jìn)行一次校驗(yàn);
(2) 采用基本的MON08接口通信方法將步驟(l)的目標(biāo)代碼發(fā)送至目標(biāo)MCU的內(nèi)存中并執(zhí)行;
(3)由編寫的串行通信程序?qū)⑺鑲鬏數(shù)臄?shù)據(jù)傳輸至目標(biāo)MCU,實(shí)現(xiàn) MON08接口的批量數(shù)據(jù)傳輸。
上述技術(shù)方案中,所述步驟(l)中的串行通信程序既可以采用異步通信方式 進(jìn)行數(shù)據(jù)傳輸,也可以采用同步通信方式進(jìn)行數(shù)據(jù)傳輸。為了加快傳輸速度, 優(yōu)選采用同步通信方式進(jìn)行數(shù)據(jù)傳輸。
其中,所述同步通信方式是,主機(jī)方發(fā)送數(shù)據(jù)時,先發(fā)送4個周期的"低 電平"同步信息,然后發(fā)送數(shù)據(jù)位,并將數(shù)據(jù)位信息持續(xù)10個周期;接收方 在接收到同步信息后,延時8個周期后接收信息位;主機(jī)方在接收數(shù)據(jù)時,先 發(fā)送4個周期的同步信息,然后將I/0 口置為輸入狀態(tài),延時6個周期后接收 信息位;接收方在接收到同步信息后,把需要發(fā)送的信息位發(fā)送到線上。
將基本的MON08通信方法稱為第一種方法,將本發(fā)明中采用異步通信方 式進(jìn)行數(shù)據(jù)傳輸?shù)姆椒ǚQ為第二種方法,將本發(fā)明中采用同步通信方式進(jìn)行數(shù) 據(jù)傳輸?shù)姆椒ǚQ為第三種方法,下面從傳輸速度、可靠性等方面對這三種通信 進(jìn)行比較。
1) 傳輸速度
基本的MON08通信方法速度最慢,第二種方法較快,第三種方法最快。 第一種方法完全使用基本的MON08接口通信,每個字節(jié)均需校驗(yàn),傳輸延時 較多,且通信速率限制在9600bps。第二種方法由于雙方的通信程序都是自己 編寫,靈活性較大,可以采用9600bps、 19200bps,甚至于38400bps的傳輸 速率,校驗(yàn)方法由用戶自定義。第三種方法由于采用同步通信方式,速度最快。
2) 可靠性
從理論上來講,第一種通信方法由于對每個字節(jié)都進(jìn)行校驗(yàn),最可靠。但 通過大量的實(shí)驗(yàn)驗(yàn)證,后兩種采用批量數(shù)據(jù)校驗(yàn)的方法也是可靠的,數(shù)據(jù)傳輸 出錯的情況約為5%。,并且這種錯誤也能校驗(yàn)出來。
3) 傳輸距離
第一、二種方法采用異步通信,通信距離可以達(dá)到幾米。第三種方法使用 同步方法,當(dāng)傳輸距離長時,線路對信號干擾比較明顯,通信質(zhì)量下降,通過 實(shí)驗(yàn)驗(yàn)證,傳輸距離在30厘米范圍內(nèi),這種通信方法的穩(wěn)定性很好,但由于 開發(fā)和生產(chǎn)過程中,接口距離通常很近,因此對本發(fā)明的實(shí)施并無影響??梢?,由于上述技術(shù)方案的采用,本發(fā)明與現(xiàn)有技術(shù)相比具有下列有益效
果
(1) 本發(fā)明通過改進(jìn)MON08接口的通信流程及通信方式,大大加快了大批 量數(shù)據(jù)傳輸?shù)耐ㄐ潘俣龋捎矛F(xiàn)有技術(shù),32KB程序下載用時大約是5分鐘而 采用本發(fā)明的技術(shù)方案,下載32KB程序僅需大約IO秒鐘時間。
(2) 本發(fā)明在大大提髙傳輸速度的同時,保證了數(shù)據(jù)傳輸?shù)目煽啃?,并且?可以根據(jù)傳輸距離的不同,選擇同步或異步方式進(jìn)行通信,適用范圍廣。
(3) 本發(fā)明創(chuàng)造性地通過將100字節(jié)左右的通信程序下載到目標(biāo)MCU上運(yùn) 行,此后由該程序控制通信,來實(shí)現(xiàn)傳輸速度的極大提髙,從而不需要對HC08 的硬件作任何改動,實(shí)現(xiàn)方便。
圖1是標(biāo)準(zhǔn)的MON08接口的示意圖2是現(xiàn)有技術(shù)中向特定內(nèi)存單元寫數(shù)據(jù)的時序圖3是實(shí)施例一中主機(jī)方MON08接口通信流程圖4是實(shí)施例二中主機(jī)向目標(biāo)MCU發(fā)送l位信號的時序圖5是實(shí)施例二中主機(jī)接收目標(biāo)MCU發(fā)送的l位信號的時序圖。
具體實(shí)施方式
下面結(jié)合附圖及實(shí)施例對本發(fā)明作進(jìn)一步描述
實(shí)施例一 一種MON08接口批量數(shù)據(jù)傳輸方法,包括下列步驟
(1) 編寫串行通信程序,編譯成目標(biāo)代碼,所述串行通信程序中,在數(shù)據(jù)傳 輸時,對每64 256字節(jié)數(shù)據(jù)進(jìn)行一次校驗(yàn);
(2) 采用基本的MON08接口通信方法將步驟(l)的目標(biāo)代碼發(fā)送至目標(biāo) MCU的內(nèi)存中并執(zhí)行;
(3) 由編寫的串行通信程序?qū)⑺鑲鬏數(shù)臄?shù)據(jù)傳輸至目標(biāo)MCU,實(shí)現(xiàn) MON08接口的批量數(shù)據(jù)傳輸。
為了提髙數(shù)據(jù)通信速度,在批量數(shù)據(jù)傳輸時,可以對每一批數(shù)據(jù)進(jìn)行校驗(yàn), 而不是對每個字節(jié)進(jìn)行驗(yàn)證。這時就不能完全依靠監(jiān)控ROM中的程序,而需 要編寫自己的串行通信程序,編譯成目標(biāo)代碼,在基本MON08接口通信的支
6持下,把這些代碼發(fā)送到目標(biāo)MCU內(nèi)存中并執(zhí)行,后續(xù)的數(shù)據(jù)在自己編寫的 串行通信程序的支持下進(jìn)行通信。依據(jù)這種思想,主機(jī)方MON08接口通信流 程如圖3所示。
使用自己編寫的串行通信程序(該程序編譯后的目標(biāo)代碼100字節(jié)),傳輸 32KB數(shù)據(jù)的理論時間為
(100X59+32X1024X8) + 9600"28秒
在編寫用于串行通信及校驗(yàn)的程序時,技術(shù)要點(diǎn)如下
1) 用I/O 口模擬串行通信,通信雙方采用相同的通信速率。如果雙方的 總線頻率不相同時,需要精確計(jì)算延時的周期數(shù),避免數(shù)據(jù)傳輸?shù)腻e位現(xiàn)象。 為了實(shí)現(xiàn)精確延時,編程時應(yīng)該是選用匯編語言。JB8芯片的總線頻率是 3MHz, GP32進(jìn)入監(jiān)控模式后的總線頻率是2.4576MHz,采用9600bps速率
通信時,JB8和GP32發(fā)送1位所需要的周期數(shù)分別為313個和256個。
<formula>formula see original document page 7</formula>
2) 編譯后的目標(biāo)代碼盡可能少。HC08系列MCU是針對低端的應(yīng)用,內(nèi) 存資源相對較少,通常為幾百個字節(jié)。在監(jiān)控模式下進(jìn)行程序下載,需要放置 擦寫Flash的程序、串行通信及校驗(yàn)程序、寫入Flash頁數(shù)據(jù)以及程序運(yùn)行的 變量堆棧數(shù)據(jù),所以串行通信及校驗(yàn)程序需要節(jié)省代碼量,盡可能選用操作碼 短的匯編指令。
3) 有選擇性地使用跳轉(zhuǎn)指令。串行通信及校驗(yàn)程序最終要搬到內(nèi)存執(zhí)行, 程序運(yùn)行空間和編譯時指定的存儲空間可能有所差異,因此程序中使用相對跳 轉(zhuǎn)指令BSR和BRA,避免絕對跳轉(zhuǎn)指令JSR和JMP。
4) 批數(shù)據(jù)校驗(yàn)采用"累加和"或"異或"的方式。不帶進(jìn)位的加法指令 "ADD,X"和異或指令"EOR,X"僅需要2個總線周期,執(zhí)行速度非??臁?br>
實(shí)施例二 一種MON08接口批量數(shù)據(jù)傳輸方法,包括下列步驟
(1) 編寫串行通信程序,編譯成目標(biāo)代碼,所述串行通信程序中,在數(shù)據(jù)傳 輸時,對每64 512字節(jié)數(shù)據(jù)進(jìn)行一次校驗(yàn);
(2) 采用基本的MON08接口通信方法將步驟(l)的目標(biāo)代碼發(fā)送至目標(biāo)MCU的內(nèi)存中并執(zhí)行;
(3)由編寫的串行通信程序?qū)⑺鑲鬏數(shù)臄?shù)據(jù)傳輸至目標(biāo)MCU,實(shí)現(xiàn) MON08接口的批量數(shù)據(jù)傳輸。
實(shí)施例一中采用的是異步通信方式,更適用于距離較遠(yuǎn)的場合,而使用 MON08接口通信時距離往往較短,可以采用同步方式。因此,本實(shí)施例中采 用同步通信方式。
主機(jī)方發(fā)送數(shù)據(jù)時,先發(fā)送4個周期的"低電平"同步信息,然后發(fā)送數(shù) 據(jù)位,并將數(shù)據(jù)位信息持續(xù)IO個周期接收方在接收到同步信息后,延時8 個周期后接收信息位,如圖4所示。
主機(jī)方在接收數(shù)據(jù)時,也先發(fā)送4個周期的同步信息,然后將I/0 口置為 輸入狀態(tài),延時6個周期后接收信息位;接收方在接收到同步信息后,把需要 發(fā)送的信息位發(fā)送到線上,如圖5所示。
這種串行數(shù)據(jù)通信使用自定義的串行通信協(xié)議,所有的通信都是由主機(jī)發(fā) 起和控制,在傳送每一位數(shù)據(jù)時,都是由一個髙到低的電平跳變信號來同步。 其傳送1位信息大約在15個總線周期,則傳送1字節(jié)用時15X8=120個總線 周期,再加上傳輸8位所用的循環(huán)控制100個總線周期,則傳送l字節(jié)只需要 220個總線周期。用這種同步方式進(jìn)行數(shù)據(jù)傳輸速率要遠(yuǎn)遠(yuǎn)高于異步串行數(shù)據(jù) 傳輸,此時傳輸32KB字節(jié)理論上所用的時間為
100 X 59+ 9600+(32 X 1024 X220)+ (2.4576 X106)"4秒
說明用這種方式進(jìn)行數(shù)據(jù)通信也依賴于MON08的基本串行通信,其編
譯后的目標(biāo)代碼大約在ioo字節(jié),所以在上述時間計(jì)算的前一部分是用于傳輸
這些代碼的時間。
從上面的計(jì)算可以看出,變"異步"為"同步"的MON08接口通信在數(shù) 據(jù)傳輸上有了質(zhì)的飛躍。在實(shí)際實(shí)現(xiàn)時,這種通信方式對信號質(zhì)量要求較髙, 避免毛刺信號的干擾,電路設(shè)計(jì)時要使用濾波電路,布線要合理。編程時,通 信雙方密切配合,嚴(yán)格遵從時序要求,同時要反復(fù)測試確保數(shù)據(jù)穩(wěn)定性。
8
權(quán)利要求
1. 一種MON08接口批量數(shù)據(jù)傳輸方法,其特征在于,包括下列步驟(1)編寫串行通信程序,編譯成目標(biāo)代碼,所述串行通信程序中,在數(shù)據(jù)傳輸時,對每64~512字節(jié)數(shù)據(jù)進(jìn)行一次校驗(yàn);(2)采用基本的MON08接口通信方法將步驟(1)的目標(biāo)代碼發(fā)送至目標(biāo)MCU的內(nèi)存中并執(zhí)行;(3)由編寫的串行通信程序?qū)⑺鑲鬏數(shù)臄?shù)據(jù)傳輸至目標(biāo)MCU,實(shí)現(xiàn)MON08接口的批量數(shù)據(jù)傳輸。
2. 根據(jù)權(quán)利要求l所述的MON08接口批量數(shù)據(jù)傳輸方法,其特征在于 所述步驟(l)中的串行通信程序采用同步通信方式進(jìn)行數(shù)據(jù)傳輸。
3. 根據(jù)權(quán)利要求2所述的MON08接口指量數(shù)據(jù)傳輸方法,其特征在于 所述同步通信方式是,主機(jī)方發(fā)送數(shù)據(jù)時,先發(fā)送4個周期的"低電平"同步 信息,然后發(fā)送數(shù)據(jù)位,并將數(shù)據(jù)位信息持續(xù)IO個周期;接收方在接收到同 步信息后,延時8個周期后接收信息位;主機(jī)方在接收數(shù)據(jù)時,先發(fā)送4個周 期的同步信息,然后將I/O 口置為輸入狀態(tài),延時6個周期后接收信息位;接 收方在接收到同步信息后,把需要發(fā)送的信息位發(fā)送到線上。
全文摘要
本發(fā)明公開了一種MON08接口批量數(shù)據(jù)傳輸方法,其特征在于,包括下列步驟(1)編寫串行通信程序,編譯成目標(biāo)代碼,所述串行通信程序中,在數(shù)據(jù)傳輸時,對每64~512字節(jié)數(shù)據(jù)進(jìn)行一次校驗(yàn);(2)采用基本的MON08接口通信方法將步驟(1)的目標(biāo)代碼發(fā)送至目標(biāo)MCU的內(nèi)存中并執(zhí)行;(3)由編寫的串行通信程序?qū)⑺鑲鬏數(shù)臄?shù)據(jù)傳輸至目標(biāo)MCU,實(shí)現(xiàn)MON08接口的批量數(shù)據(jù)傳輸。本發(fā)明通過改進(jìn)MON08接口的通信流程及通信方式,大大加快了大批量數(shù)據(jù)傳輸?shù)耐ㄐ潘俣?,同時保證了數(shù)據(jù)傳輸?shù)目煽啃浴?br>
文檔編號G06F13/42GK101446937SQ20081024378
公開日2009年6月3日 申請日期2008年12月15日 優(yōu)先權(quán)日2008年12月15日
發(fā)明者劉曉升, 朱巧明, 王宜懷, 龔聲蓉 申請人:蘇州大學(xué)