本文目錄一覽:
- 1、嵌入式軟件工程師需要掌握什麼?
- 2、編寫嵌入式c語言程序用什麼軟件
- 3、嵌入式軟件開發為什麼用c語言而不用java
- 4、為什麼嵌入式軟件要用C語言編寫
- 5、用c語言可以開發app嗎
- 6、嵌入式C語言重點知識點
嵌入式軟件工程師需要掌握什麼?
嵌入式軟件工程師需要具備簡單的硬件電路設計能力。
需要懂得C語言和一些簡單的彙編語言編程;能夠閱讀一般嵌入式系統的原理圖;至少熟悉一種嵌入式系統的軟件開發環境;熟悉一種嵌入式系統軟件的開發過程;必要硬件基礎知識;理解常見的嵌入式操作系統的工作原理。
需要懂得:(1)懂得C語言和一些簡單的彙編語言編程。
(2)能夠閱讀一般嵌入式系統的原理圖。
(3)至少熟悉一種嵌入式系統的軟件開發環境。
(4)熟悉一種嵌入式系統軟件的開發過程,如:單片機系統、DSP系統、ARM系統或其它的一些潛入式系統。
(5)理解常見的嵌入式操作系統的工作原理,理解線程、進程、信號量、消息機制、同步與互拆、並發控制等軟件編程時用到的概念。
(6)必要硬件基礎知識。
編寫嵌入式c語言程序用什麼軟件
編寫C語言的軟件叫:c語言編譯器;
而支持c語言的編譯器比較多:
在單片機等嵌入式開發中最主要用的是:keil c
在我們常用的windows系統下最常用的是Visual C++編譯器
其他的還有很多
下面是windows系統下,大學教學中目前開在廣泛使用的編譯器Visual C++ 6.0
下載地址在我的網盤,在網盤裡還有一些c,c++的實例可以下載
中文版:
英文版:
嵌入式軟件開發為什麼用c語言而不用java
在實時嵌入式應用中,C
編程語言的使用越來越體現出廣泛性和重要性。
這在相當程度上取決於該語言固有的靈活性、可支持的範圍及其潛在的訪問廣泛硬件環境的可移植性。詳細的理由包括:
����
對於許多使用中的微處理器來說,如果存在其他除了彙編語言之外的可用語言,通常就是C。在許多情況下,其他語言根本就不可用於硬件。
����
C
對高速、底層、輸入/輸出操作等提供了很好的支持,而這些特性是許多嵌入式系統的基本特性。
����
由於應用的逐步增長的複雜性,高級語言的使用較彙編語言更為適合。
����
相對於其他一些高級語言,C
能夠產生較小的和較少RAM
密集性(RAM-intensive)的代碼。
����
增長的可移植性需求。市場競爭要求在工程項目生命周期的任何階段,軟件可以通過移植到新的和/或低成本的處理器,目的是為了降低硬件成本。
����
增長的自動產生C
代碼的使用要求。C
代碼需要從模型包中自動產生。
為什麼嵌入式軟件要用C語言編寫
也可以用彙編編寫 c語言也好 彙編也好 或者更高級的語言都是跟人看和些的 讓人的思維能夠描述出來
然後通過編譯環境編譯成計算機能看的懂的東西 不同的語言 編譯完以後 邏輯上其實都是一樣的
然後交給芯片去運行 要說效率 c沒有彙編效率高
舉個例子
一個韓國工人(計算機)只會懂韓語(機器語言) 領導有一個中國人(程序員)只會說漢語(C語言) 另一個日本人(程序員)只會說日語(彙編) 還有一個西班牙人(程序員)只會說西班牙語(另一種高級語言比如java) 想讓韓國人做同樣一個事情 中國人用漢語說完經過翻譯(編譯系統)變成韓國語 韓國工人明白了要幹什麼 日本人用日語通過翻譯 變成韓國語 韓國工人也知道要幹什麼了 另一個西班牙人 用西班牙語 翻譯成韓國語 讓韓國人乾的是同一個活 翻譯完的結果是一樣的 只是不同語言表達罷了 c語言更方便 移植性更強(比彙編)
用c語言可以開發app嗎
可以的,c語言本來就是開發軟件的程序。
C語言更適合做操作系統相關的開發,比如驅動、嵌入式之類的。C語言開發手機App太困難了,似乎也很少有人這麼做。
特有特點
C語言是一個有結構化程序設計、具有變量作用域(variablescope)以及遞歸功能的過程式語言。
C語言傳遞參數均是以值傳遞(passbyvalue),另外也可以傳遞指針(apointerpassedbyvalue)。
不同的變量類型可以用結構體(struct)組合在一起。
只有32個保留字(reservedkeywords),使變量、函數命名有更多彈性。
部份的變量類型可以轉換,例如整型和字符型變量。
通過指針(pointer),C語言可以容易的對存儲器進行低級控制。
預編譯處理(preprocessor)讓C語言的編譯更具有彈性。
嵌入式C語言重點知識點
嵌入式C語言重點知識點
嵌入式LINUX
嵌入式Linux 是將日益流行的Linux操作系統進行裁剪修改,使之能在嵌入式計算機系統上運行的一種操作系統。Linux做嵌入式的優勢,首先,Linux是開放源代碼;其次,Linux的內核小、效率高,可以定製,其系統內核最小只有約134KB;第三,Linux是免費的OS,Linux還有着嵌入式操作系統所需要的很多特色,突出的就是Linux適應於多種CPU和多種硬件平台而且性能穩定,裁剪性很好,開發和使用都很容易。同時,Linux內核的結構在網絡方面是非常完整的,Linux對網絡中最常用的TCP/IP協議有最完備的支持。提供了包括十兆、百兆、千兆的以太網絡,以及無線網絡,Token Ring(令牌環網)、光纖甚至衛星的支持。
移植步驟:
1.Bootloader的移植;
2.嵌入式Linux操作系統內核的移植;
3.嵌入式Linux操作系統根文件系統的創建;
4.電路板上外設Linux驅動程序的編寫。
WinCE
WinCE是微軟公司嵌入式、移動計算平台的基礎,它是一個開放的、可升級的32位嵌入式操作系統,是基於掌上型電腦類的電子設備操作系統,它是精簡的Windows 95,Win CE的圖形用戶界面相當出色。WinCE是從整體上為有限資源的平台設計的多線程、完整優先權、多任務的操作系統。它的模塊化設計允許它對於從掌上電腦到專用的工業控制器的用戶電子設備進行定製。操作系統的基本內核需要至少200K的ROM。
一般來說,一個WinCE系統包括四層結構:應用程序、WinCE內核映像、板級支持包(BSP)、硬件平台。而基本軟件平台則主要由WinCE系統內核映像(OS Image)和板卡支持包(BSP)兩部分組成。因為WinCE系統是一個軟硬件緊密結合的系統,因此即使CPU處理器相同,但是如果開發板上的外圍硬件不相同,這個時候還是需要修改BSP來完成一個新的BSP。因此換句話說,就是WinCE的移植過程主要是改寫BSP的過程。
Android
Android 是一個包括操作系統,中間件以及一些重要應用程序的專門針對移動設備的層次結構的軟件集。Android 作為一個完全開源的.操作系統,是由操作系統Linux、中間件以及核心應用程序組成的軟件棧。通過 android SDK 提供的 API 以及相應的開發工具, 程序員可以很方便的開發android平台上的應用程序。其整個系統由應用程序,應用程序框架,應用程序庫,Android運行庫,Linux內核(Linux Kernel)五個部分組成。Android操作系統內置了一部分應用程序, 包括電子郵件客戶端、SMS程序、日曆、地圖、瀏覽器、通訊錄以及其他的程序,值得一提的是這些所有的程序都是用java編寫的。
移植的主要的工作是驅動,硬件抽象層的移植。為了更好地理解和調試系統,也應該適當地了解上層對硬件抽象層的調用情況。
TinyOS
TinyOS是一個開源的嵌入式操作系統,它是由加州大學的伯利克分校開發出來的,主要應用於無線傳感器網絡方面。程序採用的是模塊化設計,所以它的程序核心往往都很小,一般來說核心代碼和數據大概在400 Bytes左右,能夠突破傳感器存儲資源少的限制。TinyOS提供一系列可重用的組件,一個應用程序可以通過連接配置文件(A Wiring Specification)將各種組件連接起來,以完成它所需要的功能。
嵌入式實時操作系統(RTOS)
在工業控制、 軍事設備、航空航天等領域對系統的響應時間有苛刻的要求,這就需要使用實時系統。當外界事件或數據產生時,能夠接受並以足夠快的速度予以處理,其處理的結果又能在規定的時間之內來控制生產過程或對處理系統作出快速響應,並控制所有實時任務協調一致運行的嵌入式操作系統。故對嵌入式實時操作系統的理解應該建立在對嵌入式系統的理解之上加入對響應時間的要求。
FreeRTOS
FreeRTOS是一個迷你操作系統內核的小型嵌入式系統。作為一個輕量級的操作系統,功能包括:任務管理、時間管理、信號量、消息隊列、內存管理、記錄功能等,可基本滿足較小系統的需要。FreeRTOS任務可選擇是否共享堆棧,並且沒有任務數限制,多個任務可以分配相同的優先權。相同優先級任務的輪轉調度,同時可設成可剝奪內核或不可剝奪內核。
FreeRTOS 的移植主要需要改寫如下三個文件。
1.portmacro.h
2.port.c
3. port.asm
μTenux
μTenux基於ARM微控制器平台,對uT最適用於ARM Cortex M0-M4系列的微控制器,代碼開源、免費,是一個功能強大的搶佔式實時多任務操作系統。μTenux除具有實時嵌入式操作系統的一般特性:可移植性,可固化,可裁剪等特性以外,它還具有如下優點:
(1)微內核。無MMU, ROM/RAM佔用量小,所佔ROM最大60KB,最小10KB;RAM最大12KB,最小2KB;
(2)開源免費;
(3)支持所有32位ARM7/9和Cortex M系列的微控制器;
(4)可配置多達到256個任務以及140個任務優先級;
(5)有良好的商業支持, T-Engine論壇進行總的維護。
移植主要包括:芯片系統時鐘移植,外設移植和通用輸出/輸入端口的移植以及看門狗模塊移植。由於考慮到內核代碼的重要性以及其在整個移植中的重要意義,且為了整個系統有更好的實時性,可選用彙編語言編寫操作系統的啟動代碼。
VxWorks
VxWorks系統提供多處理器間和任務間高效的信號燈、消息隊列、管道、網絡透明的套接字。實時系統的另一關鍵特性是硬件中斷處理。為了獲得最快速可靠的中斷響應,VxWorks系統的中斷服務程序ISR有自己的上下文。VxWorks實時操作系統由400多個相對獨立的、短小精鍊的目標模塊組成,用戶可根據需要選擇適當模塊來裁剪和配置系統,這有效地保證了系統的安全性和可靠性。系統的鏈接器可按應用的需要自動鏈接一些目標模塊。這樣,通過目標模塊之間的按需組合,可得到許多滿足功能需求的應用。
移植過程可以參考網絡上一些BSP代碼,BSP的英文全稱為board support package,即板級支持包,它的作用是針對特殊的硬件平台,為VxWorks內核提供操作的接口。
μClinux
嵌入式Linux作為一個開放源代碼的操作系統,以價格低廉、功能強大又易移植的特性正在被廣泛應用,μClinux是專門針對沒有MMU的處理器而設計的嵌入式Linux,非常適合中低端嵌入式系統的需求。 在GNU通用公共許可證的授權下,μClinux操作系統的用戶可以使用幾乎所有Linux的API函數,不會因為沒有內存管理單元MMU而受到影響;而且,μClinux在標準的Linux基礎上進行了適當的裁剪和優化,形成了一個高度優化的、代碼緊湊的嵌入式Linux,體積小了,但是仍然保留了Linux的大多數的優點,比如穩定性好、強大的網絡功能、良好的可移植性、完備的文件系統支持功能、以及標準豐富的應用程序接口API等,可以支持類似ARM7TDMI等類型多的小巧玲瓏的中央處理器。
eCos
eCos中文翻譯為嵌入式可配置操作系統或嵌入式可配置實時操作系統。適合於深度嵌入式應用,主要應用對象包括消費電子、電信、車載設備、手持設備以及其他一些低成本和便攜式應用。eCos是一種開發源代碼軟件,無任何版權費用。 eCos最大的特點是模塊化,內核可配置。如果說嵌入式Linux太龐大了,那麼eCos可能就能夠滿足要求。它是一個針對16位、32位和64位處理器的可移植開放源代碼的嵌入式RTOS。和嵌入式Linux不同,它是由專門設計嵌入式系統的工作組設計的。eCos具有相當豐富的特性和一個配置工具,後者能夠讓你選取你所需要的特性。
eCos的軟件分了若干的模塊,移植工作主要在他的hal層進行,所謂hal(硬件抽象層)就是把和硬件相關的軟件湊到一起。
μC/OS-II
μC/OS-II是一個完整的、可移植、可固化、可裁剪的佔先式實時多任務內核。μC/OS-II絕大部分的代碼是用ANSI的C語言編寫的,包含一小部分彙編代碼,使之可供不同架構的微處理器使用。其結構小巧簡潔且支持搶佔式的多任務調度與管理。此實時操作系統管理任務數多達64個,且提供內部程序存儲器管理、系統運行時間管理、多任務實時調度與管理等功能。由於它的作者佔用和保留了8個任務,所以留給用戶應用程序最多可有56個任務。賦予各個任務的優先級必須是不相同的。這意味着μC/OS-II不支持時間片輪轉調度法。μC/OS-II為每個任務設置獨立的堆棧空間,可以快速實現任務切換。
將μC/OS-II操作系統移植到目標處理器上,需要從硬件和軟件兩方面來考慮。硬件方面,目標處理器需滿足以下條件:
①處理器的C編譯器能產生可重入代碼;
②用C語言可以開/關中斷;
③處理器支持中斷,並且能夠產生定時中斷(通常在10~1000 Hz之間);
④處理器能夠支持容納一定量數據的硬件堆棧;
⑤處理器有將堆棧指針和其他寄存器讀出和存儲到堆棧或內存中的指令。
軟件方面,主要是一些與處理器相關的代碼移植,其分佈在OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM這3個不同的文件中。
原創文章,作者:PDUC,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/135455.html