<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 系統調試信息的顯示方法

系統調試信息的顯示方法

作者: 時(shí)間:2012-03-07 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:提出在目標脫離開(kāi)發(fā)運行時(shí),如何通過(guò)串口在Windows的超級終端軟件中的一個(gè)具體。該有助于改進(jìn)質(zhì)量、縮短周期。

本文引用地址:http://dyxdggzs.com/article/149495.htm

1 ROM版本目標的調試問(wèn)題

一般的目標系統在開(kāi)發(fā)工具環(huán)境下的調試并不困難,但最終系統必須脫離開(kāi)發(fā)工具獨立運行,即使在開(kāi)發(fā)工具環(huán)境下完全正常的系統,ROM版本也往往會(huì )出現各種問(wèn)題。原因有兩人:一是開(kāi)發(fā)工具硬件環(huán)境和最終的目標硬件環(huán)境不完全相同;二是外部因素不同,實(shí)驗室中無(wú)法模擬現場(chǎng)的很多外部條件。對于硬件的調試,可以使用示波器等儀器;對于軟件的調試,一般則是軟件運行中的各種(如變量)。

我們知道,C語(yǔ)言中的“printf()”函數是學(xué)習C語(yǔ)言的人最了解和熟悉的一個(gè)函數。很多C語(yǔ)言教材一開(kāi)始就以“hello word”字符串來(lái)描述C語(yǔ)言的基本特片,其中唯一的語(yǔ)句就是調用“printf ()”函數。雖然該函數可以在屏幕上輸出,但一般的用戶(hù)軟件中只在調試時(shí)用它來(lái)顯示某些中間變量的結果,一旦程序調試完成,就將其刪除了,真正的應用信息(如菜單字符等)顯示往往其他的輸出函數。對于使用和學(xué)習C語(yǔ)言的程序員來(lái)說(shuō),printf()由于可以同時(shí)輸出不同類(lèi)型的數據,因此,它的使用是軟件調試的重要手段之一。

在TURBO C2.0編譯器中,printf()函數的實(shí)現依賴(lài)于操作系統。在嵌入式系統中,往往沒(méi)有操作系統或者操作系統不提供這個(gè)功能,也可能沒(méi)有顯示輸出部件,或顯示設備的空間有限,只能用于顯示應用信息。最常用的方法是通過(guò)目標系統的一個(gè)串口將信息發(fā)送給PC機來(lái)顯示,PC機上可以使用Windows的“超級終端”軟件接受和顯示信息,如圖1所示。

這種系統的硬件很簡(jiǎn)單,我們只說(shuō)明軟件的實(shí)現方法。為此,我們必須設計專(zhuān)用的、可以顯示各種數據類(lèi)型的printf()函數,以達到從串口或其他途徑輸出信息的目的。一般的C函數不同,printf()函數的參數數量和類(lèi)型是可變的,這是編寫(xiě)該函數的難點(diǎn)。要解決這個(gè)難是,必須先了解C函數參數傳遞的原理。

2 C函數的參數傳遞原理

C語(yǔ)言是一種計算機程序設計語(yǔ)言。它既具有高級語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為工作系統設計語(yǔ)言,編寫(xiě)系統應用程序,也可以作為應用程序設計語(yǔ)言,編寫(xiě)不依賴(lài)計算機硬件的應用程序。因此,它的應用范圍廣泛,不僅僅是在軟件開(kāi)發(fā)上,而且各類(lèi)科研都需要用到C語(yǔ)言,具體應用比如單片機以及嵌入式系統開(kāi)發(fā)。

C語(yǔ)言 avr單片機c語(yǔ)言高級程序設計是一種成功的系統描述語(yǔ)言,用C語(yǔ)言開(kāi)發(fā)的UNIX操作系統就是一個(gè)成功的范例;同時(shí)C語(yǔ)言又是一種通用的程序設計語(yǔ)言,在國際上廣泛流行。世界上很多著(zhù)名的計算公司都成功的開(kāi)發(fā)了不同版本的C語(yǔ)言,很多優(yōu)秀的應用程序也都使用C語(yǔ)言開(kāi)發(fā)的,它是一種很有發(fā)展前途的高級程序設計語(yǔ)言。

在大部分情況下,C語(yǔ)言是通過(guò)堆棧存儲器來(lái)傳遞參數(也有例外,C51的小模式則通過(guò)寄存器傳遞參數)。對于非指針類(lèi)型,傳遞的不是原來(lái)類(lèi)型的數據,而是對參數進(jìn)行了類(lèi)型轉換,如字符類(lèi)型(char)變成整型(int)拷貝到堆棧中、浮點(diǎn)類(lèi)型(float)變成雙精度類(lèi)型(double),如表1所列。表1中未列出的,則沒(méi)有轉換[4]。

表1

對于像字符數組之類(lèi)的指針參數,是將指針拷貝到堆棧中,而不是將數組中的所有內容傳送到堆棧中。比如,對函數fun(char *STr,int i,float a)的調用:

char str[10]=“welcome”;

int i=100; float a=1.14;

……

fun(str,i,a);

各個(gè)參烽str,i在堆棧中按先右后左的次序存放,表2所列為調用函數fun( )開(kāi)始時(shí)堆棧中的參數存放情況。此時(shí)函數fun()的代碼上尚未執行,函數中的局部變量也是在堆棧中,所以在函數執行結束后,局部變量將消失。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 方法 顯示 信息 調試 系統

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>