嵌入式linuxc語言,嵌入式linuxc語言應用開發教程第二版電子版

本文目錄一覽:

如何自學Linux下C語言嵌入式編程?詳細點謝謝!書籍及開發板用什麼的最好

開發板用友善之臂的吧

mini2440 連3.5寸屏500塊錢的樣子

有好幾張DVD學習光碟

這款口碑比較高

嵌入式Linux操作系統學習規劃

ARM+LINUX路線,主攻嵌入式Linux操作系統及其上應用軟體開發目標:

(1) 掌握主流嵌入式微處理器的結構與原理(初步定為arm9)

(2) 必須掌握一個嵌入式操作系統 (初步定為uclinux或linux,版本待定)

(3) 必須熟悉嵌入式軟體開發流程並至少做一個嵌入式軟體項目。

從事嵌入式軟體開發的好處是:

(1)目前國內外這方面的人都很稀缺。這一領域入門門檻較高,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,大多數人無條件接觸。

(2)與企業計算等應用軟體不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。

(3)哪天若想創業,搞自已的產品,嵌入式不像應用軟體那樣容易被盜版。硬體設計一般都是請其它公司給訂做(這叫「貼牌」:OEM),都是通用的硬體,我們只管設計軟體就變成自己的產品了。

(4)興趣所在,這是最主要的。

從事嵌入式軟體開發的缺點是:

(1)入門起點較高,所用到的技術往往都有一定難度,若軟硬體基礎不好,特別是操作系統級軟體功底不深,則可能不適於此行。

(2)這方面的企業數量要遠少於企業計算類企業。

(3)有少數公司經常要碩士以上的人搞嵌入式,主要是基於嵌入式的難度。但大多數公司也並無此要求,只要有經驗即可。

(4)平台依託強,換平台比較辛苦。

興趣的由來:

1、成功觀念不同,不虛度此生,就是我的成功。

2、喜歡思考,挑戰邏輯思維。

3、喜歡C

C是一種能發揮思維極限的語言。關於C的精神的一些方面可以被概述成短句如下:

相信程序員。

不要阻止程序員做那些需要去做的。

保持語言短小精幹。

一種方法做一個操作。

使得它運行的夠快,儘管它並不能保證將是可移植的。

4、喜歡底層開發,討厭vb類開發工具(並不是說vb不好)。

5、發展前景好,適合創業,不想自己要死了的時候還是一個工程師。

方法步驟:

1、基礎知識:

目的:能看懂硬體工作原理,但重點在嵌入式軟體,特別是操作系統級軟體,那將是我的優勢。

科目:數字電路、計算機組成原理、嵌入式微處理器結構。

彙編語言、C/C++、編譯原理、離散數學。

數據結構和演算法、操作系統、軟體工程、網路、資料庫。

方法:雖科目眾多,但都是較簡單的基礎,且大部分已掌握。不一定全學,可根據需要選修。

主攻書籍:the c++ programming language(一直沒時間讀)、數據結構-C2。

2、學習linux:

目的:深入掌握linux系統。

方法:使用linux—〉linxu系統編程開發—〉驅動開發和分析linux內核。先看深,那主講原理。看幾遍後,看情景分析,對照深看,兩本交叉,深是綱,情是目。剖析則是0.11版,適合學習。最後深入代碼。

主攻書籍:linux內核完全剖析、unix環境高級編程、深入理解linux內核、情景分析和源代。

3、學習嵌入式linux:

目的:掌握嵌入式處理器其及系統。

方法:(1)嵌入式微處理器結構與應用:直接arm原理及彙編即可,不要重複x86。

(2)嵌入式操作系統類:ucOS/II簡單,開源,可供入門。而後深入研究uClinux。

(3)必須有塊開發板(arm9以上),有條件可參加培訓(進步快,能認識些朋友)。

主攻書籍:毛德操的《嵌入式系統》及其他arm9手冊與arm彙編指令等。

4、深入學習:

A、數字圖像壓縮技術:主要是應掌握MPEG、mp3等編解碼演算法和技術。

B、通信協議及編程技術:TCP/IP協議、802.11,Bluetooth,GPRS、GSM、CDMA等。

2010-8-21 16:46 回復

122.90.173.* 2樓

C、網路與信息安全技術:如加密技術,數字證書CA等。

D、DSP技術:Digital Signal Process,DSP處理器通過硬體實現數字信號處理演算法。

說明:太多細節未說明,可根據實際情況調整。重點在於1、3,不必完全按照順序作。對於學習c++,理由是c++不只是一種語言,一種工具,她還是一種藝術,一種文化,一種哲學理念、但不是拿來炫耀得東西。對於linux內核,學習編程,讀一些優秀代碼也是有必要的。

注意: 要學會舉一反多,有強大的基礎,很多東西簡單看看就能會。想成為合格的程序員,前提是必須熟練至少一種編程語言,並具有良好的邏輯思維。一定要理論結合實踐。

不要一味鑽研技術,雖然擠出時間是很難做到的,但還是要留點餘地去完善其他的愛好,比如宇宙,素描、機械、管理,心理學、遊戲、科幻電影。還有一些不願意做但必須要做的!

技術是通過編程編程在編程編出來的。永遠不要夢想一步登天,不要做浮躁的人,不要覺得路途漫上。而是要編程編程在編程,完了在編程,在編程!等機會來了在創業(不要相信有奇蹟發生,盲目創業很難成功,即便成功了發展空間也不一定很大)。

