讀書筆記吧

導航欄

×
你的位置: 筆記網 > 讀書筆記 > 導航

嵌入式系統設計師工作計劃(集合十一篇)_嵌入式系統設計師工作計劃

發表時間:2023-03-07

嵌入式系統設計師工作計劃(集合十一篇)。

[1] 嵌入式系統設計師工作計劃

1. 緒論

電控機械式自動變速器(Automatic Mechanical Transmission,AMT)具有傳動效率高、成本低、操作容易、駕駛舒適等優點,已成為車輛自動變速器發展的一個重要方向。AMT 的核心部件是電控單元(TCU),實時采集和檢測輸入信號(發動機轉速、輸入軸轉速和車速,油門踏板位置、節氣門開度、變速箱油溫等以及各種狀態信號)并進行調理、存儲,同時,TCU 根據這些運行參數進行工況判斷并發出控制信號,完成車輛的平穩起步或自動換擋,從而使車輛獲得優良的舒適性、燃油經濟性與動力性能。較之傳統的控制器,TCU 有更多的傳感器,執行器以及更為復雜的控制算法,若TCU 設計不合理,難以滿足實時性與可靠性的要求,同時,如果換擋規律不合理,汽車難以獲得較好的燃油經濟性和動力性。本文從TCU 硬件和軟件設計做了相應的介紹。

2.TCU 軟件設計

TCU 軟件部分的核心是控制策略,其主要部分是最佳換擋規律。本控制器采用兩種換擋控制策略,即經濟性換擋規律,綜合性換規律,通過模式選擇開關進行切換,使用Simulink 搭建的換擋控制策略。

Simulink 模型無法直接燒寫到單片機中運行, 編寫好的程序通過Simulink 提供的RTW 工具生成可用的C 代碼, 編寫接口嵌入到軟件系統中。生成的C 代碼是上層核心算法程序,只提供與底層程序的接口,而底層程序則須自己編寫并留出對應接口和上層代碼對應接口進行連接[3]。然后把相應的C 代碼添加到CCS 中的工程文件中,并編寫代碼的接口,實現軟件三部分的無縫連接;其中驅動程序包括信號輸入通道設置與信號處理驅動程序、輸出通道設置與輸出處理、通信設置與數據轉換。

3. TCU 硬件設計

根據TCU 的功能需求,把硬件電路劃分以下幾個部分:信號采集輸入調理電路、執行器控制電路以及主控電路。

(1) 、主控電路:TCU 的硬件電路選擇了TMS320F2812 主控芯片,兩個16 位通用定時器,以負責離合器轉速信號、車速信號等脈沖信號的采集;8 個16 位的脈寬調制(PWM)通道、可以實現對離合器電磁閥、換擋電磁閥的控制;16 通道A/D 轉換器,在采集節氣門位置、離合器位置等傳感器輸入的多路模擬信號的應用中,可以簡化硬件,提高系統可靠性;擁有改進的局域網絡(eCAN)支持CAN2.0B 協議,以實現串行信號的輸入輸出以及與汽車發動機ECU 的信息交換,實現ECU 之間的CAN 通信。

(2)、 輸入電路: 對于主控芯片TMS320F2812 芯片上帶有AD 轉換模塊的處理芯片, 其輸入的模擬信號需要經過簡單的濾波、放大后才可接入DSP。開關量信號采用光電隔離來實現信號的轉換,數字信號調理部分的作用是將仿正弦信號經過處理后,變成電平范圍在DSP 允許范圍內的方波信號。數字信號調理部分的設計采用先濾波后整形,最后光電隔離的辦法。

(3)、 TMS320F2812 主控芯片EV 外設提供的PWM 外設功能,對電路進行控制,但,由控制器輸出的PWM 波的峰值電壓只有5V, 不足以驅動電磁閥, 這就需要電磁閥驅動電路將PWM 控制信號的功率進行放大,從而控制電磁閥正常工作。

4. 結論

自行設計了TCU 軟硬件, 對設計的TCU 做了相應的硬件在環試驗, 利用Real Time Workshop 實現控制模型向C 代碼的轉化,優化后下載到TCU,進行了硬件在環仿真實驗,篇幅有限,本文不做具體說明。試驗結果表明,設計的該TCU,能按照控制策略實時、準確、可靠的控制AMT 的換擋過程,同時,同時獲得了較好的經濟性以及動力性能。為AMT 控制器的開發提供了參考。

[2] 嵌入式系統設計師工作計劃

4.1簡單內存管理模型

在設計之初,最簡單直接的一種技術其實就是"不管理",即所有靜態分配在棧中、動態分配在堆中的變量和數據結構,這二者的分配、釋放,全交給編譯器、鏈接器和運行時庫去完成,設計者只需合理設置系統棧、堆和任務棧。

4.2靜態內存分配方式

在大多數情況下,靜態分配普遍適應于嵌入式系統,因為在操作的過程中,有些程序段的應用和狀態基本上都是固定不變的,所以適應性比較強。

在執行程序之前,靜態內存實質上就已經進行了,有著比較高的運行效率;對于內存在需求上的狀況,在對其進行編譯的時候就能夠進行準確的計算;對于在內存的分配上,所應用的時間是比較短的,并且這些動作基本上都是固定不變的;對于已經分配完成的內存,一般情況下,是不進行歸還的,而且很少有碎片;對于程序進行的測試也是比較容易的,并且有著很高的可靠性。以上這些優點使得靜態內存的分配在很多標準要求比較高的系統中都能夠使用,如果一些系統的要求特變高,對于在使用中,一定不能夠出現延時或者是失敗的分配現象產生的話,那么靜態內存分配模式就可以很好的滿足這些條件,在開始對其進行編譯的時候,就可以將這些需要的內存進行分配。

4.3動態內存分配方式

對于靜態內存分配來講,主要注重的方面是效率和安全方面,而對于動態內存分配來說則比較注重于靈活性的掌握。在進行動態的內存分配模式下,對于內存空間的要求,程序是在目標的模塊在進行鏈接之前就已經分配完成的,在程序進行工作的過程當中,是允許繼續附加一定的內存或者是在內存的空間上進行移動工作的,也就是說對內存進行分配的工作不一定是要在程序運行之前就要完成的,在程序運行期間也是可以逐步的進行分配的。這種做法在一定程度上減少了浪費的情況,使得很多不被使用的內存不進行分配,對于內存的總體需求降低了要求;對于設計的質量來講有了很大的提高,使系統在進行編寫的時候將更加的簡單容易;在程序運行的過程中對內存進行分配,這樣就在系統進行啟動的時候減少了運行的時間。

