日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ARM学习方法大杂烩,高手经验之谈,内容完全来自互联网

發布時間:2025/5/22 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARM学习方法大杂烩,高手经验之谈,内容完全来自互联网 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一步一步學習uCOS和ARM體系結構的心得
學習必備條件:
1、一塊開發板——例如44B0開發板,建議初學者不要去購買那些ARM9體系結構的,因為作為初學者來說ARM9體系的東西是很復雜的,買塊ARM7的就可以了(先入門,然后再提高);
2、學習必備書籍
《Pointer on C》中文名字叫《C和指針》(美)里科|譯者:徐波 前提你的了解C指針吧(這本書時非常經典的書籍,完全可以看中文版的,作者翻譯的非常到位)
《嵌入式實時操作系統μCOS-II(第二版)》--邵貝貝翻譯的(不能不承認邵貝貝是一個非常好的翻譯者)
《μC/OS-Ⅱ標準教程》--楊宗德
對于英文不好的朋友可以購買《ARM體系結構與編程》--杜春蕾(該書其實還是有很多翻譯錯誤的,大家在看的時候要注意一下,但是不可否認的是這本書到目前為止算得上是我見過最好的講解關于ARM體系結構的書籍了)
對于英文過關的兄弟姐妹可以直接看《ARM+Architecture+Reference+Manual(2nd+Edition)》
3、有條件的兄弟姐妹可以選購一個仿真器 JLINK V8全功能版(這個的感謝中國的優秀工程師,是他們把原價1999多的JLINK變成了幾十元錢的東西
4、開發環境--MDK350或者IARARM
如果要熟悉這些開發環境,就需要好好讀一些這些開發環境的手冊資料,不好意思,這個就只有英文的了。
以上4個條件具備下來,可能也不會超過500元錢。
下面來講講我的學習經歷:
我剛開始學習的時候,自己走了不少彎路,這里就省略不說了。
第一步:在開發板上跑跑簡單程序
因為你有開發板,所以你就先在網上找一下對應開發板上的ARM芯片的datasheet,你都不先搞懂芯片的手冊,又談何讓自己實現很多功能呢。
熟讀數據手冊后,就盡可能的在開發板上實現芯片對應的每個功能,像GPIO實驗,UART通訊,I2C,ADC,DAC,PWM,RTC,SPI等等。自己寫自己的程序,然后在開發板上好好實踐一下。
當每個功能模塊都實現以后,建議你讓你的開發板實驗一下多個功能復合使用,比如用UART打印出ADC的值什么的。
第二步:學習uCOS
鑒于你已經購買了《嵌入式實時操作系統μCOS-II(第二版)》,除開以下三個文件:
1、OS_CPU_C.c
2、OS_CPU.H,
3、OS_CPU_A.asm(這個是MDK環境下的匯編文件)或OS_CPU_A.a(這個是IAR開發環境下的匯編)
這三個文件的處理機制暫時可以不用先了解怎么做的,怎么移植的,以后再說
第一次讀這本書時,搞清楚什么是任務,什么是前后臺,為什么要在系統中加入嵌入式操作系統。
第二次讀這本書時,詳細了解他的TCB(Task Control Block)和ECB(Event Control Block)的數據結構,搞清楚整個uCOS的實現機制(這里不要先就去看uCOS的移植,這樣只會讓你云里霧里的)
第三次讀這本書是,詳細了解信號量,互斥信號量、消息隊列、郵箱和時間標志組
鑒于你又購買了《μC/OS-Ⅱ標準教程》,你 可以想在VC++ 6.0開發環境下實現對信號量,互斥信號量、消息隊列、郵箱和事件標志組的上機實驗代碼。
如果還是不能了解uCOS怎么工作的,建議你多看幾遍(我可是足足看了6、7遍了,書都翻得脫頁了。汗說明我很笨,希望各位看官都比我聰明,呵呵)
第三步:建立對uCOS的初步認識
在網上下載對應你的開發板ARM芯片移植好了文件OS_CPU_C.c,OS_CPU.H,OS_CPU_A.asm(當然有的開發板已經提供了這樣的基礎實驗)
在你的開發板上跑跑uCOS,建立起自己對于uCOS在ARM7開發板上的認識。
在你所購買的ARM7開發板上編寫一個自己跑uCOS得任務(這里先不要去搞中斷,初學者對于uCOS下的中斷程序設計根本就搞不清楚)
第四步:熟悉ARM體系結構
因為是基于ARM7的移植,建議英文不好的去看看這本書《ARM體系結構與編程》(雖然這本書的作者在翻譯時有很多操作,但是還是建議初學者去購買來好好看看),對于英文好的直接在網上下載《ARM+Architecture+Reference+Manual(2nd+Edition)》看就可以了
在看這個《ARM體系結構與編程》或《ARM+Architecture+Reference+Manual(2nd+Edition)》時,務必注意多看幾次,了解以下幾個方面的知識:
1、ARM模式下的指令集
2、Thumd模式下的指令集
3、異常模式及進入異常時ARM如何處理
4、一定能熟悉ARM中的匯編指令
5、熟悉CPSR,R0-R7,R8-R14,R15及在各個模式下,這些寄存器的映射。
熟悉以后,再來自己做uCOS的移植了。
第五步:uCOS移植
當然在自己編寫代碼做移植uCOS之前,有必要看看別人的移植代碼。
其實對于uCOS的移植,我們只需要編寫關鍵的三個文件,文件如下:
1、OS_CPU_C.c(堆棧初始化操作OSTaskStkInit函數)
2、OS_CPU.H:完成在該芯片下的數據定義,比如什么unsigned char 之類的,注意一下OS_STK和OS_CPU_SR的定義,定義下關中斷和開中斷的方式,有三個只能選擇1個,ARM芯片一般是定義為第三種方式
3、OS_CPU_A.asm(這個是MDK環境下的匯編文件)或OS_CPU_A.a(這個是IAR開發環境下的匯編),這個文件的內容就多了,要做以下幾個函數的重寫:
1、OSStartHighRdy函數
2、任務級的任務切換函數OSCtxSw,
3、中斷級的任務切換OSIntCtxSw,其實只要寫好了OSCtxSw,OSIntCtxSw自然就copy一下就完了(copy的時候記者要把保存當前任務的寄存器去掉就可以了。
第六步:測試自己的uCOS移植代碼
第七步:在自己寫的uCOS移植代碼中跑跑任務。


[分享]ARM初學者學習ARM的步驟
很多人學完單片機就想學arm,但不知如何去學~現在列出一下學習這方面的步驟-----基于linux系統的學習步驟如下:(一步步來哦:)
其實這也只是個基礎,以后實際做項目了還要去學很多
1、Linux 基礎
安裝Linux操作系統
Linux文件系統
Linux常用命令
Linux啟動過程詳解
熟悉Linux服務 能夠獨立安裝Linux操作系統
能夠熟練使用Linux系統的基本命令
認識Linux系統的常用服務 安裝Linux操作系統
Linux基本命令實踐
設置Linux環境變量
定制Linux的服務 Shell 編程基礎使用vi編輯文件
使用Emacs編輯文件
使用其他編輯器
2、Shell 編程基礎
Shell簡介
認識后臺程序
Bash編程熟悉Linux系統下的編輯環境
熟悉Linux下的各種Shell
熟練進行shell編程熟悉vi基本操作
熟悉Emacs的基本操作
比較不同shell的區別
編寫一個測試服務器是否連通的shell腳本程序
編寫一個查看進程是否存在的shell腳本程序
編寫一個帶有循環語句的shell腳本程序
3、Linux 下的 C 編程基礎
linux C語言環境概述
Gcc使用方法
Gdb調試技術
Autoconf
Automake
Makefile
代碼優化 熟悉Linux系統下的開發環境
熟悉Gcc編譯器
熟悉Makefile規則編寫Hello,World程序
使用 make命令編譯程序
編寫帶有一個循環的程序
調試一個有問題的程序
4、嵌入式系統開發基礎
嵌入式系統概述
交叉編譯
配置TFTP服務
配置NFS服務
下載Bootloader和內核
嵌入式Linux應用軟件開發流程
熟悉嵌入式系統概念以及開發流程
建立嵌入式系統開發環境制作cross_gcc工具鏈
編譯并下載U-boot
編譯并下載Linux內核
編譯并下載Linux應用程序
4、嵌入式系統移植
Linux內核代碼
平臺相關代碼分析
ARM平臺介紹
平臺移植的關鍵技術
移植Linux內核到 ARM平臺 了解移植的概念
能夠移植Linux內核移植Linux2.6內核到 ARM9開發板
5、嵌入式 Linux 下串口通信
串行I/O的基本概念
嵌入式Linux應用軟件開發流程
Linux系統的文件和設備
與文件相關的系統調用
配置超級終端和MiniCOM 能夠熟悉進行串口通信
熟悉文件I/O 編寫串口通信程序
編寫多串口通信程序
6、嵌入式系統中多進程程序設計
Linux系統進程概述
嵌入式系統的進程特點
進程操作
守護進程
相關的系統調用了解Linux系統中進程的概念
能夠編寫多進程程序編寫多進程程序
編寫一個守護進程程序
sleep系統調用任務管理、同步與通信 Linux任務概述
任務調度
管道
信號
共享內存
任務管理 API 了解Linux系統任務管理機制
熟悉進程間通信的幾種方式
熟悉嵌入式Linux中的任務間同步與通信
編寫一個簡單的管道程序實現文件傳輸
編寫一個使用共享內存的程序
7、嵌入式系統中多線程程序設計
線程的基礎知識
多線程編程方法
線程應用中的同步問題了解線程的概念
能夠編寫簡單的多線程程序編寫一個多線程程序
8、嵌入式 Linux 網絡編程
網絡基礎知識
嵌入式Linux中TCP/IP網絡結構
socket 編程
常用 API函數
分析Ping命令的實現
基本UDP套接口編程
許可證管理
PPP協議
GPRS 了解嵌入式Linux網絡體系結構
能夠進行嵌入式Linux環境下的socket 編程
熟悉UDP協議、PPP協議
熟悉GPRS 使用socket 編寫代理服務器
使用socket 編寫路由器
編寫許可證服務器
指出TCP和UDP的優缺點
編寫一個web服務器
編寫一個運行在 ARM平臺的網絡播放器
9、GUI 程序開發
GUI基礎
嵌入式系統GUI類型
編譯QT
進行QT開發熟悉嵌入式系統常用的GUI
能夠進行QT編程使用QT編寫“Hello,World”程序
調試一個加入信號/槽的實例
通過重載QWidget 類方法處理事件
10、Linux 字符設備驅動程序
設備驅動程序基礎知識
Linux系統的模塊
字符設備驅動分析
fs_operation結構
加載驅動程序了解設備驅動程序的概念
了解Linux字符設備驅動程序結構
能夠編寫字符設備驅動程序編寫Skull驅動
編寫鍵盤驅動
編寫I/O驅動
分析一個看門狗驅動程序
對比Linux2.6內核與2.4內核中字符設備驅動的不同
Linux 塊設備驅動程序塊設備驅動程序工作原理
典型的塊設備驅動程序分析
塊設備的讀寫請求隊列了解Linux塊設備驅動程序結構
能夠編寫簡單的塊設備驅動程序比較字符設備與塊設備的異同
編寫MMC卡驅動程序
分析一個文件系統
對比Linux2.6內核與2.4內核中塊設備驅動的不同
11、文件系統
虛擬文件系統
文件系統的建立
ramfs內存文件系統
proc文件系統
devfs 文件系統
MTD技術簡介
MTD塊設備初始化
MTD塊設備的讀寫操作了解Linux系統的文件系統
了解嵌入式Linux的文件系統
了解MTD技術
能夠編寫簡單的文件系統為 ARM9開發板添加 MTD支持
移植JFFS2文件系統
通過proc文件系統修改操作系統參數
分析romfs 文件系統源代碼

創建一個cramfs 文件系統


2009-08-16 00:55 ARM初學者必讀
本文是寫給準備學習ARM技術,而又沒想好要學ARM7還是ARM9或者對ARM7與ARM9的區別不是很了解的初學者。希望本文對你們有點用處。
由于職業的關系,經常會回答一些ARM初學者的問題,雖然問題千奇百怪,但以下兩個問題絕對很有代表性。
1.ARM7和ARM9的都有些什么區別?
2.我準備學ARM,但不知是選ARM7還是ARM9好?
也許這些問題在大蝦們的眼里已不是問題,但對于初學者確實很具必要弄清楚。先說下:ARM7和ARM9的區別。
1 時鐘頻率的提高
雖然ARM7和ARM9內河架構相同,但ARM7處理器采用3級流水線的馮·諾伊曼結構;,而ARM9采用5級流水線的哈佛結構。增加的流水線設計提高了時鐘頻率和并行處理能力。5級流水線能夠將每一個指令處理分配到5個時鐘周期內,在每一個時鐘周期內同時有5個指令在執行。在常用的芯片生產工藝下,ARM7一般運行在100MHz左右,而ARM9E則至少在200MHz以上。
2. MMU(內存管理單元)
ARM7一般沒有MMU(內存管理單元),(ARM720T有MMU)。ARM9一般是有MMU的,ARM9940T只有MPU ,不是一個完整的MMU。這一條很重要,MMU單元是大型操作系統必需的硬件支持,如LINUX;WINCE等。這就是說,ARM7一般只能運行小型的實時系統如UCOS-II,eCOS等,而ARM9無此限制,一般的操作系統都可以移植。其實即使ARM720T能支持LINUX;WINCE等系統,也鮮有人用,因為以ARM7的運行速度跑這種大型操作系統,實在有點吃力。再者兩者的應用領域明顯不同,也無此必要。
4. ARM7比ARM9提供了更好的性能-功耗比。它包含了THUMB指令集快速乘法指令和ICE調試技術的內核。
5. 在從ARM7到ARM9的平臺轉變過程中,有一件事情是非常值得慶幸的,即ARM9E能夠完全地向后兼容ARM7上的軟件;并且開發人員面對的編程模型和架構基礎也保持一致。
在來說一下初學者是選ARM7還是ARM9。
1.明確目的
學習為應用。你學ARM準備用在什么地方,如果是一般性控制系統或僅僅用來替換8獲16位機,ARM7顯然是首選;但如果用在網絡通信或大型的音視頻處理等,則ARM9較合適。
2.自身基礎
學習ARM的一般有三類人:
一是計算機專業的
這類人對操作系統等軟件知識了解較多,而對硬件知識知之甚少,顯然這類人學ARM的話還是做軟件好,可以基于LINUX;WINCE等操作系統的ARM9更能符合這類人的要求,當然也有很多計算機專業的人從事ARM7系統的應用軟件編寫的。但是搞底層的就很少了。
二是電子類專業的
這類人的硬件基礎了相對較好,相反操作系統,數據庫等軟件知識則差強人意。因此人多電子專業的人員都熟悉單片機,用單片編寫點小程序還不在話下,但要用ARM做較大型的軟件則有點力不從心。
尤其是LINUX;WINCE這種操作系統不是三兩個月能輕松搞定的。建議這類人員如無特別需要還是從ARM7和小型操作系統學起。夠用就好,不要盲目追求高端。有一點要注意并不是從事ARM9的就比ARM7工資高,反而ARM7的就業機會比ARM9多,這很好理解,好比金字塔,越往頂肯越小。
三是軟硬件基礎都不太好的
這類人員有確實需要的,也有趕時髦的,如無大的學習決心還是參加培訓的好。當然也可曲線救國,搞懂單片機后,ARM7就不難了。
最后說一點關于開發板的,初學者買個開發板確實很有必要,但也要選擇合適的,初學者合適的就是,資料齊全,有配套教程和學習指導,再加上較及時的技術支持。目前能做到的很少,開發板這東西不是說哪家公司有名氣,售后就好,很多大公司一般不理個人買家的問題的,我感覺多半是運氣,運氣好了也許能碰到一家售后好的

?

嵌入式學習步驟
嵌入式門檻雖然較高,但也跟其他事物一樣,并不是牢不可破。只要我們用心去對待,冬雪終將化去,春風定會吹來。
具體步驟如下:
1、《C語言》第二版 譚浩強 ; 《C程序設計語言》第二版 徐寶文譯 機械工業出版社
你能區分開指針數組和數組指針嗎?你知道函數指針嗎?
你能區分開定義一個變量時系統給它分配的空間與用malloc()函數給一個變量分配的空間有什么不一樣嗎?
2、《數據結構》C語言版 黃國愉、葉乃青編 清華大學出版社
你能合上書本,用C語言實現書中的單鏈表、雙鏈表數據結構嗎?
3、《實用C++程序設計》第二板 中國電力出版社 Steve_Oualline著
此階段主要是學習其面向對象的編程思想,加深對C語言和數據結構的理解。
4、學習單片機,最好能找個前輩帶一帶。
你能用51單片機做出一樣實際的東西嗎?即使它再簡單!
要注意加深對中斷的理解。
5、學習ARM單片機。
(1)、細讀《ARM微控制器基礎與實戰》周立工編寫(注:即使你不用書中的開發板)
(2)、細讀相關芯片的原版英文文檔。如:arm920TE.pdf S3C2410_1.2.pdf
6、學習uCOS!!操作系統。
(1)、細讀《嵌入式實時操作系統uC/OS-!!》第二版 召貝貝譯
你能把uCOS!!移植到自己的平臺上嗎?
(2)、能編寫在uCOS!!操作系統環境下運行的針對具體硬件的驅動程序
7、熟悉Linux環境,學習Linux環境編程,學習交叉編程
(1)、細讀《linux命令大全.pdf》
(2)、細讀《GNU Make 使用手冊(中譯版).pdf》
(3)、學習創建交叉編程環境.
8、學習Linux操作系統。
(1)、《UNIX環境高級編程》
(2)、細讀“joyfire 筆記”,可在qianrushi網站的好書下載欄目獲取
(3)、細讀《linux內核完全注釋》
(4)、細讀《understanding the linux kernel 2》
(5)、利用源代碼閱讀利器工具"Source Insight"進行真正的linux內核原碼刨析
(6)、最后進行內核移植,并能編寫在linux操作系統環境下運行的針對具體硬件的驅動程序
9、學習Linux設備驅動編寫。可參考《Linux設備驅動程序》
10、復習C++,學習用QT進行圖形界面編程
(1)、細讀《QT編程寶典》
(2)、學會通過查看QT電子文檔進行QT GUI實地編程
(3)、學習交叉編程.(其實就是把命令qmake變為tmake)
11、當然,你也可學習一下PCB的制作和設計一個自己的CPU(即軟殼)
在嵌入式軟件方面最重要的課程包括:
(1)? 嵌入式微處理器結構與應用:
這是一門嵌入式硬件基礎課程,我們說過,嵌入式是軟硬件結合的技術,搞嵌入式軟件的人應對ARM處理器工作原理和接口技術有充分了解,包括ARM的匯編指令系統。若不了解處理器原理,怎么能控制硬件工作,怎么能寫出節省內存又運行高速的最優代碼(嵌入式軟件設計特別講究時空效率),怎么能寫出驅動程序(驅動程序都是與硬件打交道的)?很多公司招聘嵌入式軟件人員時都要求熟悉ARM處理器,將來若同學到公司中從事嵌入式軟件開發,公司都會給你一本該設備的硬件規格說明書 (xxx Specification),你必須能看懂其中的內存分布和端口使用等最基本的說明(就像x86匯編一樣),否則怎么設計軟件。有些同學覺得嵌入式處理 器課程較枯燥,這主要是硬件課程都較抽象的原因。還有同學對ARM匯編不感興趣,以為嵌入式開發用C語言就足夠了。其實不應僅是將匯編語言當成一個程序設計語言,學匯編主要是為了掌握處理器工作原理的。一個不熟悉匯編語言的人,怎么能在該處理器寫出最優的C語言代碼。在嵌入式開發的一些關鍵部分,有時還必須寫匯編,如Bootloader等(可能還包括BSP)。特別是在對速度有極高要求的場合(如DSP處理器的高速圖像采集和圖像解壓縮),目前還會用到匯編寫程序的,盡管用到的機會相對C要小得多。當你在一個嵌入式公司工作時,在查看描述原理的手冊時,可能很多都是用匯編描述的,這是因為很多硬件設計人員只會寫或者喜歡用匯編描述,此時你就必須看懂匯編程序,否則軟硬件人員可能就無法交流。很多嵌入式職位招聘時都要求熟悉匯編。
[小知識] 目前嵌入式處理器常見的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire (冷火)等,但ARM占據了絕對主流(有資料說手機中幾乎90%都是ARM處理器)。ARM是一個只賣知識產權的公司,目前獲得購買了ARM CPU核授權許可的大公司很多,包括Intel、Samsung、Amstel、Motorola、Philip等,他們都在ARM CPU核的基礎上進行了一些外圍擴展,形成自己的處理器(如Samsung S3C2410,Motorola i.MXL9328等處理器都是采用ARM 9內核,指令一級是相同的)。而眾多中小公司又購買了這些處理器,設計了各種各樣的開發板,如華恒等國內很多著名嵌入式公司都生產基于SamsungS3C2410的開發板,供最終用戶使用或供教學實驗。在ARM這個食物鏈上,ARM公司是大魚,Intel、Samsung等公司是小魚,而華恒等則是蝦米,最終用戶(我們這些要采購嵌入式開發板的)則是喂蝦米的。Intel早期生產的是低端ARM(Strong ARM,相當于ARM 7),現在轉向主要生產高端ARM(即Intel Xscale處理器,屬于ARMv5家族,主要用在高端PDA上,如HP和DELL生產的PDA都采用Intel Xscale,價格較高)。目前應用最多的是ARM 7和ARM 9兩類處理器。 ARM 7較便宜,可跑uclinux(是一個不支持高級內存管理功能的嵌入式Linux系統統)、Vxworks、uc/os II等實時操作系統,但因處理器不帶內存管理單元MMU(無內存分頁和地址映射機制,所以不能使用虛擬內存),所以不能跑Windows CE,另外通用Linux中的某些內存管理功能也不能用在ARM 7上。ARM 9大都是一個帶MMU功能的高端處理器,可跑WinCE或通用Linux的大多數功能。ARM7和ARM9的區別是在與體系結構上,前者是馮·諾伊曼結 構,后者是哈佛結構——指令和數據總線是分開的。以上是我的一點了解,可能有不對的地方。我們學院有十幾套ARM 7開發系統(采用Samsung S3C44b0x開發板,主要用于嵌入式處理器結構、實時操作系統等課程實驗用),ARM 9的系統好象也已經到了(采用的芯片我不知道也沒去問),還有以前的十幾套MPC860開發板(聽說價格都很貴,很容易損壞),同學應愛護使用和珍惜這樣 的實驗機會。
(2) 嵌入式操作系統類課程
除了WinCE的實時性稍差外,大多數嵌入式操作系統的實時性都很強,所以也可稱為實時操作系統Real Time Operating System.從事嵌入式的人至少須掌握一個嵌入式操作系統,這在嵌入式的所有技術中是最為關鍵的了。目前最重要的RTOS主要包括:
第一類、傳統的經典RTOS:最主要的便是Vxworks操作系統,以及其Tornado開發平臺。Vxworks因出現稍早,實時性很強(據說可在1ms內響應外部事件請求),并且內核可極微(據說最小可8K),可靠性較高等,所以在北美,Vxworks占據了嵌入式系統的多半 疆山。特別是在通信設備等實時性要求較高的系統中,幾乎非Vxworks莫屬。Vxworks的很多概念和技術都和Linux很類似,主要是C語言開發。像Bell- alcatel、Lucent、華為等通信企業在開發產品時,Vxworks用得很多。但Vxworks因價格很高,所以一些小公司或小產品中往往用不 起。目前很多公司都在往嵌入式Linux轉(聽說華為目前正在這樣轉)。但無論如何,Vxworks在一段長時間內仍是不可動搖的。與Vxworks類似 的稍有名的實時操作系統還有pSOS、QNX、Nucleus等RTOS。
第二類、嵌入式Linux操作系統:Linux的前途除作為服務器操作系統外,最成功的便是在嵌入式領域的應用,原因當然是免費、開源、支持軟件多、呼擁者眾,這樣嵌入式產品成本會低。Linux本身不是一個為嵌入式設計的操作系統,不是微內核的,并且實時性不強。
目前應用在嵌入式領域的Linux系統主要有兩種:
一種是專為嵌入式設計的已被裁減過的Linux系統,最常用的是uClinux(不帶MMU功能),目前占較大應用份額,可在ARM7上跑;另一種是跑在 ARM 9上的,一般是將Linux2.4.18內核移植在其上,可使用更多的Linux功能(當然uClinux更可跑在ARM 9上)。很多人預測,嵌入式Linux預計將占嵌入式操作系統的50%以上份額,非常重要。缺點是熟悉Linux的人太少,開發難度稍大。另外,目前我們 能發現很多教材和很多大學都以ucOS/II為教學用實時操作系統,這主要是由于ucOS/II較簡單,且開源,非常適合入門者學習實時操作系統原理,但 由于ucOS/II功能有限,實用用得較少。況且熟悉了Linux開發,不僅在嵌入式領域有用,對開發Linux應用軟件,對加深操作系統的認識也有幫 助,可謂一舉多得。據我所知,目前Intel、Philip都在大搞ARM+LINUX的嵌入式開發,Fujitum則是在自己的處理器上大搞Linux 開發。目前在嵌入式Linux領域,以下幾個方面的人特別難找,一是能將Linux移植到某個新型號的開發版上;二是能寫Linux驅動程序的人;三是熟悉Linux內核裁減和優化的人。不過LINUX有一個硬傷,就是沒有WINDOWS那樣的友好方便美觀
的交互界面,不然微軟帝國早就守不住了。
第三類、 Windows CE嵌入式操作系統:Microsoft也看準了嵌入式的巨大市場,MS永遠是最厲害的,WinCE出來只有幾年時間,但目前已占據了很大市場份額,特別是在PDA、手機、顯示儀表等界面要求較高或者要求快速開發的場合,WinCE目前已很流行(據說有一家賣工控機的公司板子賣得太好,以至來不及為客戶裁減WinCE)。WinCE目前主要為4.2版(.NET),開發平臺主要為WinCE Platform Builder,有時也用EVC環境開發一些較上層的應用,由于WinCE開發都是大家熟悉的VC++環境,所以我院學過Windows程序設計課程的同 學都不會有多大難度,這也是WinCE容易被人們接受的原因,開發環境方便快速,微軟的強大技術支持,WinCE開發難度遠低于嵌入式Linux。對于急于完成,不想拿嵌入式Linux冒險的開發場合,WinCE是最合適了(找嵌入式Linux的人可沒那么好找的),畢竟公司不能像學生學習那樣試試看,保證開發成功更重要。根據不同的側重點,WinCE還有兩個特殊版本,一個是MS PocketPC操作系統專用于PDA上(掌上電腦),另一個是MS SmartPhone操作系統用于智能手機上(帶PDA功能的手機),兩者也都屬于WinCE平臺。在PDA和手機市場上,除WinCE外,著名的PDA 嵌入式操作系統還有Palm OS(因出現很早,很有名)、Symbian等,但在WinCE的強勁沖擊下,Palm和Symbian來日還能有多長?同學學過VC++后再學 WinCE,非常方便自然,通過學習WinCE同樣也可了解嵌入式軟件的一般開發過程,對Linux有懼怕心理的同學也很合適。很顯然,嵌入式Linux 永遠不可能替代WinCE,而且將來誰占份額大還很難講,畢竟很多人更愿意接受MS的平臺,就像各國政府都在大力推LINUX已好長時間,但你能看到幾個 在PC機上真正使用LINUX的用戶?據我觀察,目前在嵌入式平臺上,LINUX是叫得最響,但還是WinCE實際用得更多.嵌入式LINUX可能更多地是一些有長遠產品計劃的公司,為降低成本而進行長遠考慮.WinCE和多媒體(如MPEG技術)是微軟亞洲工程院目前做得較多的項目領域之 一,現在社會很需要精通WinCE的人。現在有WINCE的智能手機,金山詞霸、WORD、EXCEL、REGEDIT等居然都有 smartphone版的,PC上的MP3、DOC等居然在download時都可被自動轉換成smartphone格式,很爽的。完全可用 Windows CE自己開發一些需要的程序download到自己的手機上。現在市面銷售PDA智能手機火爆,MS總是財源滾滾。
總結關于嵌入式操作系統類課程,若你覺得自己功底較深且能鉆研下去,則可去學嵌入式Linux;若你覺得自己VC++功底較好且想短平快地學嵌入式開發,自學WINCE是非常好的選擇。
(3) 嵌入式開發的相關領域
搞嵌入式若能熟悉嵌入式應用的一些主要領域,這樣的人更受企業歡迎。主要的相關領域包括:
A、數字圖像壓縮技術:這是嵌入式最重要最熱門的應用領域之一,主要是應掌握MPEG編解碼算法和技術,如DVD、MP3、PDA、高精電視、機頂盒等都涉及MPEG高速解碼問題。
B、 通信協議及編程技術:這包括傳統的TCP/IP協議和熱門的無線通信協議。首先,大多數嵌入式設備都要連入局域網或Internet,所以首先應掌握 TCP/IP協議及其編程,這是需首要掌握的基本技術;其次,無線通信是目前的大趨勢,所以掌握無線通信協議及編程也是是很重要的。無線通信協議包括無線 局域網通信協議802.11系列,Bluetooth,以及移動通信(如GPRS、GSM、CDMA等)。
C、網絡與信息安全技術:如加密技術,數字證書CA,以及各種網絡安全設備,包括硬件防火墻,入侵檢測IDS,還有防毒墻,IPS等,中國在這方面還是沒有自己優勢的,我們陳院長好象正在往這方面發展.
D、 DSP技術:DSP是Digital Signal Process數字信號處理的意思,DSP處理器通過硬件實現數字信號處理算法,如高速數據采集、壓縮、解壓縮、通信等。數字信號處理是電子、通信等硬件 專業的課程,對于搞軟件的人若能了解一下最好。目前DSP人才較缺。如果有信號與系統、數字信號處理等課程基礎,對于學習MPEG編解碼原理會有很大幫助。
(4)嵌入式開發的相關硬件基礎
對于軟件工程專業的學生,從事嵌入式軟件開發,像數字電路、計算機組成原理、嵌入式微處理器結構等硬件課程是較重要的。另外,匯編語言、C/C++ 數據結構算法、特別是操作系統等軟件基礎課也是十分重要的。我們的主要目地是能看懂硬件工作原理,但重點應是在嵌入式軟件,特別操作系統級軟件,那將是我們的優勢。我們的研究生里有些是學電子、通信類專業過來的,有較好的模擬電路和單片機基礎,學嵌入式非常合適。嵌入式本身就是從單片機發展過來的,只是單片機不帶OS,而現在很多嵌入式應用越來越復雜,以至不得不引入嵌入式操作系統。另外,為追求更高速的信號處理速度,現在在一些速度要求較高場合,有不少公司是將一些DSP算法,如MPEG壓縮解壓縮算法等用硬件來實現,這就涉及到HDL數字電路設計技術及其 FPGA/IP核實現技術,這方面的人目前市場上也很缺。
學習嵌入式系統的10點建議
現在,國內似乎在進行一個全民學習嵌入式的運動,但據了解,很多人在整個學習的過程中,由于某些技術領域的空白或者是技術尚未成熟,再加上個人學習方法不正確,給個人的學習造成了極大的阻礙,遇到這種情況該如何解決?根據本人有限的學習經驗,給學習嵌入式的人以下10點建議:
1. 遇到問題,首先進入baidu google.com ( 或是其他搜索引擎)搜索一下,任何一個嵌入式工程師都不敢否認,這是學習嵌入式最好的老師!
2. 盡可能多的論壇,遇到問題,及時發貼,情況緊急的時候,可以在不同的論壇同時發貼,這樣,并行處理你的問題也許會解決得更快些.
3. 盡可能多的結交嵌入式高手,最好是在公司上班的嵌入式工程師,他們有一個優勢:了解市場,了解業界的發展動態.和他們多混混,對尚未上班的學習者來說,是非常有必要的.
4. 要經常進入一些好的嵌入式網站,尤其是一些國外的網站,去看看嵌入式的發展動態,并且,要把這些網站都收集起來...
5. 如果可能,我建議大家在網上訂一下電子刊物,這些電子刊物是按時發到你郵箱的,那些資訊都是最新的,可以說是很前衛的了.....如果資金允許,建議報名參加嵌入式培訓班,比如比較有名氣的海同嵌入式培訓。在培訓公司可以很快的入門提高,這樣可以更好的提高學習效率。
6. 相信自己的選擇,相信自己行業的發展前景,要對自己的選擇和自己的行業有濃厚的興趣,這一點做不到,你就很難學到很高深的層次!
7. 追求要執著!剛開始學習嵌入式系統,肯定會遇到很多問題,我當時也是這樣,學了三個多月,好像一點進展都沒有,我在懷疑:難道我不適合搞嵌入式?當時我也想過放棄,但心里太不甘心了,腳都踏出了一只,我不能就這樣屈了!于是就硬上,不斷的琢磨....(現在,終于知道什么是嵌入式linux了,哈哈....)
8. 不要對自己要求過高,只要你比昨天進步了一點,你就離成功又近了一步!學習嵌入式也忌浮氣燥(其實這一點,我最有感觸!),也就是要踏實.
9. 萬丈高樓平地起,不要忽略了低層的東西,你越是學習到高層的技術,越是發覺低層的東西有用,這些大家以后會有所體會的!我大一學習51單片機的時候,感覺它沒什么用處,大二學習ARM處理器,才知道,沒有51的基礎,可能還不知道要多花多少時間才能搞懂ARM的硬件.
10. 系統的選型的問題.現在的開源操作系統已經很多了,并且也做得非常成熟,初學者也會為此而煩惱.目前較為流行的嵌入式操作系統有:linux,winCE,VxWork,uC/OS2等等....主要區別在于實時性的問題.如果你是搞自控(像我學習的專業,不過我不玩控制的....),學習實時性高一點的操作系統更有幫助,如VxWork.如果你想以后搞民用產品,如手機,機頂盒,終端設備之類的,學習linux,winCE這些方便于多任務運行的操作系統較好!建議你在學習之前先了解該系統的市場占有率,學東西得看看學完它之后到底有沒有作為啊,否則,你就一輩子只有自己玩系統啰...

總結

以上是生活随笔為你收集整理的ARM学习方法大杂烩,高手经验之谈,内容完全来自互联网的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。