嵌入式書籍推薦

Linux基礎

1、《Linux與Unix Shell 編程指南》

C語言基礎

1、《C Primer Plus,5th Edition》【美】Stephen Prata著

2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K R)著

3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)

4、《嵌入式Linux應用程序開發詳解》

Linux內核

1、《深入理解Linux內核》(第三版)

2、《Linux內核源代碼情景分析》毛德操 胡希明著

研發方向

1、《UNIX Network Programming》(UNP)

2、《TCP/IP詳解》

3、《Linux內核編程》

4、《Linux設備驅動開發》(LDD)

5、《Linux高級程序設計》 楊宗德著

硬體基礎

1、《ARM體系結構與編程》杜春雷著

2、S3C2410 Datasheet

英語基礎

1、《計算機與通信專業英語》

系統教程

1、《嵌入式系統――體系結構、編程與設計》

2、《嵌入式系統――採用公開源代碼和StrongARM/Xscale處理器》毛德操 胡希明著

3、《Building Embedded Linux Systems》

4、《嵌入式ARM系統原理與實例開發》 楊宗德著

理論基礎

1、《演算法導論》

2、《數據結構(C語言版)》

3、《計算機組織與體系結構?性能分析》

4、《深入理解計算機系統》【美】Randal E. Bryant David O”Hallaron著

5、《操作系統:精髓與設計原理》

6、《編譯原理》

7、《數據通信與計算機網路》

8、《數據壓縮原理與應用》

C語言書籍推薦

1. The C programming language 《C程序設計語言》

2. Pointers on C 《C和指針》

3. C traps and pitfalls 《C陷阱與缺陷》

4. Expert C Lanuage 《專家C編程》

5. Writing Clean Code —–Microsoft Techiniques for Developing Bug-free C Programs

《編程精粹–Microsoft 編寫優質無錯C程序秘訣》

6. Programming Embedded Systems in C and C++ 《嵌入式系統編程》

7.《C語言嵌入式系統編程修鍊》

8.《高質量C++/C編程指南》林銳

儘可能多的編碼,要學好C,不能只注重C本身。演算法,架構方式等都很重要。

這裡很多書其實是推薦而已,不必太在意,關鍵還是基礎,才是重中之重!!!

請問嵌入式Linux C語言和PC機Linux C語言在語法上有什麼區別

語法一樣的,區別是一個嵌入式可能會直接操作寄存器,而且,有些單片機什麼的有針對性地多寄存器,提高切換速度。二是一般來說嵌入式系統的c對語法檢查比較嚴格,有些通用pc上可以編譯的在嵌入式上不能編譯

為什麼嵌入式要用linuxC,和普通的C語言有什麼區別呢!?

C語言本身遵循ANSI

C89或者C99標準

並不區分linux或者windows

樓上說的mfc也和c語言沒什麼關係

是windows基於c++開發的庫

C語言本身語法很簡單比如你知道一些運算符就可以入門

但是如果要深入在linux環境下做c語言編程

可能需要了解linux操作系統的機制,可以看linux高級編程之類的書

如果需要做嵌入式開發,更需要了解硬體以及linux內核的一些機制,

編程需要靠經驗和自己的思維慢慢積累,好學不好學,有人帶最好,沒人帶就一步步入門吧

c語言基礎知識

linux用戶態編程

linux內核編程

一步步來

嵌入式Linux開發 1 | CentOS7搭建C語言開發環境

yum update -y

新建hgfs

mkdir -p /mnt/hgfs

查看已經共享的文件夾

vmware-hgfsclient

掛載Downloads文件夾

vmhgfs-fuse .host:/Downloads /mnt/hgfs

yum install ntfs-3g

fdisk -l

mkdir -p /mnt/mydev mount /dev/sdb1 /mnt/mydev

開發和運行都在同一(類)主機上的開發方式.

開發在宿主機(一般使用PC),運行在目標機(嵌入式系統)的開發方式.

第一種:適用於當前用戶

vim ~/.bashrc

source ~/.bashrc

第二種:適用於所有用戶 推薦

vim /etc/profile

source /etc/profile

vim ~/.bashrc

source ~/.bashrc

更新中……

嵌入式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個不同的文件中。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/189897.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-29 13:52
下一篇 2024-11-29 13:52

相關推薦

  • MQTT使用教程

    MQTT是一種輕量級的消息傳輸協議,適用於物聯網領域中的設備與雲端、設備與設備之間的數據傳輸。本文將介紹使用MQTT實現設備與雲端數據傳輸的方法和注意事項。 一、準備工作 在使用M…

    編程 2025-04-29
  • Python3.6.5下載安裝教程

    Python是一種面向對象、解釋型計算機程序語言。它是一門動態語言,因為它不會對程序員提前聲明變數類型,而是在變數第一次賦值時自動識別該變數的類型。 Python3.6.5是Pyt…

    編程 2025-04-29
  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬碟。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Qt雷達探測教程

    本文主要介紹如何使用Qt開發雷達探測程序,並展示一個簡單的雷達探測示例。 一、環境準備 在開始本教程之前,需要確保你的開發環境已經安裝Qt和Qt Creator。如果沒有安裝,可以…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • 猿編程python免費全套教程400集

    想要學習Python編程嗎?猿編程python免費全套教程400集是一個不錯的選擇!下面我們來詳細了解一下這個教程。 一、課程內容 猿編程python免費全套教程400集包含了從P…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29

發表回復

登錄後才能評論