在對動態內存進行分配的時候,程序員在對程序進行編寫的過程中,可以全身心的將精力放在對于程序的設計上,而不需要對內存的分配問題傾注過多的精力。在程序和硬件系統之間關聯性不是特別高的時候,那么對于程序在進行移植方面就有了很大的便利,比如有一些系統不是單純的為了嵌入式系統而設計的,那么也可以將其很容易的移植到嵌入式系統當中。如入說,在嵌入式系統應用的條件下,對于網絡協議棧在一定的平臺使用下,為了達到一定的條件,能夠在使用系統的時候更加的靈活,在使用系統的時候,使得其中的每一個功能之間都能夠進行平衡的選擇,那么這個系統就必須可以適應對于動態內存的分配。

4.3.1內存碎片

內存碎片是動態分配,尤其是直接在系統堆中分配的不分區方式的主要問題。在嵌入式實時操作系統中,多次的分配和釋放內存,會把原來很大的一塊連續內存區域逐漸分割成許多小而且互不相鄰的內存區域,也就是內存碎片。內存碎片主要有兩種:一種是數據結構未用完它所分配到的內存塊所產生的"內部碎片";另一種是兩個已分配數據塊之間的內存由于太小而無法用于存儲任何東西造成的“外部碎片”。

4.3.2內存丟失

內存丟失是一塊已經分配但永遠不會被釋放的內存區,是應用程序所造成的缺陷。嵌入式系統要長時間運行,就要確保絕對沒有內存丟失。內存塊使用完后,特定的塊必須重新放回它以前所屬的分區,否則可能造成內存丟失。

[3] 嵌入式系統設計師工作計劃

嵌入式系統本身是一個相對模糊的定義。嵌入式系統已經滲透到我們生活中的每個角落,工業、服務業、消費電子……,而恰恰由于這種范圍的擴大,使得“嵌入式系統”更加難于明確定義。

舉個簡單例子:一個手持的mp3是否可以叫做是嵌入式系統呢?答案肯定是“是”。另外一個PC104的微型工業控制計算機你會認為它是嵌入式系統嗎?當然,也是,工業控制是嵌入式系統技術的一個典型應用領域。然而比較兩者,你也許會發現二者幾乎完全不同,除了其中都嵌入有微處理器。那是否可以說嵌入著微處理器的設備就是嵌入式系統?那鼠標中也有單片機,能叫嵌入式系統嘛?

那到底什么是嵌入式系統?莫非嵌入式系統只是一個難以定義的抽象概念?

嵌入式系統的歷史

雖然嵌入式系統是近幾年才風靡起來的,但是這個概念并非新近才出現。從20世紀七十年代單片機的出現到今天各式各樣的嵌入式微處理器,微控制器的大規模應用,嵌入式系統已經有了近30年的發展歷史。

作為一個系統,往往是在硬件和軟件交替發展的雙螺旋的支撐下逐漸趨于穩定和成熟,嵌入式系統也不例外。

嵌入式系統的出現最初是基于單片機的。70年代單片機的出現,使得汽車、家電、工業機器、通信裝置以及成千上萬種產品可以通過內嵌電子裝置來獲得更佳的使用性能:更容易使用、更快、更便宜。這些裝置已經初步具備了嵌入式的應用特點,但是這時的應用只是使用8位的芯片,執行一些單線程的程序,還談不上“系統”的概念。

提示:最早的單片機是Intel公司的 8048,它出現在1976年。Motorola同時推出了68HC05,Zilog公司推出了Z80系列,這些早期的單片機均含有256字節的RAM、4K的ROM、4 個8位并口、1個全雙工串行口、兩個16位定 時 器。之后在80年代初,Intel又進一步完善了8048,在它的基礎上研制成功了8051,這在單片機的歷史上是值得紀念的一頁,迄今為止,51系列的單片機仍然是最為成功的單片機芯片,在各種產品中有著非常廣泛的應用。

從80年代早期開始,嵌入式系統的程序員開始用商業級的“操作系統”編寫嵌入式應用軟件,這使得可以獲取更短的開發周期,更低的開發資金和更高的開發效率,“嵌入式系統”真正出現了。確切點說,這個時候的操作系統是一個實時核,這個實時核包含了許多傳統操作系統的.特征,包括任務管理、任務間通訊、同步與相互排斥、中斷支持、內存管理等功能。其中比較著名的有Ready System 公司的VRTX、Integrated System Incorporation (ISI)的PSOS和IMG的VxWorks、QNX公司的QNX 等。這些嵌入式操作系統都具有嵌入式的典型特點:它們均采用占先式的調度,響應的時間很短,任務執行的時間可以確定;系統內核很小,具有可裁剪,可擴充和可移植性,可以移植到各種處理器上;較強的實時和可靠性,適合嵌入式應用。這些嵌入式實時多任務操作系統的出現,使得應用開發人員得以從小范圍的開發解放出來,同時也促使嵌入式有了更為廣闊的應用空間。

90年代以后,隨著對實時性要求的提高,軟件規模不斷上升,實時核逐漸發展為實時多任務操作系統(RTOS),并作為一種軟件平臺逐步成為國際嵌入式系統的主流。這時候更多的公司看到了嵌入式系統的廣闊發展前景,開始大力發展自己的嵌入式操作系統。除了上面的幾家老牌公司以外,還出現了Palm OS,WinCE,嵌入式Linux,Lynx,Nucleux,以及國內的Hopen,Delta Os等嵌入式操作系統。隨著嵌入式技術的發展前景日益廣闊,相信會有更多的嵌入式操作系統軟件出現。

在中國嵌入式系統領域,比較認同的嵌入式系統概念是:嵌入式系統是以應用為中心,以計算機技術為基礎,并且軟硬件可裁剪,適用于應用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。它一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統以及用戶的應用程序等四個部分組成,用于實現對其他設備的控制、監視或管理等功能。

[4] 嵌入式系統設計師工作計劃

2016年嵌入式系統復習試題及答案

一、填空題:

1、試列舉三種主流的嵌入式處理器:( ARM )、( MIPS )、(PowerPC)。

2、ARM處理器共有(37)個寄存器,其中包括(31個通用寄存器)和(6個狀態寄存器)。

3、寄存器R13在ARM指令中(堆棧指針SP )。R14也稱(程序連接寄存器LR)在程序里的作用是(程序計數器PC的備份)。當發生中斷或異常時,對應分組寄存器分別是(R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用來保存R15的返回值)。

4、ARM微處理器支持兩種指令集:(ARM)和(Thumb)。

5、寄存器R15用作(程序計數器PC)。該寄存器在ARM狀態下,(位[1:0]為00),位[31:2]用于保存PC;在Thumb狀態下,(位[0]為0),位[31:1]用于保存PC。

