㈠ 怎麼學習ARM和DSP
一 首先說說ARM的發展
可以用一片大好來形容,翻開各個公司的網站,招聘裡面嵌入式占據了大半工程師職位。
廣義的嵌入式無非幾種:傳統的什麼51、AVR、PIC稱做嵌入式微控制器;ARM是嵌入式微處理器;DSP;FPGA。
客觀的講,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。
DSP因為數字處理與通信領域的空前發展而火暴,小到MP3 射象頭,大到我們軍品里的控制器,應用面很廣。
FPGA的兄弟一般做ANSIC(特殊晶元設計,好象是這么翻譯的)。而ARM單純說來並不比一個單片機強多少,但是它的獨特就在於不斷下降的價格和提升的性能。這完全依靠於ARM公司的戰略,厲害!!很佩服他們的戰略眼光!!
值得注意的是:在找工作中,企業(著名的,小的不算)對單純的ARM硬體開發工程師並不比單片機重視,很少有大企業的職位里寫「從事過ARM開發優先」。寫的多的是什麼?「嵌入式LINUX」到這相信大家看出來了吧,需要的是硬體中的軟體。
二 ARM是硬體還是軟體
很難說,ARM是硬體,LINUX是軟體。ARM的硬體多半已經模塊化了,像我這樣把板子改成這樣的就算動的多的了,這同樣是ARM公司的戰略,再次佩服。
實際中的LINUX的開發工作更多,更耗時。從這方面說ARM應該算是軟體了。
在找工作中更是這樣,舉個例子,聯想里和ARM最接近的是「BIOS工程師」是軟體,MOTO里接近的是嵌入式LINUX工程師是軟體。而其他很多公司把嵌入式產品開發歸為硬體。所以,不要討論這個,好好玩轉自己的板子才是關鍵。實在不爽你就把自己叫「嵌入式開發工程師」
三 要不要買開發板 買哪家
我的答案是「在你個人的學習方法」,但是如果看家是需要看這騙筆記的水平,個人推薦還是買現成的。
1 買
買板子可以把注意力集中在軟體開發上,軟體開發(尤其是驅動)可以不必擔心自己硬體上的問題,我就是以便調試一邊寫驅動和程序,每次寫驅動前就要先確認硬體沒問題。另外,買板子更省錢和時間,我自己做的板子,原理圖PCB花了2周以上!製版又15天,回來以後焊接44B0 160個腳!那叫一個麻煩~~花了多少錢呢?2層板,製版費就300塊!當然 我把介面都外引了,還做了個20X18的LCD背板,板子比較大。總體下來 元件+LCD屏+PCB=11XX塊!夠2410的了。
再有就是買的資料相對來說比較全,但是不要指望有技術支持!都是騙人的,賣你之後就不會理你。
2 做
自己做可以更了解底層硬體,可以按照自己的要求加東西,比如我就加了GPS模塊、 GPRS模塊 、SD卡模塊,擴了個IIC的35個鍵子的鍵盤、把LCD介面按照買的LCD改裝了,可以用FPC線直接連接。做的很爽的。玩一把嗎。
當然,你可以有策略的做,比如像我一樣,把RAM和ROM,網路都保持和某現成的板子一樣,這樣他們的資料你就可以拿過來直接用,給自己留個退路。其他的如SD了 什麼的自己做。都達到了~~就是費錢,費時間。
再有就是給做的朋友幾點建議:盡量拿到現成的板子,盡量多搜集其他板子的全套資料,一定要拿到一張沒問題的原理圖。
網上流傳的原理圖多數是龔俊03年畫的,再這里對龔俊表達一下我的敬意!!牛人!
但是那個圖有個小BUG,我指的是03版的,後來的沒這問題了。8019那地址線和地址有問題。還有人仿照他的PDF圖畫的SCH,更是漏洞百出!譴責!順便譴責把龔俊板子偷賣的人。
3 買哪家
個人感覺分3類吧
1)首先是ZLG的,資料非常的全,感覺他是真正想教你怎麼開發ARM,而不是像有的公司自己技術都沒做好就做個板子出來賣錢。但是最大的不利就是價格太貴!而且主要是PHILIP的,貨源比較麻煩~~可能有人說21XX系列的不貴啊,那是匯流排不外擴的,只能跑UCOS,不能跑UCLINUX。但是說是話,21XX系列才是ARM7的價格性能結合點。ARM7最適合做工業控制,ARM普及,銷量都是怎麼來的?都是ARM7來的,而44B0是典型的商業片子。但是,這里如果你看中的是為工作做准備,還是選能跑UCLINUX的吧。
但是仍然作為第一個推薦,因為菜鳥時期,合適的資料太重要了!!在這里被ZLG的務實精神感動!你看人家那代碼寫的。
2)感覺立宇泰的44B0不錯
硬體沒別的,就是資料比較全的說,不像有些家,原理圖直接拿人家的,還錯的~~
3)找個最便宜的
好象最便宜的有賣350的吧?也是沒別的,就是即省了錢 還省時間搜集資料,至於資料全不全,別計較了~~硬體肯定好使就行吧。
四 要不要有51 AVR等單片機基礎
有更好,但沒有也無所謂。
兩個月以前,我只是看別人做,耳濡目染~~,本科學過單片機,從來沒做過。我們這的技術主幹做AVR和51,我就跟他們調過C語言程序。你看出來了?我是個不折不扣的菜鳥吧?
但是做這個之前我特意找了ZLG的兩本書,看了裡面的例子和原理圖,這很重要。常式里有匯編有C,都看懂了就OK,不用自己現寫
五 開發都需要學習哪些軟體
總結起來最主要的有以下幾個吧
1 ADS調試用
確切的說是ADS+AXD。ADS里包含AXD。原來都用SDT後來ARM公司停止對SDT支持了,改支持ADS了,還是用ADS吧。
有的人的程序發布的仍然是SDT版本的,但基本都可以找到相應ADS的,新人在這里不要發蒙。ADS是編譯器,AXD是調試器。便宜成AXF以後再在ARM的RAM里調試。
2 PLASHPGM
FLASH燒寫的軟體。AXD在RAM里調試,掉電就沒有了,方便程序修改。調試好的程序再下到FLASH里,上電直接運行。
同類的軟體還有很多,什麼FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人還問FLASH不支持BIN格式文件的問題就要看我寫的PLASHPGM使用了。
3 BANYANT調試代理(不知道名對不,起這么個難記的,我一般都叫它「半羊」因為知道它那幾天剛吃了烤羊)
調試代理就是用它幫你使用更簡單的JTAG(便宜啊)來實現原本1K才賣的JTAG模擬器的大部分功能。JTAG調試原理看我另一篇筆記。簡單的就可以把他理解為你自己做的JTAG的驅動就行了。
調試代理還有很多種,什麼H-JTAG了、ARM7了(不知道具體叫什麼,就記得可執行文件叫ARM7.EXE)都是,BANYANT比較好。
需要注意的是,沒種調試代理安裝方法雖然都簡單 但都不一樣,需要看說明。而且AXD調試之前都要運行。省錢了,就別怕麻煩了。
4 ARM-ELF-TOOLS工具鏈
裡面是UCLINUX開發用的工具比如ARM-ELF-GCC只類的。工具鏈就是把很多工具打包在一起發布的方便你開發的東西。具體安裝方法看我另一篇筆記。
另外如果你開發LINUX就要用ARM-LINUX-TOOLS,不一樣,不通用。
5 U-BOOT
大名鼎鼎的BOOTLOADER生成工具,同類的好象還有VIVI(名字很曖昧~~)
生成的BOOTLOADER燒到FLASH里,然後就可以用BOOTLOADER下載 燒寫其他了
有了BOOTLOADER才能下UCLINUX。BOOTLOADER就像電腦上的BIOS。當然UCOS的不用這個,用什麼我不知道:)
最新版本是1.1.4 具體使用方法看我另一篇筆記吧。
6 UCLINUX包
UCLINUX的源碼包,不用多說了吧?建議大家用現成的先體會一下,然後再自己編譯,裁剪。因為單獨UCLINUX的編輯技術上比較簡單,但涉及的方面還是比較廣的。
7 VMWARE
老牌的虛擬機軟體,在一個機器上虛擬出一個機器裝LINUX(PC上用的),省得你來回開關機了。記得裝VMWARE-TOOLS,安裝方法在我另一篇筆記里。
六 有哪些書推薦
主要推薦ZLG的三本書,有這3本再加網路就不用別的書了,其中主要推薦前2本,3是介紹體系結構的,也不錯
1 ARM嵌入式LINUX系統構建與驅動開發,北航版
驅動寫的很詳細,前期開發介紹也很好
2 ARM 嵌入式系統實驗教程(二),北航版
有ZLG2200的原理圖,實驗程序和注釋,了解人家是怎麼開發的。
3 ARM嵌入式系統基礎教程
最重要的是體系結構,匯編部分介紹,看看吧,增加理論素質。
4 44B0數據手冊
寫在這里是強調它的重要。
不推薦ZLG早期出的紅色皮的ARM什麼體系結構~只類的
寫的太多,看煩了。
其他的書沒了幾本,沒看見好的,大家有看過的推薦吧。
七 選UCOS?UCLINUX?LINUX?VXWORKS?還是當單片機用
1 搞開發,工程設計,用UCOS,小巧,多進程,簡單,體現了ARM7的精髓。
2 LINUX 正根的嵌入式系統,LINUX消費與通信領域用的比較多,但缺點是必須ARM9才能跑,ARM9的板子自己做就不行了,6層板太貴。買開發板1K達底吧。但是還是推薦選ARM9+LINUX
3 UCLINUX 算投機嵌入式系統:)ARM7上可以跑,由有LINUX近親,學好好可以比較方便的轉向LINUX,像我一樣的窮鬼用吧,呵呵
4 VXWORKS
學好後可以找到高薪工作,但工作機會本身並不比LINUX好找。
5 當單片機用
不推薦,雖然我景仰的ZLG一直號召這么干。因為對於學習來說多進程的系統設計才是ARM7的玩頭,至少你也要整個UCOS啊:)
有朋友問我先學這個當基礎不行嗎?那當然可以~~但我當時就用了1周搞定,就是我先的ADS在RAM中調試的筆記。後來我清空FLASH用的小段程序還是當時寫的LED閃爍程序呢。另外1周里其中還因為自己過於菜,沒把OM設置好導致晶陣不陣
哈哈。這個是必須做的,但一帶而過。目標放的遠一點。
八 學習要用多長時間
我從菜鳥到現在兩個多月,中間被打擾數次。仍然搞定了PCB設計與製版,RAM調試,FLASH下載,UBOOT移植和下載UCLINUX(沒剪裁,用現成的),LCD驅動。
再次坦誠的說:我確實比較菜,說這些不是讓大家羨慕,只是告訴你們「你們應該比這個更好」
我相信良好的態度+合適的方法+及時的總結=成績
九 ARM都玩什麼
就幾點
1 硬體設計
2 系統移植
3 驅動開發
4 應用開發
沒了。其中推薦把注意力放在後兩個上,3有難度,4比較靈活,最重要的是都是找工作的砝碼。
十 我用的什麼板子
很多人問我這個問題,我特意寫過一個的。再說一次吧。
我是自己做的,RAM、ROM、8019等比較麻煩而當時的自己不理解的都按照龔俊的做的。保持其他不便的情況下做了如下改動。
1 加了串口通信的GPS模塊、 GPRS模塊
一個UART0,一個UART1,當與要用超級終端時用跳線切換。
2 SD卡,和7843觸摸屏
同時掛在SPI匯流排上,因為SPI只能掛一個設備,同時還做了I/O模擬的准備,把兩個設備又通過跳線掛在4個IO上。
3 擴了個IIC的35個鍵子的鍵盤
用的ZLG的7290,不佔用CPU,最大支持64個鍵子,只上了35個,其他留介面。
4 把LCD介面按照買的LCD改裝了,可以用FPC線直接連接。
所以改動雖然多,但真正很移植了,初期調試有關的並沒動,就是為了現在不那麼菜的時候做准備:)
十一 開發流程
這里是我的開發流程
1 設計原理圖(含WIGGLER的JTAG訪真器)
2 設計PCB(含WIGGLER的JTAG訪真器)
3 製版
4 焊接電壓,確定電壓沒問題
5 焊接44B0+JTAG電路+WIGGLER的JTAG訪真器+周邊電路,用BANYANT+模擬器連接,BANYANT提示錯誤,但可以顯示44B0編號,好象是0X0F0F0F0F只類的,說明44B0沒問題
6 焊接晶體+RAM+ROM+周邊電路,用BANYANT+模擬器連接,可以顯示正確的44B0了
7 用BANYANT+模擬器連接,開AXD,在命令行窗口操作RAM,看可不可以修改,可以的話(用內存窗口看RAM地址)RAM就沒問題
可以用這個命令「setmem 0xc000000,0xffffffff,32」
我的RAM掛在BANK6上 所以地址是0XC000000,你要是改了就也得改。
8 用我寫的《自己寫了個C工程模板又寫了個使用說明 》里的方法調試程序吧,寫個簡單的,我當時寫個LED閃爍的。看好使不。
9 把程序按照《FLASH燒寫總結 》里的燒到FLASH里,測試一下
10 按照《UBOOT 移植操作》移植UBOOT
11 按照《UCLINUX下載簡單說明》下個UCLINUX
12 看看驅動開發的方法,自己寫個驅動看看
13 還有很多事東西著你玩 呵呵
十二 關於JTAG訪真器
JTAG訪真器現在用的多是簡板的,一個244那種,用的沒什麼不好。
按照並口定義不同分幾種,建議選WIFFLER定義的,因為支持的軟體多。這個網上多的是,不多說了。
值得提的是有的JTAG訪真器原理圖上有跳線用來使能復位信號,這個一般不跳上。就是不用復位信號,因為JTAG協議里本身也可以控制44B0復位。
當然,板子上的復位信號跳線也不用跳。
十三 哪個公司的ARM
這個是問題比較簡單。
1 ARM7主要就幾個公司的
三星,PHILIP,ATMEL的
ATMEL的有比較便宜的AT91SAM7S32 和AT91SAM7S64 專為8位應用產品量身定做,價格很便宜好象《3刀吧。和PHILIP的21XX差不多,資料太少,項目中選還不錯。
其他兩家上面說了的不多說了吧
2 ARM9
這個玩2410和2440的多吧,現在2440還比較火啊 可以考慮買個了
但是2410就比較便宜了,作為學習來說反到和不錯,推薦整一個:)
其實ARM9用的最多的領域應該是消費電子,比如手機PDA,而這上面用的多的應該是INTEL的和TI的吧。
但是INTEL的TI的入門材料少,價格高,自己看情況定吧。
㈡ 常見的操作系統有哪些
幾個常用的操作系統:
1、DOS操作系統
DOS是英文Disk Operation System的簡稱,中文為磁碟操作系統,自1981年推出1.0版發展至今已升級到6.22版,DOS的界面用字元命令方式操作,只能運行單個任務。
2、Windows 9x
Windows 9x是一個窗口式圖形界面的多任務操作系統,彌補了DOS的種種不足。此後推出的Windows ME(2000年)、Windows XP(2001年)與Windows 9x相比,著重增加和增強了網路互聯、數字媒體、娛樂組件、硬體即插即用、系統還原等方面的功能。
3、Windows 98
是面向大眾用戶的版本,由於是從DOS發展過來的,在安裝和運行了大型軟體以後,系統會變得不太穩定,經常會死機。
4、windows xp
實在windows nt的技術上發展過來的,由於最初windows nt是為伺服器設計的因此穩定性要比windows 98系列操作系統好很多。
5、Windows NT/ Windows 2000
Windows NT是一個網路型操作系統,它在應用、管理、性能、內聯網/互聯網服務、通訊及網路集成服務等方面擁有多項其他操作系統無可比擬的優勢。因此,它常用於要求嚴格的商用台式機、工作站和網路伺服器。
Windows 2000是在Windows NT內核基礎上構建起來的,同時吸收了Windows 9x的優點,因此,Windows 2000更易於使用和管理,可靠性更強,執行更迅速,更穩定和更安全,網路功能更齊全,娛樂效果更佳。
windows伺服器最常用的是 windows 2003和windows 2008兩種,這兩款都被很多大小型企業所用。
6、UNIX
UNIX操作系統設計是從小型機開始的,從一開始就是一種多用戶、多任務的通用操作系統,它為用戶提供了一個交互、靈活的操作界面,支持用戶之間共享數據,並提供眾多的集成的工具以提高用戶的工作效率,同時能夠移植到不同的硬體平台。
UNIX操作系統的可靠性和穩定性是其他系統所無法比擬的,是公認的最好的Internet伺服器操作系統。從某種意義上講,整個網際網路的主幹幾乎都是建立在運行UNIX的眾多機器和網路設備之上的。
7、Linux
准確的說,Linux應該是符合UNIX規范的一個操作系統,Linix是基於源代碼的方式進行開發的。Linux是一套免費使用和自由傳播的類似UNIX的操作系統,這個系統是由全世界各地的成千上萬的程序員設計和實現的。
用戶不用支付任何費用就可以獲得它和它的源代碼,並且可以根據自己的需要對它進行必要的修改,無償對它使用,無約束地繼續傳播。
Linux以它的高效性和靈活性著稱。它能夠在PC計算機上實現全部的UNIX特性,具有多任務、多用戶的能力。而且還包括了文本編輯器、高級語言編譯器等應用軟體。
它還包括帶有多個窗口管理器的X—Windows圖形用戶界面,如同我們使用Windows NT一樣,允許我們使用窗口、圖標和菜單對系統進行操作。它是一個功能強大、性能出眾、穩定可靠的操作系統。
8、其他操作系統
如:Mac OS是蘋果電腦Macintosh機器的專用操作系統,從本質上將,Mac OS 也是UNIX的一個變體。
㈢ 嵌入式系統自學
你好,你的專業學習嵌入式的課程應該是非常對口的,建議你學習期間條件允許的話還是系統的學習一下,從應用層,系統層到底層驅動,因為你學東西的最終目的是為了就業嘛,這樣的話學習階段不要把方向定的那明確,否則對就業不利。關於學習的資料,你可以去華清遠見的網站上去看一下,好像有很多免費的技術資料和視頻。
㈣ 學習嵌入式開發要學習哪些知識
嵌入式系統是計算機軟體和硬體的綜合體,你可以先下載全套嵌入式視頻課自學,看是否感興趣。
①C,Java核心編程:c語言核心編程,Java核心編程;
②Linux核心操作與演算法:Linux系統使用,Linux-c編程核心技術,精品數據結構,Linux-c編程精髓;
③核心操作與演算法:Linux系統編程,Linux網路編程核心技術,UI編程,Java核心編程,安卓核心技術;
④ARM+Linux底層開發:數字電路,ARM編程核心,Linux系統開發,嵌入式Linux驅動開發;
⑤大型項目實踐:每期安排各類型真實的項目,詳細可以點我下載資料。
ESE(嵌入式軟體工程師);
ADE(嵌入式應用開發工程師);
FWE(嵌入式底層開發工程師);
FEC(嵌入式固件開發工程師)
你可以考察對比一下南京課工場、北大青鳥、中博軟體學院等開設有嵌入式開發專業的學校。記得下載全套嵌入式開發視頻課,祝學有所成!望採納!