ARM学习方法大杂烩,高手经验之谈,内容完全来自互联网
一步一步學(xué)習(xí)uCOS和ARM體系結(jié)構(gòu)的心得
學(xué)習(xí)必備條件:
1、一塊開(kāi)發(fā)板——例如44B0開(kāi)發(fā)板,建議初學(xué)者不要去購(gòu)買那些ARM9體系結(jié)構(gòu)的,因?yàn)樽鳛槌鯇W(xué)者來(lái)說(shuō)ARM9體系的東西是很復(fù)雜的,買塊ARM7的就可以了(先入門,然后再提高);
2、學(xué)習(xí)必備書(shū)籍
《Pointer on C》中文名字叫《C和指針》(美)里科|譯者:徐波 前提你的了解C指針吧(這本書(shū)時(shí)非常經(jīng)典的書(shū)籍,完全可以看中文版的,作者翻譯的非常到位)
《嵌入式實(shí)時(shí)操作系統(tǒng)μCOS-II(第二版)》--邵貝貝翻譯的(不能不承認(rèn)邵貝貝是一個(gè)非常好的翻譯者)
《μC/OS-Ⅱ標(biāo)準(zhǔn)教程》--楊宗德
對(duì)于英文不好的朋友可以購(gòu)買《ARM體系結(jié)構(gòu)與編程》--杜春蕾(該書(shū)其實(shí)還是有很多翻譯錯(cuò)誤的,大家在看的時(shí)候要注意一下,但是不可否認(rèn)的是這本書(shū)到目前為止算得上是我見(jiàn)過(guò)最好的講解關(guān)于ARM體系結(jié)構(gòu)的書(shū)籍了)
對(duì)于英文過(guò)關(guān)的兄弟姐妹可以直接看《ARM+Architecture+Reference+Manual(2nd+Edition)》
3、有條件的兄弟姐妹可以選購(gòu)一個(gè)仿真器 JLINK V8全功能版(這個(gè)的感謝中國(guó)的優(yōu)秀工程師,是他們把原價(jià)1999多的JLINK變成了幾十元錢的東西
4、開(kāi)發(fā)環(huán)境--MDK350或者IARARM
如果要熟悉這些開(kāi)發(fā)環(huán)境,就需要好好讀一些這些開(kāi)發(fā)環(huán)境的手冊(cè)資料,不好意思,這個(gè)就只有英文的了。
以上4個(gè)條件具備下來(lái),可能也不會(huì)超過(guò)500元錢。
下面來(lái)講講我的學(xué)習(xí)經(jīng)歷:
我剛開(kāi)始學(xué)習(xí)的時(shí)候,自己走了不少?gòu)澛?#xff0c;這里就省略不說(shuō)了。
第一步:在開(kāi)發(fā)板上跑跑簡(jiǎn)單程序
因?yàn)槟阌虚_(kāi)發(fā)板,所以你就先在網(wǎng)上找一下對(duì)應(yīng)開(kāi)發(fā)板上的ARM芯片的datasheet,你都不先搞懂芯片的手冊(cè),又談何讓自己實(shí)現(xiàn)很多功能呢。
熟讀數(shù)據(jù)手冊(cè)后,就盡可能的在開(kāi)發(fā)板上實(shí)現(xiàn)芯片對(duì)應(yīng)的每個(gè)功能,像GPIO實(shí)驗(yàn),UART通訊,I2C,ADC,DAC,PWM,RTC,SPI等等。自己寫自己的程序,然后在開(kāi)發(fā)板上好好實(shí)踐一下。
當(dāng)每個(gè)功能模塊都實(shí)現(xiàn)以后,建議你讓你的開(kāi)發(fā)板實(shí)驗(yàn)一下多個(gè)功能復(fù)合使用,比如用UART打印出ADC的值什么的。
第二步:學(xué)習(xí)uCOS
鑒于你已經(jīng)購(gòu)買了《嵌入式實(shí)時(shí)操作系統(tǒng)μCOS-II(第二版)》,除開(kāi)以下三個(gè)文件:
1、OS_CPU_C.c
2、OS_CPU.H,
3、OS_CPU_A.asm(這個(gè)是MDK環(huán)境下的匯編文件)或OS_CPU_A.a(這個(gè)是IAR開(kāi)發(fā)環(huán)境下的匯編)
這三個(gè)文件的處理機(jī)制暫時(shí)可以不用先了解怎么做的,怎么移植的,以后再說(shuō)
第一次讀這本書(shū)時(shí),搞清楚什么是任務(wù),什么是前后臺(tái),為什么要在系統(tǒng)中加入嵌入式操作系統(tǒng)。
第二次讀這本書(shū)時(shí),詳細(xì)了解他的TCB(Task Control Block)和ECB(Event Control Block)的數(shù)據(jù)結(jié)構(gòu),搞清楚整個(gè)uCOS的實(shí)現(xiàn)機(jī)制(這里不要先就去看uCOS的移植,這樣只會(huì)讓你云里霧里的)
第三次讀這本書(shū)是,詳細(xì)了解信號(hào)量,互斥信號(hào)量、消息隊(duì)列、郵箱和時(shí)間標(biāo)志組
鑒于你又購(gòu)買了《μC/OS-Ⅱ標(biāo)準(zhǔn)教程》,你 可以想在VC++ 6.0開(kāi)發(fā)環(huán)境下實(shí)現(xiàn)對(duì)信號(hào)量,互斥信號(hào)量、消息隊(duì)列、郵箱和事件標(biāo)志組的上機(jī)實(shí)驗(yàn)代碼。
如果還是不能了解uCOS怎么工作的,建議你多看幾遍(我可是足足看了6、7遍了,書(shū)都翻得脫頁(yè)了。汗說(shuō)明我很笨,希望各位看官都比我聰明,呵呵)
第三步:建立對(duì)uCOS的初步認(rèn)識(shí)
在網(wǎng)上下載對(duì)應(yīng)你的開(kāi)發(fā)板ARM芯片移植好了文件OS_CPU_C.c,OS_CPU.H,OS_CPU_A.asm(當(dāng)然有的開(kāi)發(fā)板已經(jīng)提供了這樣的基礎(chǔ)實(shí)驗(yàn))
在你的開(kāi)發(fā)板上跑跑uCOS,建立起自己對(duì)于uCOS在ARM7開(kāi)發(fā)板上的認(rèn)識(shí)。
在你所購(gòu)買的ARM7開(kāi)發(fā)板上編寫一個(gè)自己跑uCOS得任務(wù)(這里先不要去搞中斷,初學(xué)者對(duì)于uCOS下的中斷程序設(shè)計(jì)根本就搞不清楚)
第四步:熟悉ARM體系結(jié)構(gòu)
因?yàn)槭腔贏RM7的移植,建議英文不好的去看看這本書(shū)《ARM體系結(jié)構(gòu)與編程》(雖然這本書(shū)的作者在翻譯時(shí)有很多操作,但是還是建議初學(xué)者去購(gòu)買來(lái)好好看看),對(duì)于英文好的直接在網(wǎng)上下載《ARM+Architecture+Reference+Manual(2nd+Edition)》看就可以了
在看這個(gè)《ARM體系結(jié)構(gòu)與編程》或《ARM+Architecture+Reference+Manual(2nd+Edition)》時(shí),務(wù)必注意多看幾次,了解以下幾個(gè)方面的知識(shí):
1、ARM模式下的指令集
2、Thumd模式下的指令集
3、異常模式及進(jìn)入異常時(shí)ARM如何處理
4、一定能熟悉ARM中的匯編指令
5、熟悉CPSR,R0-R7,R8-R14,R15及在各個(gè)模式下,這些寄存器的映射。
熟悉以后,再來(lái)自己做uCOS的移植了。
第五步:uCOS移植
當(dāng)然在自己編寫代碼做移植uCOS之前,有必要看看別人的移植代碼。
其實(shí)對(duì)于uCOS的移植,我們只需要編寫關(guān)鍵的三個(gè)文件,文件如下:
1、OS_CPU_C.c(堆棧初始化操作OSTaskStkInit函數(shù))
2、OS_CPU.H:完成在該芯片下的數(shù)據(jù)定義,比如什么unsigned char 之類的,注意一下OS_STK和OS_CPU_SR的定義,定義下關(guān)中斷和開(kāi)中斷的方式,有三個(gè)只能選擇1個(gè),ARM芯片一般是定義為第三種方式
3、OS_CPU_A.asm(這個(gè)是MDK環(huán)境下的匯編文件)或OS_CPU_A.a(這個(gè)是IAR開(kāi)發(fā)環(huán)境下的匯編),這個(gè)文件的內(nèi)容就多了,要做以下幾個(gè)函數(shù)的重寫:
1、OSStartHighRdy函數(shù)
2、任務(wù)級(jí)的任務(wù)切換函數(shù)OSCtxSw,
3、中斷級(jí)的任務(wù)切換OSIntCtxSw,其實(shí)只要寫好了OSCtxSw,OSIntCtxSw自然就copy一下就完了(copy的時(shí)候記者要把保存當(dāng)前任務(wù)的寄存器去掉就可以了。
第六步:測(cè)試自己的uCOS移植代碼
第七步:在自己寫的uCOS移植代碼中跑跑任務(wù)。
[分享]ARM初學(xué)者學(xué)習(xí)ARM的步驟
很多人學(xué)完單片機(jī)就想學(xué)arm,但不知如何去學(xué)~現(xiàn)在列出一下學(xué)習(xí)這方面的步驟-----基于linux系統(tǒng)的學(xué)習(xí)步驟如下:(一步步來(lái)哦:)
其實(shí)這也只是個(gè)基礎(chǔ),以后實(shí)際做項(xiàng)目了還要去學(xué)很多
1、Linux 基礎(chǔ)
安裝Linux操作系統(tǒng)
Linux文件系統(tǒng)
Linux常用命令
Linux啟動(dòng)過(guò)程詳解
熟悉Linux服務(wù) 能夠獨(dú)立安裝Linux操作系統(tǒng)
能夠熟練使用Linux系統(tǒng)的基本命令
認(rèn)識(shí)Linux系統(tǒng)的常用服務(wù) 安裝Linux操作系統(tǒng)
Linux基本命令實(shí)踐
設(shè)置Linux環(huán)境變量
定制Linux的服務(wù) Shell 編程基礎(chǔ)使用vi編輯文件
使用Emacs編輯文件
使用其他編輯器
2、Shell 編程基礎(chǔ)
Shell簡(jiǎn)介
認(rèn)識(shí)后臺(tái)程序
Bash編程熟悉Linux系統(tǒng)下的編輯環(huán)境
熟悉Linux下的各種Shell
熟練進(jìn)行shell編程熟悉vi基本操作
熟悉Emacs的基本操作
比較不同shell的區(qū)別
編寫一個(gè)測(cè)試服務(wù)器是否連通的shell腳本程序
編寫一個(gè)查看進(jìn)程是否存在的shell腳本程序
編寫一個(gè)帶有循環(huán)語(yǔ)句的shell腳本程序
3、Linux 下的 C 編程基礎(chǔ)
linux C語(yǔ)言環(huán)境概述
Gcc使用方法
Gdb調(diào)試技術(shù)
Autoconf
Automake
Makefile
代碼優(yōu)化 熟悉Linux系統(tǒng)下的開(kāi)發(fā)環(huán)境
熟悉Gcc編譯器
熟悉Makefile規(guī)則編寫Hello,World程序
使用 make命令編譯程序
編寫帶有一個(gè)循環(huán)的程序
調(diào)試一個(gè)有問(wèn)題的程序
4、嵌入式系統(tǒng)開(kāi)發(fā)基礎(chǔ)
嵌入式系統(tǒng)概述
交叉編譯
配置TFTP服務(wù)
配置NFS服務(wù)
下載Bootloader和內(nèi)核
嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程
熟悉嵌入式系統(tǒng)概念以及開(kāi)發(fā)流程
建立嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境制作cross_gcc工具鏈
編譯并下載U-boot
編譯并下載Linux內(nèi)核
編譯并下載Linux應(yīng)用程序
4、嵌入式系統(tǒng)移植
Linux內(nèi)核代碼
平臺(tái)相關(guān)代碼分析
ARM平臺(tái)介紹
平臺(tái)移植的關(guān)鍵技術(shù)
移植Linux內(nèi)核到 ARM平臺(tái) 了解移植的概念
能夠移植Linux內(nèi)核移植Linux2.6內(nèi)核到 ARM9開(kāi)發(fā)板
5、嵌入式 Linux 下串口通信
串行I/O的基本概念
嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程
Linux系統(tǒng)的文件和設(shè)備
與文件相關(guān)的系統(tǒng)調(diào)用
配置超級(jí)終端和MiniCOM 能夠熟悉進(jìn)行串口通信
熟悉文件I/O 編寫串口通信程序
編寫多串口通信程序
6、嵌入式系統(tǒng)中多進(jìn)程程序設(shè)計(jì)
Linux系統(tǒng)進(jìn)程概述
嵌入式系統(tǒng)的進(jìn)程特點(diǎn)
進(jìn)程操作
守護(hù)進(jìn)程
相關(guān)的系統(tǒng)調(diào)用了解Linux系統(tǒng)中進(jìn)程的概念
能夠編寫多進(jìn)程程序編寫多進(jìn)程程序
編寫一個(gè)守護(hù)進(jìn)程程序
sleep系統(tǒng)調(diào)用任務(wù)管理、同步與通信 Linux任務(wù)概述
任務(wù)調(diào)度
管道
信號(hào)
共享內(nèi)存
任務(wù)管理 API 了解Linux系統(tǒng)任務(wù)管理機(jī)制
熟悉進(jìn)程間通信的幾種方式
熟悉嵌入式Linux中的任務(wù)間同步與通信
編寫一個(gè)簡(jiǎn)單的管道程序?qū)崿F(xiàn)文件傳輸
編寫一個(gè)使用共享內(nèi)存的程序
7、嵌入式系統(tǒng)中多線程程序設(shè)計(jì)
線程的基礎(chǔ)知識(shí)
多線程編程方法
線程應(yīng)用中的同步問(wèn)題了解線程的概念
能夠編寫簡(jiǎn)單的多線程程序編寫一個(gè)多線程程序
8、嵌入式 Linux 網(wǎng)絡(luò)編程
網(wǎng)絡(luò)基礎(chǔ)知識(shí)
嵌入式Linux中TCP/IP網(wǎng)絡(luò)結(jié)構(gòu)
socket 編程
常用 API函數(shù)
分析Ping命令的實(shí)現(xiàn)
基本UDP套接口編程
許可證管理
PPP協(xié)議
GPRS 了解嵌入式Linux網(wǎng)絡(luò)體系結(jié)構(gòu)
能夠進(jìn)行嵌入式Linux環(huán)境下的socket 編程
熟悉UDP協(xié)議、PPP協(xié)議
熟悉GPRS 使用socket 編寫代理服務(wù)器
使用socket 編寫路由器
編寫許可證服務(wù)器
指出TCP和UDP的優(yōu)缺點(diǎn)
編寫一個(gè)web服務(wù)器
編寫一個(gè)運(yùn)行在 ARM平臺(tái)的網(wǎng)絡(luò)播放器
9、GUI 程序開(kāi)發(fā)
GUI基礎(chǔ)
嵌入式系統(tǒng)GUI類型
編譯QT
進(jìn)行QT開(kāi)發(fā)熟悉嵌入式系統(tǒng)常用的GUI
能夠進(jìn)行QT編程使用QT編寫“Hello,World”程序
調(diào)試一個(gè)加入信號(hào)/槽的實(shí)例
通過(guò)重載QWidget 類方法處理事件
10、Linux 字符設(shè)備驅(qū)動(dòng)程序
設(shè)備驅(qū)動(dòng)程序基礎(chǔ)知識(shí)
Linux系統(tǒng)的模塊
字符設(shè)備驅(qū)動(dòng)分析
fs_operation結(jié)構(gòu)
加載驅(qū)動(dòng)程序了解設(shè)備驅(qū)動(dòng)程序的概念
了解Linux字符設(shè)備驅(qū)動(dòng)程序結(jié)構(gòu)
能夠編寫字符設(shè)備驅(qū)動(dòng)程序編寫Skull驅(qū)動(dòng)
編寫鍵盤驅(qū)動(dòng)
編寫I/O驅(qū)動(dòng)
分析一個(gè)看門狗驅(qū)動(dòng)程序
對(duì)比Linux2.6內(nèi)核與2.4內(nèi)核中字符設(shè)備驅(qū)動(dòng)的不同
Linux 塊設(shè)備驅(qū)動(dòng)程序塊設(shè)備驅(qū)動(dòng)程序工作原理
典型的塊設(shè)備驅(qū)動(dòng)程序分析
塊設(shè)備的讀寫請(qǐng)求隊(duì)列了解Linux塊設(shè)備驅(qū)動(dòng)程序結(jié)構(gòu)
能夠編寫簡(jiǎn)單的塊設(shè)備驅(qū)動(dòng)程序比較字符設(shè)備與塊設(shè)備的異同
編寫MMC卡驅(qū)動(dòng)程序
分析一個(gè)文件系統(tǒng)
對(duì)比Linux2.6內(nèi)核與2.4內(nèi)核中塊設(shè)備驅(qū)動(dòng)的不同
11、文件系統(tǒng)
虛擬文件系統(tǒng)
文件系統(tǒng)的建立
ramfs內(nèi)存文件系統(tǒng)
proc文件系統(tǒng)
devfs 文件系統(tǒng)
MTD技術(shù)簡(jiǎn)介
MTD塊設(shè)備初始化
MTD塊設(shè)備的讀寫操作了解Linux系統(tǒng)的文件系統(tǒng)
了解嵌入式Linux的文件系統(tǒng)
了解MTD技術(shù)
能夠編寫簡(jiǎn)單的文件系統(tǒng)為 ARM9開(kāi)發(fā)板添加 MTD支持
移植JFFS2文件系統(tǒng)
通過(guò)proc文件系統(tǒng)修改操作系統(tǒng)參數(shù)
分析romfs 文件系統(tǒng)源代碼
創(chuàng)建一個(gè)cramfs 文件系統(tǒng)
2009-08-16 00:55 ARM初學(xué)者必讀
本文是寫給準(zhǔn)備學(xué)習(xí)ARM技術(shù),而又沒(méi)想好要學(xué)ARM7還是ARM9或者對(duì)ARM7與ARM9的區(qū)別不是很了解的初學(xué)者。希望本文對(duì)你們有點(diǎn)用處。
由于職業(yè)的關(guān)系,經(jīng)常會(huì)回答一些ARM初學(xué)者的問(wèn)題,雖然問(wèn)題千奇百怪,但以下兩個(gè)問(wèn)題絕對(duì)很有代表性。
1.ARM7和ARM9的都有些什么區(qū)別?
2.我準(zhǔn)備學(xué)ARM,但不知是選ARM7還是ARM9好?
也許這些問(wèn)題在大蝦們的眼里已不是問(wèn)題,但對(duì)于初學(xué)者確實(shí)很具必要弄清楚。先說(shuō)下:ARM7和ARM9的區(qū)別。
1 時(shí)鐘頻率的提高
雖然ARM7和ARM9內(nèi)河架構(gòu)相同,但ARM7處理器采用3級(jí)流水線的馮·諾伊曼結(jié)構(gòu);,而ARM9采用5級(jí)流水線的哈佛結(jié)構(gòu)。增加的流水線設(shè)計(jì)提高了時(shí)鐘頻率和并行處理能力。5級(jí)流水線能夠?qū)⒚恳粋€(gè)指令處理分配到5個(gè)時(shí)鐘周期內(nèi),在每一個(gè)時(shí)鐘周期內(nèi)同時(shí)有5個(gè)指令在執(zhí)行。在常用的芯片生產(chǎn)工藝下,ARM7一般運(yùn)行在100MHz左右,而ARM9E則至少在200MHz以上。
2. MMU(內(nèi)存管理單元)
ARM7一般沒(méi)有MMU(內(nèi)存管理單元),(ARM720T有MMU)。ARM9一般是有MMU的,ARM9940T只有MPU ,不是一個(gè)完整的MMU。這一條很重要,MMU單元是大型操作系統(tǒng)必需的硬件支持,如LINUX;WINCE等。這就是說(shuō),ARM7一般只能運(yùn)行小型的實(shí)時(shí)系統(tǒng)如UCOS-II,eCOS等,而ARM9無(wú)此限制,一般的操作系統(tǒng)都可以移植。其實(shí)即使ARM720T能支持LINUX;WINCE等系統(tǒng),也鮮有人用,因?yàn)橐訟RM7的運(yùn)行速度跑這種大型操作系統(tǒng),實(shí)在有點(diǎn)吃力。再者兩者的應(yīng)用領(lǐng)域明顯不同,也無(wú)此必要。
4. ARM7比ARM9提供了更好的性能-功耗比。它包含了THUMB指令集快速乘法指令和ICE調(diào)試技術(shù)的內(nèi)核。
5. 在從ARM7到ARM9的平臺(tái)轉(zhuǎn)變過(guò)程中,有一件事情是非常值得慶幸的,即ARM9E能夠完全地向后兼容ARM7上的軟件;并且開(kāi)發(fā)人員面對(duì)的編程模型和架構(gòu)基礎(chǔ)也保持一致。
在來(lái)說(shuō)一下初學(xué)者是選ARM7還是ARM9。
1.明確目的
學(xué)習(xí)為應(yīng)用。你學(xué)ARM準(zhǔn)備用在什么地方,如果是一般性控制系統(tǒng)或僅僅用來(lái)替換8獲16位機(jī),ARM7顯然是首選;但如果用在網(wǎng)絡(luò)通信或大型的音視頻處理等,則ARM9較合適。
2.自身基礎(chǔ)
學(xué)習(xí)ARM的一般有三類人:
一是計(jì)算機(jī)專業(yè)的
這類人對(duì)操作系統(tǒng)等軟件知識(shí)了解較多,而對(duì)硬件知識(shí)知之甚少,顯然這類人學(xué)ARM的話還是做軟件好,可以基于LINUX;WINCE等操作系統(tǒng)的ARM9更能符合這類人的要求,當(dāng)然也有很多計(jì)算機(jī)專業(yè)的人從事ARM7系統(tǒng)的應(yīng)用軟件編寫的。但是搞底層的就很少了。
二是電子類專業(yè)的
這類人的硬件基礎(chǔ)了相對(duì)較好,相反操作系統(tǒng),數(shù)據(jù)庫(kù)等軟件知識(shí)則差強(qiáng)人意。因此人多電子專業(yè)的人員都熟悉單片機(jī),用單片編寫點(diǎn)小程序還不在話下,但要用ARM做較大型的軟件則有點(diǎn)力不從心。
尤其是LINUX;WINCE這種操作系統(tǒng)不是三兩個(gè)月能輕松搞定的。建議這類人員如無(wú)特別需要還是從ARM7和小型操作系統(tǒng)學(xué)起。夠用就好,不要盲目追求高端。有一點(diǎn)要注意并不是從事ARM9的就比ARM7工資高,反而ARM7的就業(yè)機(jī)會(huì)比ARM9多,這很好理解,好比金字塔,越往頂肯越小。
三是軟硬件基礎(chǔ)都不太好的
這類人員有確實(shí)需要的,也有趕時(shí)髦的,如無(wú)大的學(xué)習(xí)決心還是參加培訓(xùn)的好。當(dāng)然也可曲線救國(guó),搞懂單片機(jī)后,ARM7就不難了。
最后說(shuō)一點(diǎn)關(guān)于開(kāi)發(fā)板的,初學(xué)者買個(gè)開(kāi)發(fā)板確實(shí)很有必要,但也要選擇合適的,初學(xué)者合適的就是,資料齊全,有配套教程和學(xué)習(xí)指導(dǎo),再加上較及時(shí)的技術(shù)支持。目前能做到的很少,開(kāi)發(fā)板這東西不是說(shuō)哪家公司有名氣,售后就好,很多大公司一般不理個(gè)人買家的問(wèn)題的,我感覺(jué)多半是運(yùn)氣,運(yùn)氣好了也許能碰到一家售后好的
?
嵌入式學(xué)習(xí)步驟
嵌入式門檻雖然較高,但也跟其他事物一樣,并不是牢不可破。只要我們用心去對(duì)待,冬雪終將化去,春風(fēng)定會(huì)吹來(lái)。
具體步驟如下:
1、《C語(yǔ)言》第二版 譚浩強(qiáng) ; 《C程序設(shè)計(jì)語(yǔ)言》第二版 徐寶文譯 機(jī)械工業(yè)出版社
你能區(qū)分開(kāi)指針數(shù)組和數(shù)組指針嗎?你知道函數(shù)指針嗎?
你能區(qū)分開(kāi)定義一個(gè)變量時(shí)系統(tǒng)給它分配的空間與用malloc()函數(shù)給一個(gè)變量分配的空間有什么不一樣嗎?
2、《數(shù)據(jù)結(jié)構(gòu)》C語(yǔ)言版 黃國(guó)愉、葉乃青編 清華大學(xué)出版社
你能合上書(shū)本,用C語(yǔ)言實(shí)現(xiàn)書(shū)中的單鏈表、雙鏈表數(shù)據(jù)結(jié)構(gòu)嗎?
3、《實(shí)用C++程序設(shè)計(jì)》第二板 中國(guó)電力出版社 Steve_Oualline著
此階段主要是學(xué)習(xí)其面向?qū)ο蟮木幊趟枷?#xff0c;加深對(duì)C語(yǔ)言和數(shù)據(jù)結(jié)構(gòu)的理解。
4、學(xué)習(xí)單片機(jī),最好能找個(gè)前輩帶一帶。
你能用51單片機(jī)做出一樣實(shí)際的東西嗎?即使它再簡(jiǎn)單!
要注意加深對(duì)中斷的理解。
5、學(xué)習(xí)ARM單片機(jī)。
(1)、細(xì)讀《ARM微控制器基礎(chǔ)與實(shí)戰(zhàn)》周立工編寫(注:即使你不用書(shū)中的開(kāi)發(fā)板)
(2)、細(xì)讀相關(guān)芯片的原版英文文檔。如:arm920TE.pdf S3C2410_1.2.pdf
6、學(xué)習(xí)uCOS!!操作系統(tǒng)。
(1)、細(xì)讀《嵌入式實(shí)時(shí)操作系統(tǒng)uC/OS-!!》第二版 召貝貝譯
你能把uCOS!!移植到自己的平臺(tái)上嗎?
(2)、能編寫在uCOS!!操作系統(tǒng)環(huán)境下運(yùn)行的針對(duì)具體硬件的驅(qū)動(dòng)程序
7、熟悉Linux環(huán)境,學(xué)習(xí)Linux環(huán)境編程,學(xué)習(xí)交叉編程
(1)、細(xì)讀《linux命令大全.pdf》
(2)、細(xì)讀《GNU Make 使用手冊(cè)(中譯版).pdf》
(3)、學(xué)習(xí)創(chuàng)建交叉編程環(huán)境.
8、學(xué)習(xí)Linux操作系統(tǒng)。
(1)、《UNIX環(huán)境高級(jí)編程》
(2)、細(xì)讀“joyfire 筆記”,可在qianrushi網(wǎng)站的好書(shū)下載欄目獲取
(3)、細(xì)讀《linux內(nèi)核完全注釋》
(4)、細(xì)讀《understanding the linux kernel 2》
(5)、利用源代碼閱讀利器工具"Source Insight"進(jìn)行真正的linux內(nèi)核原碼刨析
(6)、最后進(jìn)行內(nèi)核移植,并能編寫在linux操作系統(tǒng)環(huán)境下運(yùn)行的針對(duì)具體硬件的驅(qū)動(dòng)程序
9、學(xué)習(xí)Linux設(shè)備驅(qū)動(dòng)編寫??蓞⒖肌?#xff2c;inux設(shè)備驅(qū)動(dòng)程序》
10、復(fù)習(xí)C++,學(xué)習(xí)用QT進(jìn)行圖形界面編程
(1)、細(xì)讀《QT編程寶典》
(2)、學(xué)會(huì)通過(guò)查看QT電子文檔進(jìn)行QT GUI實(shí)地編程
(3)、學(xué)習(xí)交叉編程.(其實(shí)就是把命令qmake變?yōu)閠make)
11、當(dāng)然,你也可學(xué)習(xí)一下PCB的制作和設(shè)計(jì)一個(gè)自己的CPU(即軟殼)
在嵌入式軟件方面最重要的課程包括:
(1)? 嵌入式微處理器結(jié)構(gòu)與應(yīng)用:
這是一門嵌入式硬件基礎(chǔ)課程,我們說(shuō)過(guò),嵌入式是軟硬件結(jié)合的技術(shù),搞嵌入式軟件的人應(yīng)對(duì)ARM處理器工作原理和接口技術(shù)有充分了解,包括ARM的匯編指令系統(tǒng)。若不了解處理器原理,怎么能控制硬件工作,怎么能寫出節(jié)省內(nèi)存又運(yùn)行高速的最優(yōu)代碼(嵌入式軟件設(shè)計(jì)特別講究時(shí)空效率),怎么能寫出驅(qū)動(dòng)程序(驅(qū)動(dòng)程序都是與硬件打交道的)?很多公司招聘嵌入式軟件人員時(shí)都要求熟悉ARM處理器,將來(lái)若同學(xué)到公司中從事嵌入式軟件開(kāi)發(fā),公司都會(huì)給你一本該設(shè)備的硬件規(guī)格說(shuō)明書(shū) (xxx Specification),你必須能看懂其中的內(nèi)存分布和端口使用等最基本的說(shuō)明(就像x86匯編一樣),否則怎么設(shè)計(jì)軟件。有些同學(xué)覺(jué)得嵌入式處理 器課程較枯燥,這主要是硬件課程都較抽象的原因。還有同學(xué)對(duì)ARM匯編不感興趣,以為嵌入式開(kāi)發(fā)用C語(yǔ)言就足夠了。其實(shí)不應(yīng)僅是將匯編語(yǔ)言當(dāng)成一個(gè)程序設(shè)計(jì)語(yǔ)言,學(xué)匯編主要是為了掌握處理器工作原理的。一個(gè)不熟悉匯編語(yǔ)言的人,怎么能在該處理器寫出最優(yōu)的C語(yǔ)言代碼。在嵌入式開(kāi)發(fā)的一些關(guān)鍵部分,有時(shí)還必須寫匯編,如Bootloader等(可能還包括BSP)。特別是在對(duì)速度有極高要求的場(chǎng)合(如DSP處理器的高速圖像采集和圖像解壓縮),目前還會(huì)用到匯編寫程序的,盡管用到的機(jī)會(huì)相對(duì)C要小得多。當(dāng)你在一個(gè)嵌入式公司工作時(shí),在查看描述原理的手冊(cè)時(shí),可能很多都是用匯編描述的,這是因?yàn)楹芏嘤布O(shè)計(jì)人員只會(huì)寫或者喜歡用匯編描述,此時(shí)你就必須看懂匯編程序,否則軟硬件人員可能就無(wú)法交流。很多嵌入式職位招聘時(shí)都要求熟悉匯編。
[小知識(shí)] 目前嵌入式處理器常見(jiàn)的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire (冷火)等,但ARM占據(jù)了絕對(duì)主流(有資料說(shuō)手機(jī)中幾乎90%都是ARM處理器)。ARM是一個(gè)只賣知識(shí)產(chǎn)權(quán)的公司,目前獲得購(gòu)買了ARM CPU核授權(quán)許可的大公司很多,包括Intel、Samsung、Amstel、Motorola、Philip等,他們都在ARM CPU核的基礎(chǔ)上進(jìn)行了一些外圍擴(kuò)展,形成自己的處理器(如Samsung S3C2410,Motorola i.MXL9328等處理器都是采用ARM 9內(nèi)核,指令一級(jí)是相同的)。而眾多中小公司又購(gòu)買了這些處理器,設(shè)計(jì)了各種各樣的開(kāi)發(fā)板,如華恒等國(guó)內(nèi)很多著名嵌入式公司都生產(chǎn)基于SamsungS3C2410的開(kāi)發(fā)板,供最終用戶使用或供教學(xué)實(shí)驗(yàn)。在ARM這個(gè)食物鏈上,ARM公司是大魚(yú),Intel、Samsung等公司是小魚(yú),而華恒等則是蝦米,最終用戶(我們這些要采購(gòu)嵌入式開(kāi)發(fā)板的)則是喂蝦米的。Intel早期生產(chǎn)的是低端ARM(Strong ARM,相當(dāng)于ARM 7),現(xiàn)在轉(zhuǎn)向主要生產(chǎn)高端ARM(即Intel Xscale處理器,屬于ARMv5家族,主要用在高端PDA上,如HP和DELL生產(chǎn)的PDA都采用Intel Xscale,價(jià)格較高)。目前應(yīng)用最多的是ARM 7和ARM 9兩類處理器。 ARM 7較便宜,可跑uclinux(是一個(gè)不支持高級(jí)內(nèi)存管理功能的嵌入式Linux系統(tǒng)統(tǒng))、Vxworks、uc/os II等實(shí)時(shí)操作系統(tǒng),但因處理器不帶內(nèi)存管理單元MMU(無(wú)內(nèi)存分頁(yè)和地址映射機(jī)制,所以不能使用虛擬內(nèi)存),所以不能跑Windows CE,另外通用Linux中的某些內(nèi)存管理功能也不能用在ARM 7上。ARM 9大都是一個(gè)帶MMU功能的高端處理器,可跑WinCE或通用Linux的大多數(shù)功能。ARM7和ARM9的區(qū)別是在與體系結(jié)構(gòu)上,前者是馮·諾伊曼結(jié) 構(gòu),后者是哈佛結(jié)構(gòu)——指令和數(shù)據(jù)總線是分開(kāi)的。以上是我的一點(diǎn)了解,可能有不對(duì)的地方。我們學(xué)院有十幾套ARM 7開(kāi)發(fā)系統(tǒng)(采用Samsung S3C44b0x開(kāi)發(fā)板,主要用于嵌入式處理器結(jié)構(gòu)、實(shí)時(shí)操作系統(tǒng)等課程實(shí)驗(yàn)用),ARM 9的系統(tǒng)好象也已經(jīng)到了(采用的芯片我不知道也沒(méi)去問(wèn)),還有以前的十幾套MPC860開(kāi)發(fā)板(聽(tīng)說(shuō)價(jià)格都很貴,很容易損壞),同學(xué)應(yīng)愛(ài)護(hù)使用和珍惜這樣 的實(shí)驗(yàn)機(jī)會(huì)。
(2) 嵌入式操作系統(tǒng)類課程
除了WinCE的實(shí)時(shí)性稍差外,大多數(shù)嵌入式操作系統(tǒng)的實(shí)時(shí)性都很強(qiáng),所以也可稱為實(shí)時(shí)操作系統(tǒng)Real Time Operating System.從事嵌入式的人至少須掌握一個(gè)嵌入式操作系統(tǒng),這在嵌入式的所有技術(shù)中是最為關(guān)鍵的了。目前最重要的RTOS主要包括:
第一類、傳統(tǒng)的經(jīng)典RTOS:最主要的便是Vxworks操作系統(tǒng),以及其Tornado開(kāi)發(fā)平臺(tái)。Vxworks因出現(xiàn)稍早,實(shí)時(shí)性很強(qiáng)(據(jù)說(shuō)可在1ms內(nèi)響應(yīng)外部事件請(qǐng)求),并且內(nèi)核可極微(據(jù)說(shuō)最小可8K),可靠性較高等,所以在北美,Vxworks占據(jù)了嵌入式系統(tǒng)的多半 疆山。特別是在通信設(shè)備等實(shí)時(shí)性要求較高的系統(tǒng)中,幾乎非Vxworks莫屬。Vxworks的很多概念和技術(shù)都和Linux很類似,主要是C語(yǔ)言開(kāi)發(fā)。像Bell- alcatel、Lucent、華為等通信企業(yè)在開(kāi)發(fā)產(chǎn)品時(shí),Vxworks用得很多。但Vxworks因價(jià)格很高,所以一些小公司或小產(chǎn)品中往往用不 起。目前很多公司都在往嵌入式Linux轉(zhuǎn)(聽(tīng)說(shuō)華為目前正在這樣轉(zhuǎn))。但無(wú)論如何,Vxworks在一段長(zhǎng)時(shí)間內(nèi)仍是不可動(dòng)搖的。與Vxworks類似 的稍有名的實(shí)時(shí)操作系統(tǒng)還有pSOS、QNX、Nucleus等RTOS。
第二類、嵌入式Linux操作系統(tǒng):Linux的前途除作為服務(wù)器操作系統(tǒng)外,最成功的便是在嵌入式領(lǐng)域的應(yīng)用,原因當(dāng)然是免費(fèi)、開(kāi)源、支持軟件多、呼擁者眾,這樣嵌入式產(chǎn)品成本會(huì)低。Linux本身不是一個(gè)為嵌入式設(shè)計(jì)的操作系統(tǒng),不是微內(nèi)核的,并且實(shí)時(shí)性不強(qiáng)。
目前應(yīng)用在嵌入式領(lǐng)域的Linux系統(tǒng)主要有兩種:
一種是專為嵌入式設(shè)計(jì)的已被裁減過(guò)的Linux系統(tǒng),最常用的是uClinux(不帶MMU功能),目前占較大應(yīng)用份額,可在ARM7上跑;另一種是跑在 ARM 9上的,一般是將Linux2.4.18內(nèi)核移植在其上,可使用更多的Linux功能(當(dāng)然uClinux更可跑在ARM 9上)。很多人預(yù)測(cè),嵌入式Linux預(yù)計(jì)將占嵌入式操作系統(tǒng)的50%以上份額,非常重要。缺點(diǎn)是熟悉Linux的人太少,開(kāi)發(fā)難度稍大。另外,目前我們 能發(fā)現(xiàn)很多教材和很多大學(xué)都以u(píng)cOS/II為教學(xué)用實(shí)時(shí)操作系統(tǒng),這主要是由于ucOS/II較簡(jiǎn)單,且開(kāi)源,非常適合入門者學(xué)習(xí)實(shí)時(shí)操作系統(tǒng)原理,但 由于ucOS/II功能有限,實(shí)用用得較少。況且熟悉了Linux開(kāi)發(fā),不僅在嵌入式領(lǐng)域有用,對(duì)開(kāi)發(fā)Linux應(yīng)用軟件,對(duì)加深操作系統(tǒng)的認(rèn)識(shí)也有幫 助,可謂一舉多得。據(jù)我所知,目前Intel、Philip都在大搞ARM+LINUX的嵌入式開(kāi)發(fā),Fujitum則是在自己的處理器上大搞Linux 開(kāi)發(fā)。目前在嵌入式Linux領(lǐng)域,以下幾個(gè)方面的人特別難找,一是能將Linux移植到某個(gè)新型號(hào)的開(kāi)發(fā)版上;二是能寫Linux驅(qū)動(dòng)程序的人;三是熟悉Linux內(nèi)核裁減和優(yōu)化的人。不過(guò)LINUX有一個(gè)硬傷,就是沒(méi)有WINDOWS那樣的友好方便美觀
的交互界面,不然微軟帝國(guó)早就守不住了。
第三類、 Windows CE嵌入式操作系統(tǒng):Microsoft也看準(zhǔn)了嵌入式的巨大市場(chǎng),MS永遠(yuǎn)是最厲害的,WinCE出來(lái)只有幾年時(shí)間,但目前已占據(jù)了很大市場(chǎng)份額,特別是在PDA、手機(jī)、顯示儀表等界面要求較高或者要求快速開(kāi)發(fā)的場(chǎng)合,WinCE目前已很流行(據(jù)說(shuō)有一家賣工控機(jī)的公司板子賣得太好,以至來(lái)不及為客戶裁減WinCE)。WinCE目前主要為4.2版(.NET),開(kāi)發(fā)平臺(tái)主要為WinCE Platform Builder,有時(shí)也用EVC環(huán)境開(kāi)發(fā)一些較上層的應(yīng)用,由于WinCE開(kāi)發(fā)都是大家熟悉的VC++環(huán)境,所以我院學(xué)過(guò)Windows程序設(shè)計(jì)課程的同 學(xué)都不會(huì)有多大難度,這也是WinCE容易被人們接受的原因,開(kāi)發(fā)環(huán)境方便快速,微軟的強(qiáng)大技術(shù)支持,WinCE開(kāi)發(fā)難度遠(yuǎn)低于嵌入式Linux。對(duì)于急于完成,不想拿嵌入式Linux冒險(xiǎn)的開(kāi)發(fā)場(chǎng)合,WinCE是最合適了(找嵌入式Linux的人可沒(méi)那么好找的),畢竟公司不能像學(xué)生學(xué)習(xí)那樣試試看,保證開(kāi)發(fā)成功更重要。根據(jù)不同的側(cè)重點(diǎn),WinCE還有兩個(gè)特殊版本,一個(gè)是MS PocketPC操作系統(tǒng)專用于PDA上(掌上電腦),另一個(gè)是MS SmartPhone操作系統(tǒng)用于智能手機(jī)上(帶PDA功能的手機(jī)),兩者也都屬于WinCE平臺(tái)。在PDA和手機(jī)市場(chǎng)上,除WinCE外,著名的PDA 嵌入式操作系統(tǒng)還有Palm OS(因出現(xiàn)很早,很有名)、Symbian等,但在WinCE的強(qiáng)勁沖擊下,Palm和Symbian來(lái)日還能有多長(zhǎng)?同學(xué)學(xué)過(guò)VC++后再學(xué) WinCE,非常方便自然,通過(guò)學(xué)習(xí)WinCE同樣也可了解嵌入式軟件的一般開(kāi)發(fā)過(guò)程,對(duì)Linux有懼怕心理的同學(xué)也很合適。很顯然,嵌入式Linux 永遠(yuǎn)不可能替代WinCE,而且將來(lái)誰(shuí)占份額大還很難講,畢竟很多人更愿意接受MS的平臺(tái),就像各國(guó)政府都在大力推LINUX已好長(zhǎng)時(shí)間,但你能看到幾個(gè) 在PC機(jī)上真正使用LINUX的用戶?據(jù)我觀察,目前在嵌入式平臺(tái)上,LINUX是叫得最響,但還是WinCE實(shí)際用得更多.嵌入式LINUX可能更多地是一些有長(zhǎng)遠(yuǎn)產(chǎn)品計(jì)劃的公司,為降低成本而進(jìn)行長(zhǎng)遠(yuǎn)考慮.WinCE和多媒體(如MPEG技術(shù))是微軟亞洲工程院目前做得較多的項(xiàng)目領(lǐng)域之 一,現(xiàn)在社會(huì)很需要精通WinCE的人?,F(xiàn)在有WINCE的智能手機(jī),金山詞霸、WORD、EXCEL、REGEDIT等居然都有 smartphone版的,PC上的MP3、DOC等居然在download時(shí)都可被自動(dòng)轉(zhuǎn)換成smartphone格式,很爽的。完全可用 Windows CE自己開(kāi)發(fā)一些需要的程序download到自己的手機(jī)上?,F(xiàn)在市面銷售PDA智能手機(jī)火爆,MS總是財(cái)源滾滾。
總結(jié)關(guān)于嵌入式操作系統(tǒng)類課程,若你覺(jué)得自己功底較深且能鉆研下去,則可去學(xué)嵌入式Linux;若你覺(jué)得自己VC++功底較好且想短平快地學(xué)嵌入式開(kāi)發(fā),自學(xué)WINCE是非常好的選擇。
(3) 嵌入式開(kāi)發(fā)的相關(guān)領(lǐng)域
搞嵌入式若能熟悉嵌入式應(yīng)用的一些主要領(lǐng)域,這樣的人更受企業(yè)歡迎。主要的相關(guān)領(lǐng)域包括:
A、數(shù)字圖像壓縮技術(shù):這是嵌入式最重要最熱門的應(yīng)用領(lǐng)域之一,主要是應(yīng)掌握MPEG編解碼算法和技術(shù),如DVD、MP3、PDA、高精電視、機(jī)頂盒等都涉及MPEG高速解碼問(wèn)題。
B、 通信協(xié)議及編程技術(shù):這包括傳統(tǒng)的TCP/IP協(xié)議和熱門的無(wú)線通信協(xié)議。首先,大多數(shù)嵌入式設(shè)備都要連入局域網(wǎng)或Internet,所以首先應(yīng)掌握 TCP/IP協(xié)議及其編程,這是需首要掌握的基本技術(shù);其次,無(wú)線通信是目前的大趨勢(shì),所以掌握無(wú)線通信協(xié)議及編程也是是很重要的。無(wú)線通信協(xié)議包括無(wú)線 局域網(wǎng)通信協(xié)議802.11系列,Bluetooth,以及移動(dòng)通信(如GPRS、GSM、CDMA等)。
C、網(wǎng)絡(luò)與信息安全技術(shù):如加密技術(shù),數(shù)字證書(shū)CA,以及各種網(wǎng)絡(luò)安全設(shè)備,包括硬件防火墻,入侵檢測(cè)IDS,還有防毒墻,IPS等,中國(guó)在這方面還是沒(méi)有自己優(yōu)勢(shì)的,我們陳院長(zhǎng)好象正在往這方面發(fā)展.
D、 DSP技術(shù):DSP是Digital Signal Process數(shù)字信號(hào)處理的意思,DSP處理器通過(guò)硬件實(shí)現(xiàn)數(shù)字信號(hào)處理算法,如高速數(shù)據(jù)采集、壓縮、解壓縮、通信等。數(shù)字信號(hào)處理是電子、通信等硬件 專業(yè)的課程,對(duì)于搞軟件的人若能了解一下最好。目前DSP人才較缺。如果有信號(hào)與系統(tǒng)、數(shù)字信號(hào)處理等課程基礎(chǔ),對(duì)于學(xué)習(xí)MPEG編解碼原理會(huì)有很大幫助。
(4)嵌入式開(kāi)發(fā)的相關(guān)硬件基礎(chǔ)
對(duì)于軟件工程專業(yè)的學(xué)生,從事嵌入式軟件開(kāi)發(fā),像數(shù)字電路、計(jì)算機(jī)組成原理、嵌入式微處理器結(jié)構(gòu)等硬件課程是較重要的。另外,匯編語(yǔ)言、C/C++ 數(shù)據(jù)結(jié)構(gòu)算法、特別是操作系統(tǒng)等軟件基礎(chǔ)課也是十分重要的。我們的主要目地是能看懂硬件工作原理,但重點(diǎn)應(yīng)是在嵌入式軟件,特別操作系統(tǒng)級(jí)軟件,那將是我們的優(yōu)勢(shì)。我們的研究生里有些是學(xué)電子、通信類專業(yè)過(guò)來(lái)的,有較好的模擬電路和單片機(jī)基礎(chǔ),學(xué)嵌入式非常合適。嵌入式本身就是從單片機(jī)發(fā)展過(guò)來(lái)的,只是單片機(jī)不帶OS,而現(xiàn)在很多嵌入式應(yīng)用越來(lái)越復(fù)雜,以至不得不引入嵌入式操作系統(tǒng)。另外,為追求更高速的信號(hào)處理速度,現(xiàn)在在一些速度要求較高場(chǎng)合,有不少公司是將一些DSP算法,如MPEG壓縮解壓縮算法等用硬件來(lái)實(shí)現(xiàn),這就涉及到HDL數(shù)字電路設(shè)計(jì)技術(shù)及其 FPGA/IP核實(shí)現(xiàn)技術(shù),這方面的人目前市場(chǎng)上也很缺。
學(xué)習(xí)嵌入式系統(tǒng)的10點(diǎn)建議
現(xiàn)在,國(guó)內(nèi)似乎在進(jìn)行一個(gè)全民學(xué)習(xí)嵌入式的運(yùn)動(dòng),但據(jù)了解,很多人在整個(gè)學(xué)習(xí)的過(guò)程中,由于某些技術(shù)領(lǐng)域的空白或者是技術(shù)尚未成熟,再加上個(gè)人學(xué)習(xí)方法不正確,給個(gè)人的學(xué)習(xí)造成了極大的阻礙,遇到這種情況該如何解決?根據(jù)本人有限的學(xué)習(xí)經(jīng)驗(yàn),給學(xué)習(xí)嵌入式的人以下10點(diǎn)建議:
1. 遇到問(wèn)題,首先進(jìn)入baidu google.com ( 或是其他搜索引擎)搜索一下,任何一個(gè)嵌入式工程師都不敢否認(rèn),這是學(xué)習(xí)嵌入式最好的老師!
2. 盡可能多的論壇,遇到問(wèn)題,及時(shí)發(fā)貼,情況緊急的時(shí)候,可以在不同的論壇同時(shí)發(fā)貼,這樣,并行處理你的問(wèn)題也許會(huì)解決得更快些.
3. 盡可能多的結(jié)交嵌入式高手,最好是在公司上班的嵌入式工程師,他們有一個(gè)優(yōu)勢(shì):了解市場(chǎng),了解業(yè)界的發(fā)展動(dòng)態(tài).和他們多混混,對(duì)尚未上班的學(xué)習(xí)者來(lái)說(shuō),是非常有必要的.
4. 要經(jīng)常進(jìn)入一些好的嵌入式網(wǎng)站,尤其是一些國(guó)外的網(wǎng)站,去看看嵌入式的發(fā)展動(dòng)態(tài),并且,要把這些網(wǎng)站都收集起來(lái)...
5. 如果可能,我建議大家在網(wǎng)上訂一下電子刊物,這些電子刊物是按時(shí)發(fā)到你郵箱的,那些資訊都是最新的,可以說(shuō)是很前衛(wèi)的了.....如果資金允許,建議報(bào)名參加嵌入式培訓(xùn)班,比如比較有名氣的海同嵌入式培訓(xùn)。在培訓(xùn)公司可以很快的入門提高,這樣可以更好的提高學(xué)習(xí)效率。
6. 相信自己的選擇,相信自己行業(yè)的發(fā)展前景,要對(duì)自己的選擇和自己的行業(yè)有濃厚的興趣,這一點(diǎn)做不到,你就很難學(xué)到很高深的層次!
7. 追求要執(zhí)著!剛開(kāi)始學(xué)習(xí)嵌入式系統(tǒng),肯定會(huì)遇到很多問(wèn)題,我當(dāng)時(shí)也是這樣,學(xué)了三個(gè)多月,好像一點(diǎn)進(jìn)展都沒(méi)有,我在懷疑:難道我不適合搞嵌入式?當(dāng)時(shí)我也想過(guò)放棄,但心里太不甘心了,腳都踏出了一只,我不能就這樣屈了!于是就硬上,不斷的琢磨....(現(xiàn)在,終于知道什么是嵌入式linux了,哈哈....)
8. 不要對(duì)自己要求過(guò)高,只要你比昨天進(jìn)步了一點(diǎn),你就離成功又近了一步!學(xué)習(xí)嵌入式也忌浮氣燥(其實(shí)這一點(diǎn),我最有感觸!),也就是要踏實(shí).
9. 萬(wàn)丈高樓平地起,不要忽略了低層的東西,你越是學(xué)習(xí)到高層的技術(shù),越是發(fā)覺(jué)低層的東西有用,這些大家以后會(huì)有所體會(huì)的!我大一學(xué)習(xí)51單片機(jī)的時(shí)候,感覺(jué)它沒(méi)什么用處,大二學(xué)習(xí)ARM處理器,才知道,沒(méi)有51的基礎(chǔ),可能還不知道要多花多少時(shí)間才能搞懂ARM的硬件.
10. 系統(tǒng)的選型的問(wèn)題.現(xiàn)在的開(kāi)源操作系統(tǒng)已經(jīng)很多了,并且也做得非常成熟,初學(xué)者也會(huì)為此而煩惱.目前較為流行的嵌入式操作系統(tǒng)有:linux,winCE,VxWork,uC/OS2等等....主要區(qū)別在于實(shí)時(shí)性的問(wèn)題.如果你是搞自控(像我學(xué)習(xí)的專業(yè),不過(guò)我不玩控制的....),學(xué)習(xí)實(shí)時(shí)性高一點(diǎn)的操作系統(tǒng)更有幫助,如VxWork.如果你想以后搞民用產(chǎn)品,如手機(jī),機(jī)頂盒,終端設(shè)備之類的,學(xué)習(xí)linux,winCE這些方便于多任務(wù)運(yùn)行的操作系統(tǒng)較好!建議你在學(xué)習(xí)之前先了解該系統(tǒng)的市場(chǎng)占有率,學(xué)東西得看看學(xué)完它之后到底有沒(méi)有作為啊,否則,你就一輩子只有自己玩系統(tǒng)啰...
總結(jié)
以上是生活随笔為你收集整理的ARM学习方法大杂烩,高手经验之谈,内容完全来自互联网的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ARM 嵌入式入门经验
- 下一篇: Cortex-A、Cortex-R、Co