亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

環(huán)境設(shè)計(jì)

淺析環(huán)境設(shè)計(jì)的要點(diǎn)

時(shí)間:2024-09-28 13:50:27 環(huán)境設(shè)計(jì) 我要投稿
  • 相關(guān)推薦

淺析環(huán)境設(shè)計(jì)的要點(diǎn)

  一套方便、穩(wěn)定、適用范圍較廣的嵌入式集成開發(fā)環(huán)境肯定要有較好的可擴(kuò)充性和可移植性,因而研制可重定目標(biāo)IDE的難點(diǎn)在于軟件架構(gòu)的可重定性設(shè)計(jì)。下面是YJBYS小編整理的環(huán)境設(shè)計(jì)的要點(diǎn)相關(guān)知識,希望對你有幫助!

  可重定目標(biāo)的軟件設(shè)計(jì)

  SdIDE在軟件上的可重定性設(shè)計(jì)思路體現(xiàn)在如下兩個(gè)方面。

  (1)SdIDE模塊的可重定性設(shè)計(jì)

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

  (2)編程器的可重定性設(shè)計(jì)

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

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

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

  標(biāo)志位首地址:該參數(shù)是RAM區(qū)的一個(gè)地址,用于存放擦寫成功或出錯(cuò)的標(biāo)志信息,占兩個(gè)字節(jié)。每寫完一頁面用戶數(shù)據(jù)之后,PC方可從該地址處讀出一個(gè)字的內(nèi)容,判斷Flash寫入操作是否成功,只有成功后,才寫下一頁用戶數(shù)據(jù)。

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

  SdIDE軟件架構(gòu)的可重定性設(shè)計(jì)

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

  1SdIDE獨(dú)立模塊

  SdIDE獨(dú)立模塊是指與編譯器和目標(biāo)MCU無關(guān)的模塊,主要是完成工程管理與編輯功能。

  (1)編輯模塊

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

  (2)工程模塊

  在SdIDE集成開發(fā)環(huán)境中,文件的組織和調(diào)用都以工程的方式來進(jìn)行操作。工程是一個(gè)非常重要的概念,它是用戶組織一個(gè)應(yīng)用的所有源文件、設(shè)置編譯 鏈接選項(xiàng)、生成調(diào)試信息文件和最終的目標(biāo)文件的一個(gè)基本結(jié)構(gòu)。提供對源文件、庫文件及其他輸入文件的管理,并含有編譯與鏈接等設(shè)置。

  2SdIDE的相關(guān)模塊

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

  (1)交叉編譯模塊

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

  (2)程序下載模塊

  程序下載模塊包括PC方模塊和MCU方模塊。PC方模塊主要是負(fù)責(zé)獲取MCU的環(huán)境變量及公用參數(shù),分析重組S格式文件,最后通過調(diào)用TBDML動 態(tài)鏈接庫函數(shù)把擦寫程序和用戶程序?qū)懭隦AM區(qū),然后再運(yùn)行存放于RAM區(qū)的擦除和寫入程序?qū)崿F(xiàn)程序下載操作。MCU方模塊主要是編寫不同微處理器的 Flash的擦除和寫入程序,存放在工程模板目錄中,供PC方下載數(shù)據(jù)時(shí)調(diào)用。

  SdIDE編譯模塊的可重定性設(shè)計(jì)

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

  1更換編譯器的設(shè)計(jì)

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

  2更換編譯參數(shù)的設(shè)計(jì)

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

  編程器的可重定性設(shè)計(jì)

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

  1編程器PC方軟件設(shè)計(jì)

  編程器的PC方軟件功能包括S19文件分析模塊和Flash存儲器的擦除和寫入模塊。但采用BDM頭下載時(shí)還要包括TBDML通信模塊,該模塊負(fù)責(zé) 通過USB接口將PC方的S-record機(jī)器碼寫入到空白的Flash存儲器的指定區(qū)域。S19文件分析模塊則負(fù)責(zé)對S-Record標(biāo)準(zhǔn)的S19文件 進(jìn)行分析,將文件的內(nèi)容轉(zhuǎn)換成方便傳輸?shù)母袷,以及判斷文件中的程序的起始地址、頁?shù)、是否越界等。下載程序先將Flash擦寫程序數(shù)據(jù)和用戶程序數(shù)據(jù)寫 入到RAM的指定區(qū)域,當(dāng)一頁的用戶程序數(shù)據(jù)寫入到事先分配的RAM區(qū)后,則可通過調(diào)用tbdml動態(tài)鏈接庫函數(shù)來實(shí)現(xiàn)擦除和寫入操作。BDM頭下載程序 的工作流程如圖2所示。

  2編程器MCU方軟件設(shè)計(jì)

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

【淺析環(huán)境設(shè)計(jì)的要點(diǎn)】相關(guān)文章:

現(xiàn)代環(huán)境設(shè)計(jì)的淺析08-19

書房環(huán)境設(shè)計(jì)布局的要點(diǎn)07-13

書房環(huán)境設(shè)計(jì)布局要點(diǎn)09-10

淺析躍層設(shè)計(jì)要點(diǎn)10-15

淺析大型商場的購物環(huán)境設(shè)計(jì)09-21

企業(yè)文化管理要點(diǎn)淺析09-30

淺析售樓處景觀要點(diǎn)06-22

淺析幼兒園環(huán)境設(shè)計(jì)中的色彩與造型09-03

淺析日本留學(xué)申請獎(jiǎng)學(xué)金的相關(guān)要點(diǎn)10-18

淺析抽屜結(jié)構(gòu)設(shè)計(jì)的要點(diǎn)10-07