1 / 32

第八章

第八章. 系統開發、模擬與除錯. 本章重點. 嵌入式系統開發流程 compiler 、 assembler 、 linker 開機程式與硬體抽象層 嵌入式系統開發環境. RS-232…. 在一般電腦上進行嵌入式 系統軟體的開發程序. 在嵌入式系統執行由開發工具 所建立出來的嵌入式軟體. HOST 與 TARGET. C++. C. 組合語言. 編譯器. 編譯器. 編譯器. 目的碼檔. 目的碼檔. 目的碼檔. 連結器. 可重定位器程式. 編譯器 : 跨平台編譯器 (Cross Compiler). 定位器.

tyson
Download Presentation

第八章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第八章 系統開發、模擬與除錯 嵌入式系統導論, 探矽工作室

  2. 嵌入式系統導論, 探矽工作室 本章重點 • 嵌入式系統開發流程 • compiler、assembler、linker • 開機程式與硬體抽象層 • 嵌入式系統開發環境

  3. 嵌入式系統導論, 探矽工作室 RS-232… 在一般電腦上進行嵌入式 系統軟體的開發程序 在嵌入式系統執行由開發工具 所建立出來的嵌入式軟體 HOST與TARGET

  4. 嵌入式系統導論, 探矽工作室 C++ C 組合語言 編譯器 編譯器 編譯器 目的碼檔 目的碼檔 目的碼檔 連結器 可重定位器程式 編譯器:跨平台編譯器(Cross Compiler) 定位器 定位器:重新定位(Relocation) 可執行檔 嵌入式系統軟體開發流程

  5. 嵌入式系統導論, 探矽工作室 編譯器的角色

  6. 嵌入式系統導論, 探矽工作室 編譯器步驟 • 語彙分析(lexical analysis) • 語法分析(Syntax analysis) • 語意分析(semantic analysis) • 中間碼的產生(intermediate code generate) • 程式碼的最佳化(code optimize) • 程式碼的產生(code generate)

  7. 嵌入式系統導論, 探矽工作室 語彙分析(lexical analysis) • 分析程式中每一個字眼(word)的意義是什麼: • 哪些是註解(comment),註解在編譯過程會被編譯器忽略掉 • 哪些是關鍵字(keyword,如int、for、while等 • 哪些是常數(constant),如1、12、”embedded”等 • 哪些是運算子(operator),如+、-、*、/等

  8. 嵌入式系統導論, 探矽工作室 語法分析(Syntax analysis) • 語法分析(Syntax analysis)主要是將程式符號,轉換成階層式的語法樹(Syntax tree)符號表示。在這個語法樹中,在正常情況下,階層最高的節點(node)為assign的符號,其餘的節點為其他的運算元符號,而葉子(leaf)就都是變數的標記(token)。

  9. 嵌入式系統導論, 探矽工作室 語意分析(semantic analysis • 語意分析(semantic analysis)是藉由語法樹(Syntax tree)來分析程式的邏輯與語法是否符合規定。這個階段就是用來分析程式的「文法」是否正確,已經從文字符號的階段進入了程式語意的判別。

  10. 嵌入式系統導論, 探矽工作室 中間碼的產生(intermediate code generate) • 中間碼的產生(intermediate code generate)就是從語法樹(Syntax tree)中,以一個節點(node)為基本單位,從最底層的節點依序往上,拆解成一個個最基本的運算式,而每一個節點也會賦予一個暫時性的符號。

  11. 嵌入式系統導論, 探矽工作室 程式碼的最佳化(code optimize) • 基本上就是化減一些不必要的暫時性節點符號。 • 當然,另外還有一些特別的最佳化演算法也會在這個階段使用,例如針對迴圈邏輯的最佳化有三種知名的演算法:code motion、induction variable、strength reduction;因為迴圈邏輯在語法上是最沒有執行效率的語法之一,因此需要特別的最佳化。或者,有時候編譯器會調整程式的前後順序,為了在下一階段程式碼的產生過程中,暫存器的使用數目降低。

  12. 嵌入式系統導論, 探矽工作室 程式碼的產生(code generate) • 編譯器的最後一個步驟就是將程式碼產生出來。若以c語言為例,這裡就是將最佳化後的中間碼,搭配微處理器的暫存器,逐一轉換成組合語言。

  13. 嵌入式系統導論, 探矽工作室 組譯器Assembler的角色

  14. 嵌入式系統導論, 探矽工作室 Assembler的first pass

  15. 嵌入式系統導論, 探矽工作室 Assembler的second pass

  16. 嵌入式系統導論, 探矽工作室 鏈結器的角色

  17. 嵌入式系統導論, 探矽工作室 Linker範例

  18. 嵌入式系統導論, 探矽工作室 ARM的鏈結腳本檔案 FLASH 0x24000000 0x4000000 { FLASH 0x24000000 0x4000000 { init.o (Init, +First) * (+RO) } 32bitRAM 0x0000 { vectors.o (Vect, +First) * (+RW,+ZI) } HEAP +0 UNINIT { heap.o (+ZI) } STACKS 0x40000 UNINIT { stack.o (+ZI) } }

  19. 嵌入式系統導論, 探矽工作室 boot loader • 初始化處理器 • 初始化必備硬體 • 初始化作業系統 • 在嵌入式系統中,bootloader也要負起更新系統程式、除錯的功能。 • 通常可以bootloader與開發平台(host)溝通,不論是透過何種介面。因此使用者可以透過bootloader監測系統的狀態,例如記憶體的使用情形,或者可以更新作業系統的程式碼,此時,bootloader就必須有唯讀記憶體或是快閃記憶體的驅動程式; • 或是當bootloader可以選擇由不同裝置開機時,同樣的bootloader也必須要事先建立相關的驅動程式。

  20. 嵌入式系統導論, 探矽工作室 硬體抽象層 • 由於嵌入式系統的特性,為了不同的應用,就會選擇不同的平台。而對於嵌入式作業系統而言,不同硬體平台之間的移植動作是非常繁雜的工作。為了降低移植時的複雜度,所以通常在嵌入式作業系統中,會將程式碼分成是否與硬體相關,而這些與硬體相關的程式碼,就可以視為所謂的硬體抽象層(Hardware Abstraction Layer)

  21. 嵌入式系統導論, 探矽工作室 Palm OS 5的架構

  22. 嵌入式系統導論, 探矽工作室 硬體抽象層的定義 • 針對微處理器核心架構(different architecture) • 針對微處理器核心系列(same architecture、variant serial) • 針對微處理器平台(same architecture、same serial、different platform)

  23. 嵌入式系統導論, 探矽工作室 ARM平台 HAL中斷致能範例 #define HAL_Enable_Interrupt_Example() asm volatile ( “mrs r3, cpsr;” “bic r3, r3, #0xc0;” “msr cpsr, r3” );

  24. 嵌入式系統導論, 探矽工作室 PowerPC平台 HAL中斷致能範例 #define HAL_Enable_Interrupt_Example() CYG_MACRO_START cyg_uint32 tmp1, tmp2; asm volatile ( “mfmsr %0;” “ori %1, %1, 0x8000;” “rlwimi %0, %1, 0, 16, 16;” “mtmsr %0;” :”=r” (tmp1), “=r” (tmp2) ); CYG_MACRO_END

  25. 嵌入式系統導論, 探矽工作室 系統層級的模擬環境

  26. 嵌入式系統導論, 探矽工作室 目標層級(target level)的模擬環境

  27. 嵌入式系統導論, 探矽工作室 ModelSim的電路模擬

  28. 嵌入式系統導論, 探矽工作室 Mentor Seamless

  29. 嵌入式系統導論, 探矽工作室 Host Target 監控 程式 遠端 除錯 整合式發展環境 嵌入式作業系統 廠商套件 驅動程式 自有套件 應用程式 常見的嵌入式系統除錯環境

  30. 嵌入式系統導論, 探矽工作室 ARM Debugger

  31. 嵌入式系統導論, 探矽工作室 ICE/ICD 除錯硬體

  32. 嵌入式系統導論, 探矽工作室 TARGET HOST Integrated Cross-Development Environment Applications Remote Monitor Sync. Tool Application Develop Kit Library Real-Time Kernel Monitor Download Tool Configuration Tool OS Emulator HAL & Drivers Customer Tools ROMization Tool Compiler, Assembler Linker Debugging Environment Communication Manager Serial/Parallel/IrDA... 總結

More Related