6、CPSR用作( 狀態寄存器 ),CPSR可在任何運行模式下被訪問。每一種運行模式下又都有一個專用的物理狀態寄存器,稱為(程序狀態保存寄存器SPSR)。

7、Thumb狀態下的寄存器集是ARM狀態下寄存器集的一個子集,程序可以直接訪問的通用寄存器是(R0—R7,PC,SP,LR,CPSR)。

8、ARM指令中條件執行功能是通過( 指令中添加條件碼)來實現的,包含的條件碼位于指令的最高(四)位。

9、試列舉五種以上常見的嵌入式操作系統:(μC/OS-II)、(Vxworks)、(WinCE)、(Linux/μCLinux)、(PalmOS)。

10、計算機結構中,哈佛結構和馮?諾依曼結構的主要區別是(指令與數據分開),ARM7采用(馮?諾依曼結構),ARM9采用(哈佛結構)。

11、ARM處理器采用(Thumb指令)操作來訪問SFR。

12、在ARM匯編語言程序設計中,語句一般是由(指令操作碼)、(指令的條件碼)、(目標寄存器編碼)和(包含第一個操作數的寄存器編碼)組成。

二、名詞解釋:

ARM處理器:Advanced RISC Machine。先進的RISC指令集處理器。

交叉編譯:在一種計算機環境中運行的編譯程序,能編譯出在另外一種環境下運行的代碼,這個編譯過程就叫交叉編譯。

異常:是指CPU在執行指令時出現的錯誤,即不正常的情況。異常是與當前所執行的程序有關的。如存取數據或指令錯誤、計算結果溢出等。

大端格式:字數據的高字節存儲在低地址中,而字數據的低字節則存放在高地址中。

小端格式:低地址中存放的是字數據的低字節,高地址存放的是字數據的高字節。

尋址方式:處理器根據指令中給出的(地址)信息,尋找操作數(物理地址)的方式。

嵌入式系統:廣義上:凡是不用于通用目的的可編程計算機設備,就可以算是嵌入式計算機系統。狹義上而言,嵌入式系統是指以應用為核心,以計算機技術為基礎,軟硬件可裁剪,對功能、可靠性、成本、體積和功耗嚴格要求的專用計算機系統。

GNU:GNU(GNU’s Not Unix),它的目標是建立可自由發布和可移植的類Unix操作系統。

偽指令:是匯編語言程序里的特殊指令助記符,在匯編時被合適的機器指令替代。

偽操作:為匯編程序所用,在源程序進行匯編時由匯編程序處理,只在匯編過程起作用,不參與程序運行。

RTOS :實時系統,能夠對外部事件做出及時響應的系統。

三、簡答題:

1、 簡述采用RISC架構的ARM微處理器的特點。

a.采用固定長度的指令格式,指令規整,簡單,基本尋址2~3種

b.使用單周期指令,便于流水線操作

c.大量使用寄存器,提高指令的執行效率

d.所有的指令都可以根據前面的執行后,決定是否執行從而提高指令的執行效率

e.可以加載/存儲指令,批量傳輸數據,以提高數據的傳輸效率

2、 選擇嵌入式微處理器時,應考慮那些因素?

調查市場上已有的CPU供應商。

CPU的處理速度

技術指標。

處理器的低功耗。

處理器的軟件支持工具。

處理器是否內置調試工具。

處理器供應商是否提供評估板

片內存儲容量

3、 若允許FIQ、IRQ中斷,CPSR如何設置?

FIQ: CPSR[4:0]=0B10001 IRQ: CPSR[4:0]=0B10010

CPSR[5]=0

CPSR[6]=0

CPSR[7]=0

4、 舉例說明ARM的各種尋址方式。

寄存器尋址:LDR R1,R2

寄存器間接尋址:LDR R1,[R2]

