<button id="6ymue"><menu id="6ymue"></menu></button>
    • <s id="6ymue"></s>
    • 美章網 資料文庫 集成環境設計的要點探析范文

      集成環境設計的要點探析范文

      本站小編為你精心準備了集成環境設計的要點探析參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。

      可重定目標的硬件設計

      為了使硬件環境盡可能對GNUTools開發工具所支持的系列MCU通用,在設計時,采取核心板和擴展板的方式實現在硬件上盡可能的通用。把每種芯片的最小支撐電路單獨設計在一塊核心板上,把所有的模塊及I/O引腳引出來,以便把相應的模塊接口移到擴展板上,由于同一系列芯片的基本模塊的功能引腳數是相同的,只是引腳所處的位置不同而已,所以,每種MCU基本模塊完全可以移到擴展板上,在擴展板上設計這些模塊的支撐電路。考慮到嵌入式產品需要高端軟件和低端軟件進行通信,通信接口有RS-232串口和USB口兩種。因而,設計編程器時,既保留了串行接口,也加上了USB接口,這樣就更進一步地提高了系統在硬件上的可重定性。

      可重定目標的軟件設計

      SdIDE在軟件上的可重定性設計思路體現在如下兩個方面。

      (1)SdIDE模塊的可重定性設計

      為了使該開發環境適用于多種MCU型號,在模塊設計和編譯器設計方面做了深入的研究,因為這兩方面是SdIDE具有可重定性的關鍵點。首先,在模塊設計方面分為與MCU有關的部分(相關模塊)和與MCU無關的部分(獨立模塊),獨立模塊主要包括編輯、編譯出錯處理、makefile文件編寫,工程管理、函數及全局變量列表,界面設計等;相關模塊主要包括程序下載模塊,這些模塊也可以通過軟件的方法使其對某一系列MCU通用。

      (2)編程器的可重定性設計

      編程器主要是實現程序下載功能,編程器的通用一般只針對某一系列或某一芯片而言的,不可能做到完全通用。例如對FreescaleHCS12系列芯片,都有BKGD引腳,因而可以用BDM方式下載;C*CORE和M*CORE系列芯片由串口通過監控的方式下載;ARM和COLDFIRE系列芯片通過JTAG下載。下面以FreescaleHCS12系列芯片的程序下載模塊設計為例,來說明編程器的可重定性設計。

      編程器可重定性設計的關鍵技術在于如何處理HCS12系列MCU的Flash參數。要對不同芯片的Flash參數進行深入理解、比較和總結之后,才能對程序下載模塊進行設計。找出這些芯片有差異的Flash參數后,將其放在數據庫中,以便下載程序時,從該數據庫中讀取相關參數。設計好參數數據庫之后,PC方下載界面可以根據所選擇的芯片型號從配置文件和數據庫中獲取相應芯片的擦寫操作所需的參數值。表1給出了HCS12系列MCU中的幾款芯片的參數,這些參數針對不同的MCU,其值可能不同。

      用戶數據起始地址:將一頁用戶數據寫入相應空白芯片之前,要先將這一頁數據通過BDM頭寫入到RAM區,然后運行寫入程序,實現數據從RAM區寫入到ROM區。但由于不同芯片的RAM區大小和起始地址有可能不同,把一頁用戶數據寫入到RAM區時,其起始地址也會有所不同,所以將其設置為可變參數,使用時,從數據庫中讀取。

      標志位首地址:該參數是RAM區的一個地址,用于存放擦寫成功或出錯的標志信息,占兩個字節。每寫完一頁面用戶數據之后,PC方可從該地址處讀出一個字的內容,判斷Flash寫入操作是否成功,只有成功后,才寫下一頁用戶數據。

      寫入文件路徑和擦除文件路徑:由于每個芯片的Flash參數和空間不盡相同,因而每種芯片的擦除和寫入子程序也會有差異,因而,PC方要根據當前所選的MCU型號以及當前是擦除還是寫入操作來決定調用哪個MCU的寫入程序代碼文件(*Write.s19)或擦除程序代碼文件(*Erase.s19),以實現寫入或擦除操作。

      SdIDE軟件架構的可重定性設計

      本文設計的可重定目標集成開發環境SdIDE包含工程管理、編輯、編譯、鏈接、程序下載等功能,啟動的主界面如圖1所示。為了使SdIDE的軟件架構具有可重定目標的特性,因而在功能模塊上將其劃分為公共模塊和相關模塊。下面簡要闡述這些模塊的功能及其軟件架構的設計思想。

      1SdIDE獨立模塊

      SdIDE獨立模塊是指與編譯器和目標MCU無關的模塊,主要是完成工程管理與編輯功能。

      (1)編輯模塊

      該模塊可以實現對源文件編輯,使用MFC界面庫進行二次開發,支持剪切、復制、所有工程中查找、替換等常用功能,同時作者也在該環境中實現了完全支持中文和語法高亮顯示(SyntaxHighlight)功能,此部分主要的技術難點在于語法高亮顯示和解決半個漢字問題。使用MFC的RichEdit控件可以解決半個漢字此問題,但無法解決語法高亮功能,因而,筆者在RichEdit的基礎上重新編寫了語法高亮類,在實際測試中效果較好。

      (2)工程模塊

      在SdIDE集成開發環境中,文件的組織和調用都以工程的方式來進行操作。工程是一個非常重要的概念,它是用戶組織一個應用的所有源文件、設置編譯鏈接選項、生成調試信息文件和最終的目標文件的一個基本結構。提供對源文件、庫文件及其他輸入文件的管理,并含有編譯與鏈接等設置。

      2SdIDE的相關模塊

      SdIDE相關模塊是指與編譯器和目標MCU相關的模塊,完成編譯、鏈接、程序下載等功能。為了滿足可移植性,采用數據偶合的方式設計。

      (1)交叉編譯模塊

      包括C/C++編譯器、匯編器、鏈接器、目標文件格式轉換工具等。編譯模塊可根據選用的MCU型號調用GNU移植過來的m68hc11、m68k、arm、mcore或ccore等編譯器,源文件編譯成功后,在相應的工程目錄下生成標準的MotorolaS-record文件或Bin文件等;鏈接器根據鏈接定位信息,將可重定位的目標模塊鏈接成一個單一的、絕對定位的目標程序,鏈接后的目標程序中包含可裁剪的調試信息。

      (2)程序下載模塊

      程序下載模塊包括PC方模塊和MCU方模塊。PC方模塊主要是負責獲取MCU的環境變量及公用參數,分析重組S格式文件,最后通過調用TBDML動態鏈接庫函數把擦寫程序和用戶程序寫入RAM區,然后再運行存放于RAM區的擦除和寫入程序實現程序下載操作。MCU方模塊主要是編寫不同微處理器的Flash的擦除和寫入程序,存放在工程模板目錄中,供PC方下載數據時調用。

      SdIDE編譯模塊的可重定性設計

      SdIDE開發環境使用的是由GNU移植的GCC編譯器,GCC是由美國自由軟件基金(FSF)開發和維護的軟件,它是一個跨環境的C語言編譯器。GCC所支持的所有編譯器目錄都放在SdIDE開發環境的安裝目錄下,SdIDE根據所選定的MCU型號,決定調用相應的編譯器工具集。

      1更換編譯器的設計

      如何編寫較通用的makefile腳本文件是實現SdIDE可重定目標特性的關鍵點。makefile是編程人員和make之間的接口,本設計中各模塊的依賴關系主要體現在編寫的makefile文件中,makefile文件中的代碼內容設計成宏定義區和基于依賴關系的指令區兩大部分。前者主要是定義一些全局變量,可以在makefile的任何地方被引用。為了增加可移植性,與編譯器有關的路徑和編譯器名都用一個全局變量來定義,這樣,在更換編譯器時,只需要把GCC支持的編譯器目錄全部放在開發環境的安裝目錄下,以便程序調用,同時把當前所需的編譯器名賦給全局變量CompilerName,makefile腳本文件中的編譯器名就可用宏$(Compiler-Name)來編寫。

      2更換編譯參數的設計

      若編譯命令需要定義一組編譯參數,且這組編譯參數會被多個規則(或編譯器命令)引用,那么可把這組參數賦值給一個變量,把這個變量放在所有引用它的地方。當需要改變參數時,只需要在變量賦值的地方改變一下就可以了。變量可在makefile文件的宏定義區定義。

      編程器的可重定性設計

      編程器主要是完成系列MCU的程序下載功能,編程器的可重定性體現在根據所選的MCU型號不同,決定調用不同的程序下載模塊。例如對AT91RM9200T和MCF5271微控制器進行程序下載,則使用JTAG頭,因而要調用JTAG下載模塊。下面以FreescaleHCS12系列微控制器的下載為例,來闡述BDM方式下載,該方式對HCS12系列MCU都是可行的,它們都有BKGD引腳,支持BDM下載。

      1編程器PC方軟件設計

      編程器的PC方軟件功能包括S19文件分析模塊和Flash存儲器的擦除和寫入模塊。但采用BDM頭下載時還要包括TBDML通信模塊,該模塊負責通過USB接口將PC方的S-record機器碼寫入到空白的Flash存儲器的指定區域。S19文件分析模塊則負責對S-Record標準的S19文件進行分析,將文件的內容轉換成方便傳輸的格式,以及判斷文件中的程序的起始地址、頁數、是否越界等。下載程序先將Flash擦寫程序數據和用戶程序數據寫入到RAM的指定區域,當一頁的用戶程序數據寫入到事先分配的RAM區后,則可通過調用tbdml動態鏈接庫函數來實現擦除和寫入操作。BDM頭下載程序的工作流程如圖2所示。

      2編程器MCU方軟件設計

      編程器的MCU方的軟件功能主要包括Flash的擦除和寫入程序。由于在Flash的擦除和寫入過程中,Flash是不能讀的,故擦除和寫入Flash的程序要放在RAM中,擦除操作時,首先初始化相應Flash寄存器,然后調用整體擦除子程序開始對Flash進行整體擦除。寫入操作時,首先初始化相應Flash寄存器,然后讀取RAM區相應地址處的一頁用戶數據包,即分別讀出PPAGE寄存器的分頁值、起始地址、一次寫入的數據字個數,最后調用塊寫入子程序開始寫入數據。Flash擦除/寫入子程序流程圖如圖3所示。

      結語

      一套方便、穩定、適用范圍較廣的嵌入式集成開發環境肯定要有較好的可擴充性和可移植性,因而研制可重定目標IDE的難點在于軟件架構的可重定性設計。經過兩年的努力,本文在SdIDE的結構設計上運用“調用/返回、數據流、數據倉庫”等設計風格,初步實現了IDE的可重定性和通用性,目前SdIDE已投入到教學和實驗中進行測試,結果表明該系統運行較穩定,且擴展性較好。但是,完善、升級以及對新出品芯片的適應還需進一步去擴充,系統的功能和穩定性還有待去加強。嵌入式集成開發環境的開發在我國還基本處于一個剛起步的階段,道路還很漫長,但意義重大。

      作者:朱越奇聶章龍單位:常州信息職業技術學院

      主站蜘蛛池模板: 好爽好紧好大的免费视频国产| 精品国产AV色欲果冻传媒| 欧美丰满熟妇XXXX性| 国产精品蜜芽tv在线观看| 亚洲精品国产综合久久久久紧 | 99re66热这里只有精品17| poren黑人| 男男调教军警奴跪下抽打| 暴力调教一区二区三区| 国产真实乱子伦精品视频| 亚洲av色无码乱码在线观看| 四虎a456tncom| 日韩精品无码一区二区三区AV| 国产日韩中文字幕| 久久精品国产色蜜蜜麻豆| 风间由美性色一区二区三区| 日本三人交xxx69| 四虎影永久在线观看网址| 三级视频在线播放线观看| 精品久久久久久无码中文字幕一区| 娜露温泉无删减视频在线看| 人妻蜜と1~4中文字幕月野定规| avbobo网址在线观看| 欧美精品中文字幕亚洲专区| 国产精品亚洲欧美日韩区| 久草福利资源网站免费| 视频一区二区三区免费观看| 日韩a无v码在线播放| 国产99re在线观看只有精品| 一本久久A久久免费精品不卡| 男女国产一级毛片| 国产精品青青青高清在线观看| 亚洲人成影院在线无码按摩店| 99rv精品视频在线播放| 日本一本一道波多野结衣| 可爱男生被触手入侵下面| freesexvideos糟蹋hd| 欧美日韩国产剧情| 国产女人91精品嗷嗷嗷嗷| 中文字幕在线观看日韩| 热狗福利ap青草视频入口在线观看p引导下载花季传媒 |