程躍武,TI 中國(guó)模擬產(chǎn)品應(yīng)用工程師
前言
MSC1210 是一款內(nèi)置 8051內(nèi)核及其他高性能外圍設(shè)備的24位Delta-sigma 模數(shù)轉(zhuǎn)換器,可為高精度數(shù)據(jù)采集系統(tǒng)提供片上解決方案。因此,MSC1210成為高精度"智能傳感器"優(yōu)選方案。對(duì)低于100nV的高精度工業(yè)智能傳感器輸出信號(hào),其關(guān)鍵是在不犧牲模擬性能的條件下進(jìn)行有效編碼調(diào)試,故本文主要針對(duì)智能傳感器開(kāi)發(fā)進(jìn)行探討,并介紹包括集成開(kāi)發(fā)環(huán)境(IDE)仿真器以及將仿真器與在系統(tǒng)調(diào)試器(ISDs)進(jìn)行比較的調(diào)試方法。
智能傳感器
過(guò)程控制儀表通過(guò)高精度模擬傳感信號(hào)來(lái)監(jiān)控控制設(shè)備,該傳感信號(hào)被轉(zhuǎn)換為 4~20mA 的標(biāo)準(zhǔn)模擬信號(hào)來(lái)進(jìn)行傳輸(它是長(zhǎng)期以來(lái)工業(yè)過(guò)程控制中普遍使用的一種傳輸方式)。隨著現(xiàn)代科技的發(fā)展,計(jì)算機(jī)如今已成為用來(lái)監(jiān)測(cè)、控制儀表系統(tǒng),來(lái)自中心點(diǎn)的傳感器線(xiàn)束及其群集間的監(jiān)控設(shè)備。這類(lèi)傳感器中集成了高精度的模數(shù)轉(zhuǎn)換器及高性能的處理器而成為智能傳感器。智能傳感器用更準(zhǔn)確、可靠的數(shù)字網(wǎng)絡(luò)以及更簡(jiǎn)單的內(nèi)部連接替代了 4~20mA 的傳輸線(xiàn),同時(shí),它集成了分布式控制功能,提高了整體性能并降低成本。
用于智能傳感器的 MSC1210
MSC1210包含了智能傳感器所需的多種功能,如:
l 高精度模數(shù)轉(zhuǎn)換:高于22位的有效精度;
l 嵌入式傳感信號(hào)調(diào)整電路:輸入緩存器、可編程增益放大、偏置數(shù)模轉(zhuǎn)換器、增益與偏置校正功能;
l 低功耗降低了對(duì)供電網(wǎng)絡(luò)的要求:小于4mW;
l 增強(qiáng)型的處理器內(nèi)核:每條指令4個(gè)機(jī)器周期的8051核;
l 嵌入式存儲(chǔ)器:程序 (32KB),數(shù)據(jù) (1.2KB)
l 高性能通信口:SPI口、FIFO,2個(gè)UART口;
l 可靠的工業(yè)標(biāo)準(zhǔn)電路:低電壓檢測(cè)、開(kāi)路檢測(cè)、看門(mén)狗時(shí)鐘電路、寬的工作條件(電源:2.7~5.25V,工作溫度:-40~+85°C)
智能傳感器編程系統(tǒng)
由于智能傳感器是集傳感器復(fù)雜信號(hào)轉(zhuǎn)換、過(guò)程控制以及網(wǎng)絡(luò)于一體的系統(tǒng),其代碼開(kāi)發(fā)必須解決以下問(wèn)題:
l 開(kāi)發(fā)系統(tǒng)對(duì)模擬信號(hào)精度的影響;
l 硬件的物理尺寸;
l 開(kāi)發(fā)主機(jī)到目標(biāo)系統(tǒng)的通信媒體;
l 實(shí)時(shí)控制與網(wǎng)絡(luò)時(shí)序;
l 開(kāi)發(fā)系統(tǒng)電源。
微系統(tǒng)控制器 (MSC) 提供了多種開(kāi)發(fā)環(huán)境以滿(mǎn)足不同的開(kāi)發(fā)需求。適用于MSC器件的開(kāi)發(fā)系統(tǒng)。該開(kāi)發(fā)環(huán)境可用于仿真系統(tǒng)和在系統(tǒng)調(diào)試。在系統(tǒng)調(diào)試器 (ISD) 又可分為基于軟件和基于硬件的調(diào)試。在這些方案中,Keil與Raisonance仿真器、MSCMon終端監(jiān)視器以及Keil ISD51 IDE監(jiān)視器均適用于智能傳感器程序開(kāi)發(fā)。
用來(lái)初始化智能傳感器的模擬器集成開(kāi)發(fā)環(huán)境
集成開(kāi)發(fā)環(huán)境 (IDE) 是一套用戶(hù)化的圖形接口開(kāi)發(fā)工具,該工具集成在同一環(huán)境中,可縮短程序開(kāi)發(fā)周期并減少程序錯(cuò)誤,從而還可提高軟件質(zhì)量。IDE在該環(huán)境中提供諸如編輯、匯編、編譯、鏈接、項(xiàng)目管理、修訂控制以及器件仿真等工具。一般情況下,IDE仿真器在 Microsoft? Windows? 仿真8051器件,在UNIX平臺(tái)下的仿真器的使用并不普遍。
仿真器可使用戶(hù)無(wú)需實(shí)際硬件便可仿真程序的運(yùn)行過(guò)程。用戶(hù)可驗(yàn)證算法和時(shí)序,仿真外設(shè)、中斷及輸入輸出口。這一點(diǎn)尤為重要,因?yàn)檫@可使用戶(hù)在沒(méi)有完成硬件的情況下進(jìn)行程序開(kāi)發(fā)和系統(tǒng)性能的評(píng)估。圖4為用于 MSC 設(shè)備的 IDE 仿真器的結(jié)構(gòu)框圖。用戶(hù)可以進(jìn)行反匯編、斷點(diǎn)設(shè)置、存儲(chǔ)器監(jiān)測(cè)/修改、程序運(yùn)行跟蹤以及外設(shè)監(jiān)控等操作。仿真器也支持程序檢測(cè)工具,該工具可"標(biāo)識(shí)"已執(zhí)行過(guò)的程序。仿真器還提供性能分析工具,可記錄執(zhí)行時(shí)間,以便用戶(hù)分析程序的性能。而仿真器最常用的是單步執(zhí)行功能,它可單部"進(jìn)入"或"越過(guò)"目標(biāo)函數(shù)。仿真器中的機(jī)器周期計(jì)數(shù)非常準(zhǔn)確,因此可輕松評(píng)估無(wú)效的執(zhí)行時(shí)間。
普通 PC Windows IDE 仿真器包括Keil調(diào)試器以及Raisonance調(diào)試器。Keil IDE 用戶(hù)手冊(cè)可以作為仿真器具體操作的參考。Raisonance IDE 調(diào)試特方法似于與 Keil IDE 。請(qǐng)參考本文結(jié)束部分的"相關(guān)網(wǎng)站"。
使用IDE仿真器對(duì)智能傳感器進(jìn)行程序開(kāi)發(fā)的優(yōu)點(diǎn)
l 由于無(wú)須任何硬件參與開(kāi)發(fā),仿真是一種低成本的程序開(kāi)發(fā)方法;
l 程序開(kāi)發(fā)可以在系統(tǒng)硬件完成之前開(kāi)始;
l IDE仿真器最適合智能傳感器的初部程序開(kāi)發(fā)。
使用IDE仿真器對(duì)智能傳感器進(jìn)行程序開(kāi)發(fā)的缺點(diǎn)
l 無(wú)法仿真精確的模擬信號(hào);
l 難以仿真過(guò)程控制中的網(wǎng)絡(luò)時(shí)序及實(shí)時(shí)轉(zhuǎn)換;
l 當(dāng)軟件開(kāi)發(fā)進(jìn)入必須有最終硬件參與共同完成的階段時(shí),就需要在目標(biāo)系統(tǒng)或 ISD(指令式系統(tǒng)設(shè)計(jì))中完成。
對(duì)于智能傳感器開(kāi)發(fā)來(lái)說(shuō),特設(shè)調(diào)試區(qū)是不夠的
與PC仿真不同的是,ISD在實(shí)際系統(tǒng)中執(zhí)行并調(diào)試軟件。特設(shè)調(diào)試是最簡(jiǎn)單的方法,只需在需要的地方插入調(diào)試代碼。例如,可簡(jiǎn)單添加一個(gè)打印語(yǔ)句并查看其結(jié)果。這種方式僅適用于簡(jiǎn)單的程序調(diào)試,當(dāng)軟件長(zhǎng)度增加時(shí),出現(xiàn)的若干個(gè)打印語(yǔ)句就會(huì)變得難以控制了。
智能傳感器的在系統(tǒng)調(diào)試
ISD 開(kāi)發(fā)環(huán)境在智能傳感器中內(nèi)置調(diào)試支持。開(kāi)發(fā)程序會(huì)處理來(lái)自傳感器的實(shí)際系統(tǒng)輸入并提供瞬時(shí)系統(tǒng)響應(yīng),而不是系統(tǒng)仿真。因此,可解決系統(tǒng)級(jí)問(wèn)題,如:傳感器精度、控制系統(tǒng)穩(wěn)定性以及傳感器網(wǎng)絡(luò)吞吐量等。如圖3所示,ISD 分為兩類(lèi):軟件方式和硬件 方式。軟件方式ISD 又分為基于終端的ISD與基于 IDE 的ISD兩類(lèi)。終端調(diào)試包括一通用監(jiān)控器及片上調(diào)試器。IDE調(diào)試包括源監(jiān)控器與閃存 ISD;谟布腎SD又分為在電路仿真器 (ICE) 與內(nèi)建調(diào)試器模塊 (BDM)。
由于智能傳感器是緊湊型系統(tǒng),它們大多不能容忍占用額外電路板空間的、增加功耗及系統(tǒng)成本的外部存儲(chǔ)器。因此,MSC1210必須提供ISD 所需的所有資源。包括ISD代碼空間、CPU 的時(shí)序處理的ISD路徑以及ISD口。
需要外部存儲(chǔ)器的軟件方式ISD,如通用 MON51、Keil MON51 及 Raisonance MON51,這些工具都不是智能傳感器開(kāi)發(fā)的最佳選擇。而需要額外 ICE 連接總線(xiàn)的硬件 ISD 也是如此,該硬件 ISD 會(huì)消耗更大 ICE 總線(xiàn)功率,產(chǎn)生更多系統(tǒng)噪聲。在系統(tǒng)調(diào)試盡量不要采用 ICE,需要外部存儲(chǔ)器的ICE及 ISD 只能用于半成品開(kāi)發(fā)。
軟件ISD調(diào)試方式是智能傳感器開(kāi)發(fā)的理想選擇
對(duì)于智能傳感器等遠(yuǎn)程目標(biāo)系統(tǒng)的監(jiān)控器是嵌入在存儲(chǔ)器中的 ISD 軟件監(jiān)控器。ISD監(jiān)控程序用于用戶(hù)程序與調(diào)試端程序之間的程序銜接。監(jiān)控器將程序從編程端(例如采用片上通用異步收發(fā)器的個(gè)人電腦端程序)下載到目標(biāo)系統(tǒng)存儲(chǔ)器,然后進(jìn)行功能調(diào)試,諸如存儲(chǔ)器或特殊功能寄存器的讀取和修改、中央處理器的狀態(tài)請(qǐng)求、用戶(hù)程序轉(zhuǎn)移、單步或斷點(diǎn)操作等。
傳感器網(wǎng)絡(luò)作為調(diào)試端口
緊湊型遠(yuǎn)程智能傳感器在連接端口到終端時(shí),可能會(huì)產(chǎn)生問(wèn)題。一個(gè)可行的方法是通過(guò)傳感器網(wǎng)絡(luò)將傳感器與終端連接起來(lái),完成命令、響應(yīng)及用戶(hù)程序的下載等。然而,由于傳感器網(wǎng)絡(luò)標(biāo)準(zhǔn)種類(lèi)繁多,用戶(hù)需要專(zhuān)門(mén)設(shè)計(jì)一個(gè)帶有傳感器網(wǎng)絡(luò)處理的ISD監(jiān)控程序。
通過(guò)傳感網(wǎng)絡(luò)或調(diào)試端口下載用戶(hù)程序
包括MSC1210在內(nèi)的可編程微控制器一般都帶有內(nèi)置的串/并行閃存編程操作功能。用戶(hù)只需將 MSC1210 設(shè)定為閃存編程模式,便可通過(guò)UART0 把用戶(hù)程序下載到遠(yuǎn)程傳感器中。若沒(méi)有調(diào)試端口,或系統(tǒng)需要盡可能減少網(wǎng)絡(luò)連接傳感器的數(shù)量時(shí),用戶(hù)程序可通過(guò)一般傳感網(wǎng)絡(luò)直接下載。MSC1210的可編程閃存具有自動(dòng)更新的能力。換句話(huà)說(shuō),在運(yùn)行嵌入式ISD監(jiān)控程序Load User Code 時(shí), MSC1210內(nèi)置于閃存中的監(jiān)控程序會(huì)將用戶(hù)碼下載并保存到同一閃存中。
MSC1210 IAP 閃存
在下載用戶(hù)程序時(shí),嵌入式閃存因忙于執(zhí)行寫(xiě)、刪除操作。這時(shí),CPU不可對(duì)閃存操作,故MSC1210帶有一個(gè)可提供閃存擦寫(xiě)程序的2KB嵌入式自啟動(dòng)ROM。該ROM程序可用于嵌入式閃存的內(nèi)部在應(yīng)用編程 (IAP)。MSC1210 用戶(hù)應(yīng)用程序,如ISD的監(jiān)控程序,可以使 ROM 程序?qū)﹂W存進(jìn)行編程操作。
ISD 監(jiān)控器 - 嵌入式 MSCMon
ISD監(jiān)控器可通過(guò)通用的監(jiān)控程序進(jìn)行修改,該程序在因特網(wǎng)上隨處可見(jiàn),并且大部分已通過(guò)測(cè)試適合MSC1210,如:Steve Kemplin 編寫(xiě)的 MonPlus、Paul Stoffregen 編寫(xiě)的 PaulMon 以及 Ultramon(編者不明)。
MSCMon - 片上 MSC 監(jiān)控程序
除了快閃的內(nèi)部在應(yīng)用程序外,嵌入式 ROM 還帶有用于監(jiān)控程序及其應(yīng)用的其他支持程序。利用 autobaud、put_string或cmd_parser等系統(tǒng)引導(dǎo)調(diào)試子例程,用戶(hù)可獲得最低開(kāi)銷(xiāo)的調(diào)試設(shè)置 - MSCon。
嵌入式 MSC 調(diào)試子例程不僅支持基本調(diào)試命令,如:S-單步、B-中斷 以及Q-繼續(xù),同時(shí)支持包括CP-程序頁(yè)刪除、CW-程序?qū)憽P-X頁(yè)數(shù)據(jù)刪除 以及 L-裝載等的閃存命令。使用MSCMon 可大幅度節(jié)約調(diào)試空間,最低配置的 MSCon 僅需29字節(jié)的快閃程序空間。此外,由于用戶(hù)程序儲(chǔ)存在閃存中,下載程序可作為最終應(yīng)用。完整的命令列表如圖6所示。值得一提的是,MSC 監(jiān)控程序保存在閃存中,通過(guò)Load User Code命令下載用戶(hù)程序。由于 MSC 監(jiān)控程序的存儲(chǔ)要求很低,用戶(hù)程序可以連接在 MSCMon上。
MSCon 需要 PC 調(diào)試終端,如Hyper-term、Tera-term、Procomm 或 Telix。在沒(méi)有調(diào)試端口或調(diào)試終端的情況下,就需要有用戶(hù)傳感器網(wǎng)絡(luò)程序。
匯編與源程序調(diào)試
采用 RS-232 端口的典型調(diào)試終端程序時(shí),沒(méi)有源程序或監(jiān)控操作的信息。源程序調(diào)試,如單步執(zhí)行需要機(jī)器代碼與源代碼之間的關(guān)聯(lián)表,因此只支持匯編級(jí)調(diào)試。而 PC IDE 程序與監(jiān)控程序通過(guò)特殊的握手信號(hào),獲得一般監(jiān)控程序和MSCMon所沒(méi)有的外部源碼信息。將這些高性能源級(jí)接口與調(diào)試命令連接,使用戶(hù)操作變得簡(jiǎn)單易行。
Keil ISD51 監(jiān)控程序是閃存中的內(nèi)嵌程序,與 IDE通信實(shí)現(xiàn)源級(jí)調(diào)試。IDE的圖象用戶(hù)接口可大大提高調(diào)試效率。用戶(hù)可隨時(shí)對(duì)CPU 寄存器及其中的任何存儲(chǔ)器內(nèi)容進(jìn)行監(jiān)控。由于它是源級(jí)監(jiān)視程序,其調(diào)試質(zhì)量要遠(yuǎn)遠(yuǎn)優(yōu)于匯編級(jí)監(jiān)視程序。而ISD51的小容量要求使得監(jiān)控程序與用戶(hù)碼在目標(biāo)系統(tǒng)中的編譯和下載同時(shí)完成。MSC1210帶有一內(nèi)建硬件斷點(diǎn),用于檢測(cè)硬件中的斷點(diǎn)地址。ISD51 充分利用硬件斷點(diǎn)功能,執(zhí)行性能比通過(guò)軟件實(shí)現(xiàn)提高了100倍。
盡管 Keil ISD51 是極具吸引力的工具,但仍需要 RS232 調(diào)試端口。另外指令式系統(tǒng)設(shè)計(jì)的監(jiān)控程序與用戶(hù)傳感器網(wǎng)絡(luò)之間的通信設(shè)置部分需要單獨(dú)開(kāi)發(fā)。
總結(jié)
由于ISD監(jiān)控程序內(nèi)置在智能傳感器中,最終的智能傳感器不會(huì)由于程序開(kāi)發(fā)裝置而降低了模擬性能。MSCMon 與 Keil ISD51 監(jiān)控器只需較小的代碼空間。針對(duì)某些對(duì)代碼空間較敏感的應(yīng)用領(lǐng)域,在產(chǎn)品設(shè)計(jì)階段可考慮采用帶有較大存儲(chǔ)器的MSC1210系列版本,到實(shí)際生產(chǎn)中再降低內(nèi)存。指令式系統(tǒng)設(shè)計(jì)監(jiān)控器在調(diào)試階段無(wú)須附加硬件,這樣可有效降低開(kāi)發(fā)成本。
摘自 電子設(shè)計(jì)技術(shù)