【正文】
動 /重啟執(zhí)行 c Ssignal 從某地址執(zhí)行 caddress Ssignal 單步執(zhí)行 s Ssignal 從某地址開始單步執(zhí)行 saddress Ssignal 重置 /中止程序 k no response 遠程調(diào)試器是嵌入式軟件里最常用到的下載和測試工具。嵌入式軟件開發(fā)人員已經(jīng)有了所需的主機 了,任何一個遠程調(diào)試器的價格并不會在全套跨平臺開發(fā)工具(編譯器、連接器、定址器等等)的價格上增加多少,還有調(diào)試器的供應(yīng)商們通常會提供他們的調(diào)試監(jiān)控器的源代碼,以增加他們的用戶群。和Ar 提供的主機軟件一起使用,這個調(diào)試監(jiān)控器就可以把程序直接下載到目標(biāo)板的 RAM 里并運行,你可以用 tload 工具來完成這一任務(wù)。39。GO39。在這種情況下,我們也許會以可重定址程序來開始,那么 tload 工具也會自動地在 RAM里第一個可利用的地址處為我們的程序重新定址。然后 Turbo Debugger 就可以單步執(zhí)行你的 C/C++和匯編程序,在程序里設(shè)置斷點,并可以在程序運行時監(jiān)控變量、寄存器和堆棧(注 1),下面是你可能用來啟動一個對閃爍 LED 程序的調(diào)試會話的命令: tdr tver Target Debugger Version Changer Copyright (c) Ar Control Systems Ltd 1994 Checking COM1 (press ESC key to exit)... Remote ident: TDR188EB version TDR88 set for TD version td rp1 rs3 Turbo Debugger Version Copyright (c) 1988,92 Borland International Waiting for handshake from remote driver (CtrlBreak to quit) Tdr命令實際是調(diào)用另外兩個命令的一個批處理文件。這里我們再一次使用了程序的可重定址版本,因為我們要把程序下載到 RAM 里并在那里執(zhí)行它。 rpl 代表“ remoteport(遠程端口)=1”( COM1), rp3 代表“ remotespeed(遠程速率) =3”( 38400 波特率),這些是同 Ar 調(diào)試監(jiān)控器通信所要求的參數(shù)。如果沒成功的話,可能是串行連接出了問題。 一旦進入 Turbo Debugger,你就會看到一個對話框顯示“ Program out of date on remote, sent over link?(遠程的程序已過期,是否通過鏈路發(fā)送?)”,選擇“ yes”后, 的內(nèi)容就會被下載到目錄 RAM 中,然后調(diào)試器會在 main處設(shè)置第一個斷點并指示調(diào)試監(jiān)控器運行程序到此處 。 使用標(biāo)準(zhǔn)的 Turbo Debugger 命令,你可以單步執(zhí)行程序、設(shè)置斷點、監(jiān)控變量和寄存器的值、做調(diào)試器允許的任何事。確認程序和調(diào)試器都正常工作之后,按下 Ar 板上的復(fù)位開關(guān)來復(fù)位復(fù)位嵌入式處理器,然后 LED 會停止閃爍, Turbo Debugger 又可以響應(yīng)你指令了。實際上, ICE取代了(或者仿真了)目標(biāo)板上的處理器。但是這是一種強有力的工具,在某些嚴格的環(huán)境下可以幫你很大忙。某些情況下,甚至能使用相同的前端調(diào)試器。這就允許仿真器在調(diào)試監(jiān)控器提供的功能外支持一些高級的調(diào)試特性,如:硬件斷點額實時跟蹤。不過這些軟斷點只能到指令提取級別,也就是相當(dāng)于“在提取該指令前停止運行”。硬件斷點允許響應(yīng)多種事件來停止運行。例如,你可以對事件“當(dāng)變量 foo 等于 15 同時 AX寄存器等于 0”設(shè)置一個硬件斷點。這個功能使你可以得知事件發(fā)生的精確次序,這就嫩幫助你回答諸如計時器中斷是發(fā)生在變量 bar 變成 94 之前還是之后這類的問題。 ROM仿真器 另外一種仿真器也值得在這里提一下。和 ICE 一樣,它是一個獨立的嵌入式系統(tǒng)并和主機與目標(biāo)板相連。對于嵌入式處理器,它就像一個只讀存儲芯片,而對于遠程調(diào)試器,它又像 一個調(diào)試器。首先,任何人都不需要為你的專有目標(biāo)硬件移植調(diào)試監(jiān)控器代碼。最后, ROM 仿真器完全替代了原有的 ROM,所以不會占用目標(biāo)板的存儲空間來容納調(diào)試監(jiān)控器代碼。模擬器是一個完全基于主機的程序,它模擬了目標(biāo)處理器的功能和指令集,它的用戶界面通常和遠程調(diào)試器的一 樣和比較類似。盡管模擬器有很多不足,它在項目的早期特別是沒有任何實際的硬件可以用來試驗程序的時候就相當(dāng)有用。 如果 你的程序正常工作,那么你知道這是某種形式的硬件問題。 到目前為止,一個模擬器最大的缺點是它僅能模擬處理器 ,而且 嵌入式系統(tǒng)經(jīng)常包含一 個或多個其他重要設(shè)備。 所以,你可能不會做太多的模擬器,一旦你有實際嵌入式硬件提供給您。因為他們只能查看信號處理器以外的 錯誤 ,但是,他們無法控制你的像一個調(diào)試器或仿真器軟件可以執(zhí)行流程。但是,再加上像一個遠程調(diào)試調(diào)試器或仿真器工具軟件,它們可以是非常寶貴 。它會有幾十個甚至上百 個輸入,它們分別只用來做一件事:它所連接的電信號的邏輯電平是 1還是0。大多數(shù)邏輯分析儀也允許你以特定的模式捕捉數(shù)據(jù)或“觸發(fā)器”。 注意:調(diào)試技巧 3:有時可能需要同時觀察運行著嵌入式軟件的目標(biāo)板上電信號的一個子集。一個技巧是在你感興趣的交互的前面加上一個輸出語句。例如,你可以使一個空閑的 I/O 引腳從 0到 1,然后邏輯分析儀就可以設(shè)置成響應(yīng)這個使勁的觸發(fā)器并開始捕獲后續(xù)的所有情況。在手頭沒有邏輯分析儀的情況下,示波器可以迅速觀察特定引腳上的電壓,也可以做一些更復(fù)雜的事情。結(jié)果,只有在沒有軟件調(diào)試工具的情況下它才會對你有用。 message passing with a mailbox system andsemaphores. The os_wait function of RTX51 can wait for the following events:interrupt。 signal from task or interrupt。semaphore. RTX51 Tiny which is a subset of RTX51 Full. RTX51 Tiny easily runs onsinglechip systems without offchip memory. However, program using RTX51Tiny can access offchip memory. RTX51 Tiny allows roundrobin taskswitching, supports signal passing and can be operated with interrupt functionsin parallel. The os_wait function of RTX51 Tiny can wait for the following events: timeout。 signal from task or rest of this section uses RTX51 to refer to RTX51 Full and RTX51 between the two are stated where applicable. Introduction Many microcontroller applications require simultaneous execution of multiplejobs or tasks. For such applications, a realtime operating system (RTOS) allowsflexible scheduling of system resources (CPU, memory, etc.) to several implements a powerful RTOS that is easy to use. RTX51 works withall 8051 derivatives. You write and pile RTX51 programs using standard C constructs andpiling them with C51. Only a few deviations from standard C are requiredin order to specify the task ID and priority. RTX51 programs also require thatyou include the or header file. When you select in theμVision2 dialog Options for Target Target the operating system, the linker addsthe appropriate RTX51 library file. Single Task Program A standard C program starts execution with the main function. In an embeddedapplication, main is usually coded as an endless loop and can be thought of as asingle task that is executed continuously. For example: RoundRobin Task Switching RTX51 Tiny allows a quasiparallel, simultaneous execution of several task is executed for a predefined timeout period. A timeout suspends theexecution of a task and causes another task to be started. The following exampleuses this roundrobin task switching technique. Simple C Program using RTX51 RTX51 starts the program with task 0 (assigned to job0). The functionos_create_task marks task 1 (assigned to job1) as ready for execution. Thesetwo functions are simple count loops. After the timeout p