① 關於linux的優勢重要性已自然的從各種渠道耳濡目染,想學習它。請朋友指點怎樣學習怎樣展開
1.抓住51開發ARM
這幾個月來我一直都爬在51的問題,自己都有一點笑自己了,用了4個月的時間,來鞏固51的原理和程序,還好我自己算是走過來了,自己笨,身邊的高才生又看不上51的原理,他們都比較「牛」,說51過時了,你問那個做什麼???我比較郁悶!過時嗎?我有一點懷疑?
他們不願意說有他們自己的理由,沒有人強求,靠自己好了。
我自己個人的觀點:51是一個基礎,而且還很重要,這是再我看了ARM之後感覺到的。它可以加速你的ARM學習速度,真得!不相信你試一試好了。
凡是要求一個速度、效率,不要做一些無用功,抓緊身邊的每一個一分鍾,人是活的,東西(知識、書)是得,想要做的事情因此就簡單了。
2.我在網上看到了一篇很不錯的ARM文章,粘貼過來,為了和像我一樣在很少有人幫助的情況下,自學ARM 的難兄難弟們。
「ARM怎麼入門」。我不是高手,仍然是菜鳥。
但是回想起自己當時的迷茫,特意寫了這篇東西,當作給和我一樣的兄弟姐妹的幫助吧。問這個問題的人多半不是已經工作的工程師,而是和我一樣是學生,所以這篇筆記就把看家當成我一樣的菜鳥,高手勿怪。
首先聲明:本人還沒有找工作,事實上處於研究生剛畢業,還沒開始找工作的空閑時間,44B0隻是興趣所在,打發時間。
所有看法完全是自己的感受,不代表任何他人。錯了的觀點各位幫我糾正。再次補充:很多朋友看了上面的話就問我為什麼研究生畢業了還不找工作:)說是打發時間,其實是因為研究生的時候帶了一個項目,申請提前畢業以後項目還有塊尾巴,答應導師把項目做完再走:)就這么簡單。男人總點負點責,呵呵
以下問題常被問到,我就想到哪說到哪吧。
一 首先說說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的入門材料少,價格高,自己看情況定吧。
② 怎麼學習嵌入式匯編語言
匯編是比較難,沒有比較易懂的書,一般你要了解處理器後再來看匯編才能看的更明白。
我想你要學習嵌入式的話,可以循序漸進的來。不要linux C都還沒有學好,就想研究匯編,那樣會讓你失去興趣的。我給你提供一個學習順序吧。
關於如何學習嵌入式,我剛才看到一篇很不錯的文章,是一個專科生介紹自己如何自學嵌入式,並找到嵌入式的工作,裡面介紹了他的學習方法和學習過程,希望對你有幫助。
專科生學嵌入式到找到工作的前前後後
先做個自我介紹,我07年考上一所很爛專科民辦的學校,學的是生物專業,具體的學校名稱我就不說出來獻丑了。09年我就輟學了,我在那樣的學校,一年學費要1萬多,但是根本沒有人學習,我實在看不到希望,我就退學了。
退學後我也迷茫,大專都沒有畢業,我真的不知道我能幹什麼,我在糾結著我能做什麼。所以輟學後我一段時間,我想去找工作,因為我比較沉默寡言,不是很會說話,我不適合去應聘做業務。我想應聘做技術的,可是處處碰壁。
一次偶然的機會,我才聽到嵌入式這個行業。那天我去新華書店,在計算機分類那邊想找本書學習。後來有個女孩子走過來,問我是不是讀計算機的,有沒有興趣學習嵌入式,然後給我介紹了一下嵌入式現在的火熱情況,告訴我學嵌入式多麼的有前景,給我了一份傳單,嵌入式培訓的廣告。聽了她的介紹,我心裡癢癢的,確實我很想去學會一門自己的技術,靠自己的雙手吃飯。
回家後,我就上網查了下嵌入式,確實是當今比較熱門的行業,也是比較好找工作的,工資也是相對比較高。我就下決心想學嵌入式了。於是我去找嵌入式培訓的相關信息,說真的,我也很迷茫,我不知道培訓是否真的能像他們宣傳的那樣好,所以我就想了解一段時間再做打算。
後來,我在網路知道看到一篇讓我很鼓舞的文章《如何學習嵌入式》,是一個嵌入式高手介紹沒有基礎的朋友怎麼自學入門學嵌入式,文章寫的很好,包含了如何學習,該怎麼學習。他提到一個方法就是看視頻,因為看書實在太枯燥和費解的,很多我們也看不懂。這點我真的很認同,我自己看書往往看不了幾頁。
我在想,為什麼別人都能自學成才,我也可以的!我要相信自己,所以我就想自學,如果實在學不會我再去培訓。
主意一定,我就去搜索嵌入式的視頻,雖然零星找到一些嵌入式的視頻,但是都不系統,我是想找一個能夠告訴我該怎麼學的視頻,一套從入門到精通的視頻,一個比較完整的資料,最好能有老師教,不懂可以請教的。
後來我又找到一份很好的視頻,是在嵌入式學習網推出的一份視頻《從零基礎開始學嵌入式》,網址:http://www.51WEN.info/embedvideo.htm
裡面的教程還不錯,很完整,可以讓我從基礎的開始學起。視頻不便宜啊,但是我也忍了,畢竟買幾本書都要幾百了,何況他們還有半年的技術咨詢和服務,算值了。
下面介紹下我的學習流程,希望對和我一樣完全沒有基礎的朋友有所幫助。
收到他們寄過來的光碟後,我就開始學習了,由於我沒有什麼基礎,我就從最簡單的C語言視頻教程學起,話說簡單,其實我還是很多不懂的,我只好請教他們,他們還是很熱心的,都幫我解決了。C語言我差不多學了一個禮拜,接下來我就學了linux的基本命令,我在他們提供linux虛擬機上都有做練習,敲linux的基本命令,寫簡單的C語言代碼,差不多也就三個禮拜。我每天都在不停的寫一些簡單的代碼,這樣一月後我基本掌握了C和linux的基本操作。
接下來我就去學習了人家的視頻的培訓教程,是整套的,和去參加培訓沒有多大的區別,這一看就是兩個月,學習了ARM的基本原理,學習嵌入式系統的概念,也掌握了嵌入式的環境的一些搭建,對linux也有更深層次的理解了,明白了嵌入式應用到底是怎麼做的,但是驅動我只是有一點點的了解,這個相對難一點,我想以後再慢慢啃。
這兩個月,除了吃飯睡覺,我幾乎都在學習。因為我知道幾乎沒有基礎,比別人差勁,我只能堅持努力著,我不能放棄,我必要要靠自己來養活自己,必須學好這門技術,同時我不懂的就問,這里真的很感謝他們的技術客服對我的任何問題都是耐心的解答,每天都我幾乎都有好幾個問題問他們,然後我就把不懂的問題總結記下來,這樣慢慢積累了一段時間,我發現自己真的有點入門了。
最後的一個月,我就去看關於實踐部分的內容,了解嵌入式項目具體的開發流程,需要什麼樣的知識,我就開始准備這方面的知識,也就是學習這方面的視頻,同時他們建議我去找了找一些嵌入式面試的題目,為自己以後找工作做准備。我就到網上找了很多嵌入式的題目,把他們理解的記下來,這樣差不多准備了20天左右
我覺得自己差不多入門了,會做一些簡單的東西了。我就想去找工作看看,於是我就到51job瘋狂的投簡歷,因為我學歷的問題,專科沒有畢業,說真的,大公司沒有人會要我,所以我投的都是民營的小公司,我希望自己的努力有所回報。沒有想過幾天過後,就有面試了,但是第一次面試我失敗了,雖然我自認為筆試很好,因為我之前做了准備,但是他們的要求比較嚴格,需要有一年的項目經驗,所以我沒有被選中。
後來陸續面試了幾家公司,終於功夫不負有心人。我終於面試上的,是在閔行的一家民營的企業,公司規模比較小,我的職務是嵌入式linux應用開發,做安防產品的應用的。我想我也比較幸運,經理很看重我的努力,就決定錄用我,開的工資是3500一個月,雖然我知道在上海3500隻能過溫飽的生活,但是我想我足夠了。我至少不用每天都要靠父母養,我自己也能養活自己的。我想只要我繼續努力,我工資一定會翻倍的。
把本文寫出來,希望能讓和我一樣的沒有基礎的朋友有信心,其實我們沒有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會成功。
最後祝願所有想學嵌入式的朋友更早的入門!
~~~~~其實嵌入式的路都是差不多,關鍵在於你要努力來學習,加油哦
③ 在石家莊做嵌入式開發的工資一般多少
有些人以為搞嵌入式就是隨便找本書看看,在電腦上編幾個程序就完事。非也,其實嵌入式的門檻是比較高的。具體如下:
1、您得有一定數量的Money。
(1)、開發板貴
(2)、培訓費更貴
(3)、開發平台是貴得不能再貴。(除非您只是想玩玩而已)
2、需要學習的東西多。(1)、window環境編程;(2)、Linux環境編程;(3)、單片機
3、最後也是最重要的一點,你得有堅韌不拔之志和一顆平常之心。
(1)、自信堅強積極勤快(註:好的自信是自覺的!)
(2)、成功其實就是成為最好的您自己
嵌入式門檻雖然較高,但也跟其他事物一樣,並不是牢不可破。只要我們用心去對待,東雪終將化去,春風定會吹來。具體步驟如下:
1、《C語言》第二版譚浩強;《C程序設計語言》第二版徐寶文譯機戒工業出版社
你能區分開指針數組和數組指針嗎?你知道函數指針嗎?
你能區分開定義一個變數時系統給它分配的空間與用malloc()函數給一個變數分配的空間有什麼不一樣嗎?
2、《數據結構》C語言版黃國愉、葉乃青編清華大學出版社
你能合上書本,用C語言實現書中的單鏈表、雙鏈表數據結構嗎?
3、《實用C程序設計》第二板中國電力出版社Steve_Oualline著
此階段主要是學習其面向對象的編程思想,加深對C語言和數據結構的理解。
4、學習單片機,最好能找個前輩帶一帶。
你能用51單片機做出一樣實際的東西嗎?即使它再簡單!
要注意加深對中斷的理解。
5、學習ARM單片機。
(1)、細讀《ARM微控制器基礎與實戰》周立功編寫(註:即使你不用書中的開發板)
(2)、細讀相關晶元的原版英文文檔。如:arm920TE.pdfS3C2410_1.2.pdf
6、學習uCOS!操作系統。
(1)、細讀《嵌入式實時操作系統uC/OS-!》第二版召貝塵搏貝譯
你能把uCOS!移植到自己的平台上嗎?
(2)、能編寫在uCOS!操作系統環境下運行的針對具體硬體的驅動程序
7、熟悉Linux環境,學習含轎Linux環境編程,學習交叉編程
(1)、細讀《linux命令大全.pdf》
(2)、細讀《GNUMake使用手冊(中譯版).pdf》
(3)、學習創建交叉編程環境.
8、學習Linux操作系統。
(1)、《UNIX環境高級編程》
(2)、細讀「joyfire筆記」,可在「www.qianrushi」網站的好書下載欄目獲取
(3)、細讀《linux內核完全派老祥注釋》
(4)、細讀《thelinuxkernel2》
(5)、利用源代碼閱讀利器工具」SourceInsight」進行真正的linux內核原碼刨析
(6)、最後進行內核移植,並能編寫在linux操作系統環境下運行的針對具體硬體的驅動程序
9、學習Linux設備驅動編寫。可參考《Linux設備驅動程序》
10、復習C,學慣用QT進行圖形界面編程
(1)、細讀《QT編程寶典》
(2)、學會通過查看QT電子文檔進行QTGUI實地編程
(3)、學習交叉編程.(其實就是把命令qmake變為tmake)
11、當然,你也可學習一下PCB的製作和設計一個自己的CPU(即軟殼)
至此,你已學完嵌入式的整流程!但謹記:一個有思想的人才真是一個力量無邊的人;有容乃大,能予方強!
-------------------------------------
這里有一篇文章,很適合你喲,看看吧
bbs.ednchina/?url=http%3A//bbs.ednchina/ShowTopic.aspx%3Fid%3D15164
④ 剛入手金牛STM32F107VCT6開發板.....但是不知道怎麼開始學,能指導一下不啊....我大三,電氣專業.有51基礎.
我也是這樣過來的,也是電氣專業,51到stm32入門時間大約一個月左右,都是利用課余時間來學習和調試。首先你要知道stm32和51的區別,是定位在高端工控mcu,比51有更豐富的介面和資源,但是還遠沒有達到氏磨arm9以上的能夠運行片上嵌入式系統(比如:安卓,wince)的一種處理器。但是做個彩屏MP3加電子書還是完全可以的。
首先了解一遍處理器架構,stm32是arm的cortex M3核,跑72M,但是架構先進代碼運行速度,比51快100倍左右吧。有那些時鍾,定時器,中斷,介面,看一遍了解。
然後學習GPIO,就是如何操作引腳高低電平,點流水燈。注意使用庫函數! 很方便的,ST公司已經把代碼寫好了,不用手動去操作寄存器。更不要想著用匯編了。庫函數用3.0以上的新庫,去下載一份庫函數使用手冊的翻譯版。這樣你就能看懂開發板配來的例子了。看不懂的c語言語法趕困核老快去網路查一下,很簡單的。官方庫函數採用規范的宏定義和指汪升針,寫的非常好。
流水燈點起來,在去學習STM32晶元配的AD。串口。定時器,PWM。很快的。
慢慢移植你51上的例子到stm32,是一個很有趣的過程哦。
如果還想進一步,就可以把ucos實時系統移植到stm32上,學習一下嵌入式系統,很有挑戰性。系統的好處是可以同時執行多任務,不再是一個while(1)大循環了,是一個任務一個大循環,同時運行,爽啊。
記住手上帶好stm32庫函數使用手冊翻譯版,stm32不完全手冊。這個兩個pdf。
全部手動輸入,加分哦。
⑤ 關於採集IO口電壓
下面是我以前用過的一個程序,不過是MEGA32的,我沒用過mega16,樓主只要將以下用到的控制寄存器修改成mega16的即可:
基本思想是初始化程序中設定好自動連續轉換,再在中斷服務程序中讀取結果(每中斷一次獲得一個通道的轉換結果值)。
void adc_init(void)
{
ADCSR = 0x00; // disable adc
ADMUX = 0xC0; // 參考電壓選擇搏鋒片內基準電壓 2.56V,從PA0號通道開始
ACSR = 0x80; // 不用模擬比較器
ADCSR = 0x89; // 啟動ADC,轉換結果右對齊,分頻因子 2
ADC_chn = 0x00; // 選擇第一個通道(PA0)
}
void adc_isr(void)
{
UINT ADC_value;
ADCSR |= 0x10; // 清老銀配 AD 完成標志
ADC_value = ADCL; // 先讀低八位數據
ADC_value |= (int)ADCH << 8;// 再讀高二位數據並移至高位元組
if ( ADC_chn == 0x00 )
{ input[0] = ADC_value;// 保存PA0的值
}
else if ( ADC_chn == 0x01 )
{ input[1] = ADC_value;// 保存PA1的值
}
else if ( ADC_chn == 0x02 )
{ input[2] = ADC_value;// 保存PA2的值
}
。侍指。。。。。。。
else if ( ADC_chn == 0x07 )
{ input[7] = ADC_value;// 保存PA7的值
}
ADC_chn ++; // 通道號加 1
if ( ADC_chn > 0x07 ) ADC_chn = 0x00;
ADMUX = 0xC0 + ADC_chn; // 切換通道
}
⑥ 嵌入式系統自學
嵌入式系統軟體工程 方法實用技術及應用,免費下載
鏈接:https://pan..com/s/10No3IypKyLg01bV4T9b22w
《嵌入式系統軟體工程:基礎知識、方法和應用》系統地闡述嵌入式系統軟體工程所涉及的過程、方法、內容,以及在典型工業領域中的應用。全書內容分為兩大部分:第一部分介紹嵌入式系統軟體工程方法論,主要包括嵌入式軟體的開發過程(需求工程、軟體和系統體系結構、編程和測試等內容),開發和測試中所採用的標准,與安全性相關的軟體系統的准入,以及嵌入式軟體所涉及的法律問題:第二部分介紹嵌入式系統軟體在汽車領域、軌道交通領域、航天領域、醫療器械、工業自動化、通信系統中的應用,在每個應用領域重點介紹具體應用領域的一些特定需求、技術和限制條件,以及它們對於嵌入式系統軟體開發過程的影響。
⑦ 求《uCOS-Ⅱ:源碼公開的實時嵌入式操作系統》的光碟內容,是光碟哦,PDF我有。
ucos|4-ucosII|盧老師|UCOSII|源享科技ucosd操作系統網路網盤免費資源在線學習
鏈接: https://pan..com/s/10nfqoxR-bPi-kJyYJBswKw
ucos 4-ucosII 盧老師 UCOSII 源享科技ucosd操作系統.zip UCOS視頻教程王華斌.rar UCOS移植資料 如何學習嵌入式開發.rar 零死角玩轉stm32-系統篇1、uCOS-II 移植與深入實戰指南.pdf 基於嵌入式實時操作系統的程序設計技術+周航慈.pdf 北航uCOS-II課件.pdf VC6.0 UCGUI3.90源碼.zip uCOSⅡ中文教程(邵貝貝).pdf ucosii.rar uCOS2精華快速掌握.ppt
⑧ 學習嵌入式開發要學習哪些知識
嵌入式系統是計算機軟體和硬體的綜合體,你可以先下載全套嵌入式視頻課自學,看是否感興趣。
①C,Java核心編程:c語言核心編程,Java核心編程;
②Linux核心操作與演算法:Linux系統使用,Linux-c編程核心技術,精品數據結構,Linux-c編程精髓;
③核心操作與演算法:Linux系統編程,Linux網路編程核心技術,UI編程,Java核心編程,安卓核心技術;
④ARM+Linux底層開發:數字電路,ARM編程核心,Linux系統開發,嵌入式Linux驅動開發;
⑤大型項目實踐:每期安排各類型真實的項目,詳細可以點我下載資料。
ESE(嵌入式軟體工程師);
ADE(嵌入式應用開發工程師);
FWE(嵌入式底層開發工程師);
FEC(嵌入式固件開發工程師)
你可以考察對比一下南京課工場、北大青鳥、中博軟體學院等開設有嵌入式開發專業的學校。記得下載全套嵌入式開發視頻課,祝學有所成!望採納!
⑨ 初中數學北師大版課本及教輔資料下載資源
《【初中之友】數學電子課本》網路網盤資源免費下載
鏈接: https://pan..com/s/1McZEoB8moZwWbE6cG1QC3w
【初中之友】數學電子課本|人教版數學七年級下冊.pdf|人教版數學九年級下冊電子課本.pdf|人教版八年級數學(下冊)教材高清版.pdf|更多資料關注語文視窗、數學視野、初中之友.png
⑩ stc系列單片機_μC/OS-Ⅱ在C8051F系列單片機上的移植及其應用系統開發
隨著微處理器技術的飛速發展和嵌入式系統實時性要求的不斷提高,應用實時多任務操作系統(RTOS)作為嵌入式設計的開發平台已逐步成為嵌入式應用設計的主流。本研究討論將μC/OS-Ⅱ移植到C8051F系列高性能8位單片機中,並以C8051F060為例闡述了其應用系統的開正基發過程。
一、μC/OS-Ⅱ的基本工作原理
1.任務管理
µC/OS-II中的任務可以是一個無限的循環,也可以在一次執行完畢後被「刪除」掉,即該任務可以認為CPU完全屬於該任務本身,實時應用程序的設計過程包括將問題分割為多個任務。µC/OS-II可以管理64個任務,每個任務有一定的優先順序,且優先順序不重復。
2.任務調度機制的實現
µC/OS-II是可剝奪型內核,優先順序高的任務一旦就緒就能剝奪優先順序較低任務的CPU使用權,這提高了系統的實時響應能力。在沒有中斷情況下,任務間的切換一般會調用OSSched()函數。µC/OS-II的中斷服務子程序和一般前/後台的操作有所不同。
3.任務之間的通信
在µC/OS-II中,可以通過信號量、消息郵箱和消息隊列等機制,實現數據共享和任務通信。消息郵箱用一個指針型變數,一個任務或一個中斷服務子程序通過內核服務,將一則消息放入郵箱,一個或多個任務通過內核服務接受這則消息。每個郵箱有相應的等待消息任務表,等待消息的任務在無消息時被置掛起態,並記入郵箱等待消息任務表中。消息放入郵箱,內核將運行等待消息任務表中優先順序最高的任務。
二、移植及應用
C8051F060系列單片機特別適舉數謹用於任務繁重的小型化測控系統。當晶元具有的功能被較多地使用時,系統要處理的任務就較多,編程頭緒也多。為了簡化應用程序實現程序模塊化,提高應用程序的實時性和可靠畢納性,將μCOS2Ⅱ移植到C8051F060中就成為一件很有意義的事。
1.µC/OS-II的移植
(1)修改INCLUDES.H文件:增加的頭文件放在頭文件列表的最後。
#include "os_cpu.h"
#include "os_cfg.h"
#include "ucos_ii.h"
(2)修改OS CPU.H文件:為確保系統在KEIL環境下正常運行,重新定義了一系列與C8051F060和KEIL編譯器相關的數據結構、宏和常數。
typedef unsigned char OS_STK;/*定義堆棧寬度為8位*/
typedef unsigned char OS_CPU_SR;
#define OS_ENTER_CRITICAL() EA="0"
#define OS_EXIT CRITICAL()EA="1"
(3)修改OS_CPU_A.ASM文件
①編寫OSSTartHihgRdy()函數:獲得將要恢復運行的就緒任務的堆棧映像的最低地址,並計算出堆棧長度,然後向系統堆棧復制數據、堆棧指針SP和堆棧映像指針?C_XBP,最後利用中斷返回。
②編寫OSCtxSw()函數:先從當前任務的TCB控制塊中獲得當前任務堆棧長度和堆棧映像指針,然後將系統堆棧的內容復制到任務堆棧映像,最後獲得將要恢復運行的就緒任務的TCB,程序跳至OSSTartHihgRdy()函數的入口,實現任務的切換。
③編寫OSIntCtxSw()函數:代碼大部分與OSCtxSw()相同,不同之處在於此處不需要再保存寄存器;需要調整堆棧指針(SP=SP-4),去掉在調用OSIntExit(),OSIntCtxSw()中壓入堆棧中的多餘的內容,以使堆棧中只包含任務的運行環境。
④編寫OSTickISR()函數:用定時器0作中斷源,初始化定時器0使系統每秒中斷100次,節拍率Tick=100次/秒。
(4)修改OS_CPU_C.C文件:編寫OSTaskStkInit()函數用來初始化堆棧。
2. 基於µC/OS-II的C8051F060應用系統開發
移植了µC/OS-II的C8051F060的每個功能都可以作為一個獨立的任務,每個任務都有自己的堆棧空間,可以被其他任務和中斷服務程序掛起。在設計中,主函數均以OSInit()開始,以OSStart()結束,中間部分為與硬體相關的系統初始化函數。對於任務的建立,必須依照µC/OS-II系統中建立任務的格式,根據自己的需求來確定任務的個數,並且根據任務的重要程度和被調用的頻率來設置好優先順序。創建好任務後,在主函數外面分別列出各個任務函數,每個任務函數都是一個無限循環程序,調用實現某些功能的應用程序函數,然後按設計的需求設置掛起方式和掛起時間。
應用系統測試程序實現了6個任務:Task1是每1s發送CAN數據包,Task2是處理CAN接收到的數據,Task3是每3s發送串口數據,Task4是處理串口接收到的數據,Task5是處理按鍵信息,Task6是顯示數據。CAN匯流排接收採用中斷方式,其優先順序高於其他任務,為了保證系統的實時性,在中斷程序中不處理數據,只是發送一個信號量,在Task2中處理CAN數據。串口數據接收亦採用中斷方式,其優先順序低於CAN高於其他任務。串口數據發送採用的是查詢方式,按位元組發送。程序中設置6個任務的優先順序依次為13,11,14,12,15,16。
在主程序中,首先初始化C8051F060和CAN,調用OsInit();然後調用API函數,創建6個任務(不包括空閑任務);再創建一個信號量CAN_EVENT,為中斷與Task2通信所用;最後調用OSStart(),OS系統開始運行優先順序最高的任務。Task2的優先順序最高,但是在沒收到CAN_EVENT之前,任務一直處於休眠狀態,當CAN接收器收到數據包後,Task2進入就緒態,在中斷返回時,進行任務切換,執行優先順序最高Task2。在Task2還未收到信號量之前,Task1、Task3、Task4、Task5和Task6根據時間延時和優先順序的不同各自獨立運行。
三、結束語
將編寫的測試程序下載到C8051F060應用系統中進行了實際的運行測試,測試表明,基於µC/OS-II的C8051F060應用系統中的各任務工作穩定可靠,取得了滿意的效果,為進行嵌入式應用系統的進一步設計奠定了基礎。
(作者單位:黑龍江省大慶職業學院)
註:本文中所涉及到的圖表、註解、公式等內容請以PDF格式閱讀原文
本文為全文原貌 未安裝PDF瀏覽器用戶請先下載安裝 原版全文