寄存器偏移尋址:LDR R1,[R2,-R4,LSL#3]

立即尋址:LDR,R3,#34

多寄存尋址:LDMIA R0,{R1,R3,R4,R5}

5、 對比說明ADR、ADRL與LDR的區別與聯系。

ADR:小范圍的地址讀取偽指令。

ADRL:中等范圍的地址讀取偽指令。

LDR:大范圍的地址讀取偽指令。

ADR偽指令功能:將基于PC相對偏移的地址值或基于寄存器相對偏移的地址值讀取到寄存器中。

ADRL偽指令功能:將基于PC相對偏移的地址值或基于寄存器相對偏移的地址值讀取到寄存器中,比ADR偽指令可以讀取更大范圍的地址。

LDR偽指令功能:用于加載32位立即數或一個地址值到指定的寄存器。

6、 比較ARM920T和ARM720T的主要異同。

ARM9 5級流水線 獨立的指令總線哈佛結構

ARM7 3級流水線 數據與指令一起 馮·諾依曼結構

8、 簡述S3C2410 Nand flash存儲器的啟動過程。

(1)完成復位

(2)如果自動啟動模式使能,NAND Flash存儲器的前4KB自動復制到Steppingstone內部緩沖器中

(3)Steppingstone映射到nGCS0

(4)CPU在Steppingstone的4KB內部緩沖器中開始執行啟動代碼

9、 請從廣義和狹義兩個方面簡述嵌入式系統的含義。

答案:嵌入式系統:Embedded System

廣義上:凡是不用于通用目的的可編程計算機設備,就可以算是嵌入式計算機系統。

狹義上而言,嵌入式系統是指以應用為核心,以計算機技術為基礎,軟硬件可裁剪,對功能、可靠性、成本、體積和功耗嚴格要求的專用計算機系統。

10、簡述Bootloader啟動過程。

1、第一階段

(1)、基本的硬件設備初始化

(2)、為階段2代碼準備RAM空間

(3)、拷貝階段2代碼到RAM空間

(4)、設置好堆棧

(5)、跳轉到階段2的C程序入口點

2、第二階段

(1)、初始化本階段要使用到的硬件

(2)、檢測系統內存映射(memory map)

(3)、將kernel和根文件系統映像從flash讀到RAM空間

(4)、為kernel設置啟動參數

(5)、調用內核

12、ARM7指令是幾級流水線,各階級執行什么操作?

ARM7的三級流水線

1取指:從程序存儲器中取指令,放入指令流水線。(占用存儲器訪問操作)

2譯碼:指令譯碼。(占用譯碼邏輯)

3執行:執行指令/讀寫REG。(占用ALU及數據路徑)

13、請簡述嵌入式軟件Bootloader的兩種工作模式。

啟動加載模式:啟動加載模式稱為“自舉”(Autonomous)模式。即Bootloader從目標機上的某個固態存儲設備上將操作系統加載到 RAM 中運行,整個過程并沒有用戶的介入。啟動加載模式是 Bootloader的正常工作模式,在嵌入式產品發布的時侯,Bootloader必須工作在這種模式下。

下載模式:在這種模式下,目標機上的Bootloader將通過串口連接或網絡連接等通信手段從主機下載文件。下載內容及存儲:主要是下載內核映像和根文件系統映像等。從主機下載的文件通常首先被Bootloader保存到目標機的RAM中,然后再被 Bootloader寫到目標機上的FLASH 類固態存儲設備中。

14、寫出不少于12類嵌入式產品中的常用接口。

UART接口、SPI接口、I2C接口、ADC和觸摸屏接口、USB接口、以太網接口、外存接口、LCD接口、時鐘接口、PWM接口、中斷接口、JTAG接口、VGA接口、音頻接口

15、簡述ARM9處理器的7種運行模式。

1、用戶模式(usr):非特權模式,大部分任務執行在這種模式。——正常程序執行的模式

2、快速中斷模式(fiq):當一個高優先級(fast)中斷產生時將會進入這種模式。——高速數據傳輸或通道處理

3、外部中斷模式(irq):當一個低優先級(normal)中斷產生時將會進入這種模式。——通常的中斷處理

4、管理模式(svc):當復位或軟中斷指令執行時將會進入這種模式。——供操作系統使用的一種保護模式

5、中止模式(abt):當存取異常時將會進入這種模式。——虛擬存儲及存儲保護

6、未定義模式(und):當執行未定義指令時會進入這種模式——軟件仿真硬件協處理器

7、系統模式(sys):供需要訪問系統資源的操作系統任務使用——特權級的操作系統任務

16、ARM9處理器的尋址方式有那些?

立即尋址、寄存器尋址、寄存器間接尋址、基址尋址、堆棧尋址 、塊拷貝尋址、相對尋址

17、ARM9有哪些處理器模式?哪些是特權模式?哪些是異常模式?

異常模式:除用戶模式、系統模式之外的五種模式稱為異常模式。特點:以各自的中斷或異常方式進入,并且處理各自的中斷或異常。

特權模式:除用戶模式之外的工作模式又稱為特權模式 特點:應用程序可以訪問所有的系統資源,可以任意地進行處理器模式的切換

18、ARM7在ARM狀態下有多少個寄存器?通常堆棧指針使用哪個寄存器?連接寄存器LR有什么功能?

有37個32位的寄存器其中31個為通用寄存器;6個為狀態寄存器。

R13:寄存器R13在ARM指令中常用作堆棧指針SP。而在Thumb指令集中,某些指令強制性的要求使用R13作為堆棧指針。

R14:寄存器R14也稱作子程序鏈接寄存器(Subroutine Link Register)或鏈接寄存器LR。當執行BL子程序調用指令時,R14中得到R15(程序計數器PC)的.備份。其他情況下,R14用作通用寄存器。

19、見28

20、Linux的主要特點有那些?

開放性、多用戶、多任務、良好的用戶界面、設備獨立性、豐富的網絡功能、可靠的安全系統、良好的可移植性。

21、常用的Bootloader有那些?

1、vivi

2、RedBoot

3、U-Boot

22、Makefile和Make各實現什么功能?

Makefile文件內容 按照規則,對系統中本目錄下的文件(.c、.s、.o、.h、.lib等)根據相互關系和要求進行組織,設定各自的編譯方法,指定所生成的目標。 Makefile是一種文本格式文件。

Make是Makefile文件的解釋器

Make對Makefile文件解釋后,生成Linux的shell命令和gcc編譯命令,接著對命令執行,最終生成目標文件。

Makefile是工程系統編譯批處理文件。

23、Linux文件系統目錄樹結構是怎樣的?

Linux文件系統是一個目錄樹結構,最上層是根目錄,其他的所有目錄都是從根目錄出發而生成的。Linux下,任何一個目錄都可以是一個分區。因此,在分區時,必須將一個分區安裝在樹根下面。Linux不僅將分區安裝為一個目錄,而且還將所有的硬件設備都安裝成一個個設備文件。對設備的操作是通過文件的操作完成的。

24、CPSR各位的含義及作用。

31 30 29 28 27 … 8 7 6 5 4 3 2 1 0

N Z C V (保留) I F T M4 M3 M2 M1 M0

1、條件碼標志位(保存ALU中的當前操作信息)

N:正負號/大小 標志位

Z:零標志位

C:進位/借位/移出位

V:溢出標志位

2、控制位

I、F中斷控制位——控制允許和禁止中斷

T控制(標志)位——反映處理器的運行狀態

[5] 嵌入式系統設計師工作計劃

摘要:以TRI公司的基于NORFlash的Flash管理軟件FMM為例,詳細介紹嵌入式系統中如何根據Flash的物理特性來進行Flash存儲管理。
關鍵詞:嵌入式系統FlashFMM

引言

在當前數字信息技術和網絡技術高速發展的后PC(Post-PC)時代,嵌入式系統已經廣泛地滲透到科學研究、工程設計、軍事技術、各類產業和商業文件藝術、娛樂業以及人們的日常生活等方方面面中。隨著嵌入式系統越來越廣泛的應用,嵌入式系統中的數據存儲和數據管理已經成為一個重要的課題擺在設計人員面前。

Flash存儲器作為一種安全、快速的存儲體,具有體積小、容量大、成本低、掉電數據不丟失等一系列優點。目前已經逐步取代其它半導體存儲元件,成為嵌入式系統中主要數據和程序載體。

作為嵌入式系統的一部分,Flash存儲管理的主要功能是針對Flash自身的物理特性,利用一些特定的算法來提高Flash的使用效率,加快操作速度和管理Flash各單元的使用頻率。

1Flash存儲器簡介

嵌入式系統中使用的Flash主要分為NOR和NAND兩種類型。這里我們以NOR型Flash為例進行介紹。NOR型Flash主要特點如下:

*體積小、容量大,目前可以達到十幾MB。

*掉電數據不丟失,數據可以保存10~100年。

*有獨立的地址和數據總線,可以快速地通過總線讀取數據。因此它具有和靜態RAM相同的讀取速度,既可以作為數據存儲器也可以作為程序存儲器使用。

*寫入操作必須通過指令序列來完成,以字節(Byte)或字(Word)為單位,每寫入一個Byte或Word需十幾μs。

*擦除也通過指令序列完成,以塊(Block)為單位,通常塊的大小為64K。每擦除一個塊需要十幾ms。

*由于Flash有一定的使用壽命,一般為10~100萬次。所以隨著使用次數的增加,會有一些單元逐漸變得不穩定或失效,因此必須能夠對其狀態加以識別。

2Flash存儲管理的作用

由Flash特點可以看出,操作Flash需要注意以下幾點:

*必須以幾K~幾十K的塊為單位進行數據的操作;

*擦除操作耗時較多,應減少擦除操作;

*盡量避免頻繁地對同一地址操作,以免造成局部單元提前損壞。

另外,大部分嵌入式操作系統所掛接的文件系統是建立在以扇區(Sector)為單位的磁盤操作基礎上(通常為512字節/扇區)。因此也需要一段特殊的Flash存儲管理程序來解決以扇區為單位的文件系統接口和以塊為單位的Flash物理特性之間的矛盾;同時,完成各塊之間的擦寫次數均衡和壞塊管理等工作。Flash存儲管理程序在系統中的位置如圖1所示。

本文以TRI公司的FMM為例,說明Flash存儲管理模塊和如何完成這些功能的。

3FMM介紹

FMM(FlashMediaManager)是由TRI公司開發的專門針對NOR型Flas

[6] 嵌入式系統設計師工作計劃

嵌入式系統(Embedded system),是一種“完全嵌入受控器件內部,為特定應用而設計的專用計算機系統”,根據英國電氣工程師協會( U.K. Institution of Electrical Engineer)的定義,嵌入式系統為控制、監視或輔助設備、機器或用于工廠運作的設備。與個人計算機這樣的通用計算機系統不同,嵌入式系統通常執行的是帶有特定要求的預先定義的任務。由于嵌入式系統只針對一項特殊的任務,設計人員能夠對它進行優化,減小尺寸降低成本。嵌入式系統通常進行大量生產,所以單個的成本節約,能夠隨著產量進行成百上千的放大。

嵌入式系統是用來控制或者監視機器、裝置、工廠等大規模設備的系統。國內普遍認同的嵌入式系統定義為:以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。通常,嵌入式系統是一個控制程序存儲在ROM中的嵌入式處理器控制板。事實上,所有帶有數字接口的設備,如手表、微波爐、錄像機、汽車等,都使用嵌入式系統,有些嵌入式系統還包含操作系統,但大多數嵌入式系統都是由單個程序實現整個控制邏輯。

嵌入式系統的核心是由一個或幾個預先編程好以用來執行少數幾項任務的微處理器或者單片機組成。與通用計算機能夠運行用戶選擇的軟件不同,嵌入式系統上的軟件通常是暫時不變的;所以經常稱為“固件”。

聯網:

隨著醫療電子、智能家居、物流管理和電力控制等方面的不斷風靡,嵌入式系統利用自身積累的底蘊經驗,重視和把握這個機會,想辦法在已經成熟的平臺和產品基礎上與應用傳感單元的結合,擴展物聯和感知的`支持能力,發掘某種領域物聯網應用。作為物聯網重要技術組成的嵌入式系統,嵌入式系統的視角有助于深刻地、全面地理解物聯網的本質。

這有兩層意思:第一,物聯網的核心仍然是互聯網,是在互聯網基礎上的延伸和擴展的網絡;第二,其用戶端延伸和擴展到了任何物品與物品之間,進行信息交換和通信,必須具備嵌入式系統構建的智能終端。因此,物聯網系統是通過射頻識別(RFID)、紅外感應器、全球定位系統、激光掃描器等信息傳感設備,按約定的協議,把任何物品與互聯網相連接,進行信息交換和通信的系統架構。

物聯網不僅僅提供了傳感器的連接,其本身也具有智能處理的能力,能夠對物體實施智能控制,這就是我們嵌入式系統所能做到的。誠然,物聯網將傳感器和智能處理相結合,利用云計算、模式識別等各種智能技術,擴充其應用領域。從傳感器獲得的海量信息中分析、加工和處理出有意義的數據,以適應不同用戶的不同需求,發現新的應用領域和應用模式。

[7] 嵌入式系統設計師工作計劃

摘要:通過UML語言對嵌入式系統建模,急準確地完成了分析人員與用戶需形式化層次上的一致性,也為程序開發人員建立了清晰的程序結構和行為準則,大大縮短了系統開發周期,并使系統的升級和重用成為可能。本文通過一個用Atmel89C52單片機實現簡單變頻調速器系統,說明UML應用與嵌入式系統的分析設計方法。
關鍵詞:嵌入式系統面向對象分析設計UML有限狀態機

1概述

隨著我國裝備制造業的發展,嵌入式系統已經成為制造業的核心技術。它被廣泛地應用到工業控制、仿真系統、醫療儀器、信息家電、通信設備等眾多領域。目前,圍繞嵌入式系統展開研究和開發,已經成為計算機軟硬件技術發展最活躍的方向之一。

嵌入式系統不同于通常純粹的軟件系統或硬件系統,而是軟件與硬件通過在一起的,有些功能既可以用軟件實現,也可以通過硬件實現。另外,嵌入式系統設計所面臨的挑戰不僅涉及到計算機軟件和硬件,也會涉及到許多非計算機工程中的問題,諸如機械尺寸問題、功耗問題和制造成本問題等。即使是計算機工程方面的問題,大部分系統在實時性、可靠性和多速率等問題方面也都有特別要求。

目前,實現嵌入式系統的硬件方法主要有:定制邏輯(ASIC)、現場可編程門陣列(FPGA)和嵌入式微處理器三種。在實際系統實施中,絕大多數系統是采用嵌入式微處理器方式,如單片機、單板機或嵌入式微處理器芯片等。這是因為用微處理器實現嵌入式系統是一種十分有效的方法,它使得在不同價位上設計不同特性的產品系列成為可能,并且能夠擴充新特性以滿足飛速發展變化的市場需求。

2嵌入式系統設計面臨的問題和解決辦法

過去嵌入式系統分析和設計方面的主要問題為:①分析設計沒有一個統一的標準;②分析設計方法不統一;③從分析設計到制作和編程沒有一個始終一貫的工程化方法,使得產品形成的每一個過程人為因素影響十分嚴重;④分析設計的成果不能被開發類似項目或產品的重用。以上4個方面的問題成為多年來制約嵌入式系統發展的主要瓶頸,使得大部分從事嵌入式系統應用開發的組織和團體,基本上是采用小組甚至是作坊式的動作模式。這使得開發較復雜或大型系統的工作變得十分困難甚至無法進行,或因為系統需求的不斷變化或小組成員的流動導致項目失敗。我們知道,人類之間要想達成對任何事件的交流,前提是實現對該事物形態(或表現形式)和行為的標準化,之后才可能實現對該事物形態(或表現形式)和行為的標準化,之后才可能實現對其的存儲、處理和交流。嵌入式系統制作過程產品以上4方面問題的主要原因是沒有一個對嵌入式系統需求、分析、設計、制作、測試和維護過程的結構特征和行業特征統一的工程化描述方法。目前,面向對象技術正是建立在對真實世界抽象思維的基礎上,統一建模語言(UML)為這種思維提供了可視化工具,解決了以上難題。使用UML對嵌入式系統建模,不僅可以使系統分析設計實現標準化,而且完全可以實現系統分析、設計和制作、測試分別由不同的項目成員在統一、一貫的方式下完成,也使得系統分析和設計模型在相似系統中重用成為可能。

3系統建模

面向對象的嵌入式系統建模同任何軟件密集型系統建模一樣,從系統中的類建模開始。為了解類的結構,首先對系統工作過程作一個總體陳述。無論是采用問題空間詞匯抽象方法還是采用用例(usecase)驅動建模方法,目標都是找到系統以類或對象作為構造塊的類圖。如果采用用例驅動的系統分析方法,該內容也可以用用例視圖加以模型規格說明,然后使其作為系統白盒測試依據。由于使用用例視圖做的規格說明篇幅比較大,本文僅用文字描述說明這部分內容。

本文所例舉的系統為一小型變頻調速器系統。對任何一個三相交流電機,在輸入單相交流電源的情況下,實現6Hz到[9Hz,50Hz]區間內任一頻率的穩步啟動運轉。系統用戶界面包括2位數碼顯示器、一個運行/停止指示器、電源開/關指示器、6個按鈕鍵盤和電源開關。2位顯示器用于顯示電機當前正在運轉的頻率,6個按鍵分別代表啟動、停機、正點動、反點動、頻率加和頻率減。啟動命令使電機從6Hz以每步0.2Hz的步長穩步提升到當前設置頻率上后在該頻率上穩定運轉;正點動命令使電機穩定在6Hz上正向運轉;反點動命令時,電機轉動頻率與正點動上同,但旋轉方向相反;頻率加命令在電機運轉時使電機以1Hz/s的速率增加運轉頻率和當前預置頻率,在電機停止時僅改變預置頻率;頻率減命令與頻率加命令相反;停機命令則無論電機運行在什么狀態下,都使電機停止運轉。

系統類圖如圖1所示。圖中有2個硬件類Button*和Light*,1個主動類Microcontrollor和3個一般類Convertor、Watchdog和Display。Button*類代表所有按鈕;Light*類代表2個發光數碼管和1個運行指示燈;主動類Microcontrollor是系統主控模塊,完成所有對象的調度和管理;3個一般類為3個功能獨立的程序模塊。

圖2為系統實施圖。微處理器節點是系統的主控節點,采用Atmel89C52。其內部8KBFlashROM和128BRAM資源已能滿足系統需要,因此不再增加外部存儲器。與其它節點的連接完全通過其本身的串并接口就可完成。按鈕節點代表所有按鈕,在系統變化時也可以用鍵盤取代,本例為6個單獨機械按鈕。顯示節點代表系統顯示部分,本例為2個數碼管和1個表示電同運行狀態的發光二極管。運行監控節點具有兩部分功能,其一是通過WatchDog技術監視微處理器的運行狀況,另一個是監視變換器輸出的脈沖寬度。變換器邛樹熊設計為專用電路,通過微處理器并行口接受三相正弦脈沖,根據電機功率轉換成本相電機線圈所需要的脈沖電壓。三相電機節點不屬于嵌入式系統本身,但為了說明本嵌入式系統與控制對象關系而布置在同一實施圖中。

圖3為系統有限狀態機行為模型。系統開機上電后,經過初始化處理自動進入到等待狀態,在等待狀態,Microcontrollor對象根據用戶鍵盤按鈕命令,調度相應的操作對象。當用戶發出正或反點動命令時,系統進入點動運行態,此時Convertor對象輸出6Hz正或反相序三相脈沖。當用戶松開正或反點動按鈕時,系統返回等待狀態。在系統預置頻率設定正確的`情況下,用戶按啟動按鈕時,系統先進入到啟動運行態。在此狀態時系統從6Hz開始按每步0.2Hz的步長穩步增加電機運轉頻率,直到達到預置頻率時進入到穩定運行態。在穩定運行態用戶可以改變預置頻率,步長為1Hz。每次預置頻率的改變事件,都會產生從穩定運行態到啟動運行態的交替變動。當系統運行出現故障時,進入到故障處理狀態處理,完成后自動返回到等待狀態。

4系統實現

4.1數據處理

由于本文例舉的系統為一小型變頻調速嵌入式系統,所有三相正弦波形的PWM脈沖都由Atmel89C52的P1.0~P1.5端口輸出。當把任何頻率正弦波形分解成N等分時(N為6的整數倍),則要用N個等幅而不等寬的矩形脈沖來等效,每個脈沖區間如圖4。每個頻率正弦波劃分為6個相序,每個相序為60°。每個相序分為N/6個區間,每區間分為7個小區間。每個區間采用中心對稱脈沖波形,因此在每個小脈沖邊沿只有一相功率驅動開關換相而使驅動電源電流平衡變化。在任何一相換相時,由軟件自動加死區保護(死區時間一相上下臂開關同時關閉,如圖4中豎雙線間部分),以免功率驅動開關在換相瞬間上下臂同時導通而損壞元件。

雖然對于不同頻率每個相序內脈沖區間數和占空比有所不同,但輸出的波形卻是相同的。又因為每個區間的7個小區間波形是中心對稱的,因此在輸出最后3個小波形時,只要把前3個小波形的占空時間和輸出波形數據倒讀并輸出就可以完成。另外,每個脈沖區間僅需要4個占空定時T區間,t2,t3,t4(見下節說明),并且每個相序僅需要4個脈沖波形數據就可以了。三相正弦波區間數據關系如表1.

表1三相正弦波區間數據關系

相序IIIIIIIVVVI電壓關系Ua>Ub>UcUb>Ua>UcUb>Uc>UaUc>Ub>UaUc>Ua>UbUa>Uc>Ub波形數據2AH,29H,19H,152AH,26H,25H,152AH,26H,16H,152AH,1AH,16H,15H2AH,1AH,19H,15H2AH,29H,19H,15區間數N/6N/6N/6N/6N/6N/6小區間定時t4,t3,t2,t1,t2,t3,t4
4.2系統資源配置

當系統的分析與設計采用面向對象方法時,并不意味著所使用的編程語言也一定是面向對象的。事實上,這種分析設計方法的具體實現可以使用任何編程語言(如匯編語言或C語言);但是,在程序設計上要盡可能地使用面向對象的思想,如體現程序結構方面的封裝性、消息傳遞等。這種才會使程序結構清晰,便于應付隨著需求變化而產生的不斷更新和系統維護。

在實現本系統時,系統最重要的資源是程序存儲器和定時器。由于采用了上小節所討論的數據處理技術,大大壓縮了數據空間。在實現時,把6Hz~50Hz頻率空間劃分成7個大的區段,使每個區間的脈沖周期在900μs左右,區間周期定時使用單片機內部的T2定時器的常數自動重裝入方式。由于區間周期與輸出頻率關系是確定的(T區間=1/Nf頻率),片內T0定時器用于區間內小區間t2、t3、t4定時,而t1定時由t1=T區間-2×t2-2×t3-t4計算得到。T1定時器用于監視系統輸出的脈沖寬度,當P1口任何一端輸出脈沖寬度超過1000μs時,系統通過中斷進入故障處理狀態。另外,系統還設一WatchDog電路X5045,監視系統程序運行情況。當程序運行異常時,系統通過復位進入到故障處理狀態。系統的顯示接口通過單片機串行接口實現。

5討論

由于嵌入式系統的實現工具基本上都是非面向對象的,因此如何使面向對象的分析設計與非面向對象的實現工具之間的銜接就成為了一個值得探討的問題。另外,嵌入式系統一般都具有不同于大型軟件系統的具體要求,如實時性、可靠性、機械尺寸、能耗(如電池供電)要求等,因此在實現系統時還應根據開發者的經驗進行特別處理。但是,采用面向對象建模后再實現系統實現的方法,為系統建立了可視化的組織結構和行業結構,實現了用戶需求的可視化表示,縮短了系統的開發周期,很好地適應了用戶需求的變化。

[8] 嵌入式系統設計師工作計劃


嵌入式系統是當今科技領域中重要的一個部分。它們存在于我們日常生活中的各個方面,從智能手機到智能家居,從汽車到醫療設備,幾乎無處不在。因此,對嵌入式系統進行深入的學習和理解變得越來越重要。在本篇文章中,我們將詳細介紹一個完整的嵌入式學習計劃,以幫助讀者全面掌握這個領域。


第一階段:基礎知識學習


嵌入式系統的學習需要一定的基礎知識。在這個階段,我們將學習計算機科學的基礎概念,包括計算機硬件和軟件的組成部分,以及各種編程語言和算法。還應了解數字電子學和數字信號處理等方面的基礎知識。


在這個階段,我們可以選擇參加一些在線課程或購買教材進行學習。一些優秀的在線學習資源包括Coursera、Udacity和edX等網站的計算機科學課程。也可以參考一些經典教材,如《計算機組成與設計》和《C++ Primer》等。


第二階段:嵌入式系統基礎知識


一旦掌握了計算機科學的基礎知識,我們就可以開始學習嵌入式系統的基礎知識了。在這個階段,我們將了解嵌入式系統的特點、分類和應用領域。我們還需要學習如何選擇適合特定應用的處理器、操作系統和編程語言等。


在學習的過程中,我們可以選擇參加一些在線課程或購買相關教材。一些優秀的在線學習資源包括Coursera上的《嵌入式系統開發》和edX上的《嵌入式系統基礎》等課程。還可以參考一些經典的嵌入式系統教材,如《嵌入式實時操作系統課程》和《嵌入式系統設計與應用》等。


第三階段:硬件設計與嵌入式編程


在掌握了嵌入式系統的基礎知識后,我們將進入實踐階段。在這個階段,我們將學習如何設計硬件和編寫嵌入式軟件。我們將了解硬件電路設計的基本原理和技術,以及常用的硬件描述語言。同時,我們還將學習如何使用嵌入式開發工具和編寫嵌入式軟件,以及調試和測試嵌入式系統。


為了提高實踐能力,可以選擇一些嵌入式系統設計實驗或項目。這些實驗或項目可以幫助我們將理論知識應用到實際中,并提供實際的問題解決經驗。還可以加入嵌入式系統設計的社區或論壇,與其他嵌入式系統開發者交流經驗和學習。


第四階段:實際應用與深入研究


在完成了基礎知識學習和實踐階段后,我們可以開始探索更高級的嵌入式系統應用和研究領域。在這個階段,我們可以選擇一些具有挑戰性的嵌入式系統項目或參與一些深入的研究工作。


參與項目可以進一步提高我們的實踐能力和解決問題的能力。同時,可以選擇一些研究領域進行深入研究,如嵌入式系統的能源管理、安全性和可靠性等。這些研究將使我們對嵌入式系統的設計和應用有更深入的理解,并為行業提供更好的解決方案。


第五階段:持續學習與跟進行業發展


嵌入式系統領域發展迅速,技術更新換代較快。因此,持續學習和跟進行業發展是至關重要的。我們應該保持對最新技術和行業趨勢的關注,并不斷更新自己的知識。


為了持續學習,可以選擇參加一些行業會議和研討會。這些活動將讓我們與行業內的專家和其他同行交流經驗和最新的技術進展。還可以參加一些在線學習平臺上提供的持續學習課程,如Coursera上的《嵌入式系統開發實踐》和edX上的《嵌入式系統進階》等。


嵌入式學習計劃是一個系統而完整的學習過程。通過按照這個計劃逐步學習和實踐,我們可以逐漸掌握嵌入式系統的基礎知識和技能,進而在嵌入式領域中獲得更好的發展機會。同時,持續學習和跟進行業發展將使我們能夠不斷更新自己的知識,與行業保持同步。毫無疑問,嵌入式學習計劃將為我們的職業發展帶來巨大的幫助。

[9] 嵌入式系統設計師工作計劃

嵌入式系統的興起是從1971年以第一個微處理器4004開始的,而今微處理器蓬勃發展,正在逐漸地改善著人們的生活。嵌入式系統正從研究的領域向實際的應用領域的發展,出現了各種嵌入式的數碼產品。

未來的嵌入式系統需要提供更強大的網絡服務。要求配備標準的一種或多種網絡通信接口,滿足小型化、低成本、低功耗的優點。選用最佳的編程模型和不斷的改進算法,如JAVA編程模式、優化編譯器性能等。同時可以滿足自然的人機交互界面,如手寫文字輸入、短消息語音發布、語音識別、語音撥號上網等功能。隨著Internet技術的成熟、帶寬的提高,嵌入式應用的'平臺也會更加地完善。

[10] 嵌入式系統設計師工作計劃

在軟件設計上采用linux操作系統作為軟件開發平臺,linux操作系統中最關鍵的'部分是實時多任務內核,它主要實現任務管理、定時器管理、存儲器管理、任務間通信與同步、中斷管理等功能。電梯嵌入式智能控制器中使用linux操作系統可以將應用程序分解成多任務,簡化了應用系統軟件的設計,使得電梯嵌入式智能控制器的實時性得到保證,而且良好的多任務設計,有助于提高系統的穩定性與可靠性。以下主要介紹本控制器的主要模塊和核心部分。

3.1 模擬電梯模塊

模擬電梯模塊主要是根據擬定的電梯數據結構,用小鍵盤模擬電梯的內部操作,采用同方向優先的電梯算法使電梯正常運行,運行的過程就是電梯數據的變化,然后將實時變化的電梯數據存入電梯數據緩沖區,等待監控中心的連接請求,該緩沖區是一個擬定的電梯數據結構體。

3.1.1 電梯數據結構體

typedef struct elevator

{

int m_flag; //電梯運行的標志:1―運行 2―停止

int up_down; //電梯運行方向:上―1 下―0

int cur_floor; //電梯當前所在的樓層

int des_floor[MAX]; // 電梯目標層數組

/*des_floor[0]記錄目標層的個數,des_floor[1-9]:值為代表有人要去該層即相應樓層為目標層,為0則表示沒有人去該層*/

}elevator;

該結構體實時記錄電梯當前的狀態和相關信息,它是電梯運行控制的數據核心。監控中心就是通過獲取該結構體信息來達到遠程監控電梯的。

3.2 鍵盤模擬電梯操作的處理過程

利用ARM6410開發板上的小鍵盤來模擬電梯及操作過程流程說明:首先打開鍵盤設備/dev/mcu/kbd,如果返回鍵盤設備句柄就可以進行初始化電梯數據,然后進入循環檢測狀態,檢測是否有數字鍵按下。有鍵按下則判斷該鍵是否符合已定輸入標準,判斷標準為:必須輸入1-9的數字鍵,而且輸入的數字不可以是當前所在的樓層,同時還是非目標層,然后將輸入的數據更新到電梯數據結構體中,即增加了一個目標樓層,若當前電梯沒有運行而此時需要運行,則創建一個線程來運行電梯。

3.3 電梯的運行控制

電梯的運行過程是線程實現的,這是本模塊的核心。

流程說明:電梯在運行過程中始終處于運行狀態,運行結束后處于停止狀態,上述線程也就結束,所以在線程一開始判斷電梯是否已經處于運行狀態,若是,說明某個線程正在進行電梯的運行過程,則不能再有另一個運行線程,于是結束。否則,根據目標樓層數不斷循環來到達每一個目標層,當目標樓層數為0時,電梯停止,線程結束。

運行過程中,根據同方向優先算法,先達到運行方向上的目標樓層,當運行方向上沒有目標層或已經達到頂端或低端時,才改變電梯運行方向。若運行方向上有目標層時,則一直運行直到達到某個目標樓層,這是通過判斷達到的每一層是否是目標層來確定的。只有當達到某個目標層或電梯改變運行方向時,才重新根據目標樓層數來判斷是否還有目標層。

流程中的“到達標志”用于標識是否到達一個目標層,當確定某個方向上還有目標層時,在到達一個目標層前(即使有鍵按下,目標層只可能增多,不會減少),它一直為0,此時不用執行多余的判斷是否有目標層的操作,直到到達一個目標層時,將該標志置為1,表示到達了一個樓層,這時才重新判斷是否還有目標層。

在ARM微處理器上設計電梯嵌入式智能控制器,采用模塊化和嵌入式編程的思想設計,主要包括系統的總體設計、嵌入式硬件搭建、虛擬機工作環境的搭建,嵌入式操作系統移植、根文件系統的構建、應用軟件的編寫和移植。采用成熟的ARM技術,具有高性能、高集成度、低功耗、低成本、低開發難度等優點,以及采用linux操作系統是開發源碼的操作系統,軟件資源豐富,同時具有內核功能強大,高校,穩定,支持ARM等優點。因此大大地提高了系統的可靠性和穩定性,將其應用在電梯的控制領域具有很好的發展前景。

[11] 嵌入式系統設計師工作計劃

嵌入式系統通常為一個資源受限的系統。直接在嵌入式系統的硬件平臺上編寫軟件比較困難,有時甚至是不可能的。目前,一般采用的辦法是,先在通用計算機上編寫程序,然后,通過交叉編譯,生成目標平臺上可運行的二進制代碼格式,最后下載到目標平臺上的特定位置上運行,具體步驟如下。

第一步,建立嵌入式Linux交叉開發環境。目前,常用的交叉開發環境主要有開放和商業兩種類型。開放的交叉開發環境的典型代表是GNU工具鏈,目前已經能夠支持x86、ARM、MIPS、PowerPC等多種處理器。商業的交叉開發環境主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross compiler、WindRiver Tornado、Microsoft Embedded Visual C++等。交叉開發環境是指編譯、鏈接和調試嵌入式應用軟件的環境。它與運行嵌入式應用軟件的環境有所不同,通常采用宿主機/目標機模式。

第二步,交叉編譯和鏈接。在完成嵌入式軟件的編碼之后,就是進行編譯和鏈接,以生成可執行代碼。由于開發過程大多是在Intel公司x86系列CPU的通用計算機上進行的,而目標環境的處理器芯片卻大多為ARM、MIPS、PowerPC、DragonBall等系列的微處理器,這就要求在建立好的交叉開發環境中進行交叉編譯和鏈接。

第三步,交叉調試。

① 硬件調試。如果不采用在線仿真器,可以讓CPU直接在其內部實現調試功能,并通過在開發板上引出的調試端口,發送調試命令和接收調試信息,完成調試過程。目前,ARM公司提供的開發板上使用的則是JTAG調試端口。

② 軟件調試。在嵌入式Linux系統中,Linux系統內核調試,可以先在Linux內核中設置一個調試樁(debug stub),用作調試過程中和宿主機之間的通信服務器。然后,可以在宿主機中通過調試器的串口與調試樁進行通信,并通過調試器控制目標機上Linux內核的運行。

第四步,系統測試。整個軟件系統編譯過程,嵌入式系統的硬件一般采用專門的測試儀器進行測試,而軟件則需要有相關的測試技術和測試工具的支持,并要采用特定的測試策略。測試技術指的是軟件測試的專門途徑,以及能夠更加有效地運用這些途徑的特定方法。

文章來源://www.wz2.com.cn/dushubiji/171666.html

猜你喜歡