1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      通過CPU仿真器(ICE)實現對嵌入式操作

      更新時間: 2007-09-27 09:20:29來源: 粵嵌教育瀏覽量:1187

        對于開發嵌入式系統,軟件調試一直是一個難度大、直接影響產品質量的重要環節。由于嵌入式系統本身不具備調試環境,又有較高的實時性要求,所以必須要有外部調試工具的協助工作。ICE仿真器作為嵌入式調試的核心設備,可以幫助用戶實現斷點調試、單步運行、寄存器與內存讀寫、閃存燒寫等功能。

             嵌入式系統通??梢苑譃橛布⒂布寗印崟r操作系統以及上層應用等幾部分。其中實時操作系統是整個系統的管理者,起著承上啟下,合理分配系統資源的作用。操作系統的開發、調試是系統開發的重要環節。如果操作系統不能穩定運行,整個系統就無法正常工作;反之,操作系統正常工作了,再進行上層應用開發就會變得快速、穩定、可靠。同時,穩定的系統也有利于進行各種相關測試。


      圖1  ICE仿真器工作示意圖

        日本橫河數字計算機公司出品的AdvicePro仿真器產品,通過對實時操作系統TCB(Task Control Block)的解析,非常直觀地顯示操作系統的資源信息以及各進程的狀態,為客戶提供穩定的系統調試平臺。以橫河數字計算機公司為大唐移動提供的實時操作系統ThreadX調試方案為例,ThreadX是一種以占用空間小、可靠性高、實時性高、完全源代碼透明而聞名的實時操作系統,完全與Green Hills Software的MULTI IDE集成,并包含可識別內核的調試(kernel awareness debugging)、工程項目管理、源代碼瀏覽、事件跟蹤分析、代碼分析,用于系統及應用項目監控。作為多任務系統,在系統運行時,會產生多個線程互相通信,交替工作。ThreadX的各個線程的信息都保存在TCB結構體中,ThreadX的TCB結構體的一部分如下:

        typedef  struct TX_THREAD_STRUCT
        {
        ULONG       tx_thread_id;           /* Control block ID         */
        ULONG       tx_run_count;           /* Thread's run counter     */
        VOID_PTR    tx_stack_ptr;           /* Thread's stack pointer   */
        VOID_PTR  tx_stack_start;         /* Stack starting address   */
        VOID_PTR    tx_stack_end;           /* Stack ending address     */
        ULONG       tx_stack_size;          /* Stack size               */
        ULONG       tx_time_slice;          /* Current time-slice       */
        ULONG  tx_new_time_slice;      /* New time-slice           */
        CHAR_PTR  tx_thread_name;         /* Pointer to thread's name */
        UINT        tx_priority;            /* Priority of thread (0-31)*/
        UINT        tx_state;               /* Thread's execution state */
        UINT   tx_delayed_suspend;     /* Delayed suspend flag     */
        UINT        tx_suspending;          /* Thread suspending flag   */
        UINT  tx_preempt_threshold;   /* Preemption threshold     */
       ULONG  tx_priority_bit;        /* Priority ID bit          */
        }

        線程的信息保存在TCB結構體中,因此只要能夠對TCB進行解析,就可以獲取各線程的相關信息,跟蹤系統狀態。例如,在圖2所示的系統中,通過解析,我們可以知道,該系統中共有9個線程被啟動,同時工作。其中線程System_Timer_Thread擁有的優先級,狀態為SUSPENDED。


      圖2  多線程狀態表示界面

        在多任務系統中,每個進程都擁有獨立使用的堆棧,用于保存進程在函數調用、中斷處理時產生的臨時信息、數據。適當地為堆棧分配空間,是維護系統穩定,節約系統資源的一個核心環節。因為,如果為堆棧分配的空間過小,當需要保存的信息較多時,堆棧就可能會溢出,從而導致系統崩潰;反之,如果給堆棧分配的空間過大,就會浪費寶貴的系統資源。AdvicePro的系統堆棧分析功能,可以直觀地幫助用戶了解到系統堆棧的狀態,控制余量,在保證系統穩定的前提下,節省系統資源,提高系統效率。

        通過線程堆棧資源表示界面(圖3),可以清楚地觀察到各線程堆棧的當前狀態。例如為線程System_Timer_Thread分配的堆??臻g是0x801f5a3~0x801f1a4,大小為400個雙字,當前堆棧指針指向0x801f514,已使用空間占全部空間的14%。這樣就可以非常直觀地了解到堆棧的使用狀況,有效預防由于堆棧溢出而引起的系統崩潰。


      圖3  線程堆棧資源表示界面

        AdvicePro的實時操作系統調試功能是通過TCL腳本語言來實現的。TCL是一種很通用的腳本語言,它幾乎在所有的平臺上都可以解釋運行,功能強大,是Tool Command Language的縮寫,主要適用于發布命令給一些交互程序,如文本編輯器、調試器和shell。它有簡單的語法和很強可擴充性,TCL可以創建新的過程以增強其內建命令的執行能力。AdvicePro的調試軟件MicroView-Plus中內嵌了TCL解釋器,用戶可以根據需要自行定制界面,增加了產品的靈活性。

        以上,我們只是以ThreadX為例,簡單介紹了AdvicePro仿真器在嵌入式實時操作系統調試中的應用。作為日本成熟的嵌入式測試產品,AdvicePro在Symbian、Linux、Nucleus等操作系統上也有相當豐富的實際經驗。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 台湾AV国片精品福利 | 在线观看国产亚洲欧美 | 伊人色综合一区二区三区 | 一区二区三区国产免费 | 香港三级欧美国产精品 | 亚洲综合男人的天堂色婷婷 |