都說嵌入式學習難,難于上青天,其實不然,無論學習什么,只要找對了一個好的學習方法,往往會事半功倍。下面我摘自于一個嵌入式前輩,說說他的學習經驗。 第一部分 對嵌入式系統的一些大致了解 嵌入式被應用于哪些行業? 1) 小家電2) 汽車3) 電梯4) 電視5) 錄像機或者VCD、DVD6) mp3、mp47) 工業控制8) 醫療設備9) 衛星10) 電話11) PDA12) 飛行系統等等。 嵌入式系統的一些簡單了解: 1、 嵌入式系統與普通的PC或者notebook不同,嵌入式系統的外形尺寸、功耗、外部適配器等各種特征必須滿足應用的要求和限制; 2、 嵌入式系統簡單的說就是面向特定應用設計的專用計算機系統; 3, 使用低功耗的X86級別的CPU,采用模塊化的設計,配置了最基本的計算機周邊配備而制成。這種計算機通常采用Windows操作系統; 4、 嵌入式系統的軟件包括操作系統燒錄在一塊電路板上; 5、 嵌入式系統的CPU可以是:4位、8位、16位、32位; 6, 嵌入式系統更多的表現為SoC的特點,也就是把整個系統都集成在一個芯片上,例如,ATMEL的arm7的芯片91sam7x128/256等;用戶可以獲得廉價而功能強大的嵌入式系統; 嵌入式系統的體系結構有哪些? CPU RAM ROM或者flash ram AD DA I/O Usart USB CAN 以太網 第二部分:正確的學習之路 最正確的學習道路 - 從8位mcu到canbus到ARM7 第一步:熟悉8位mcu 嵌入式技術學習的路線:8位mcu(51或者avr...)+can2.0B+arm7+arm9。 作為低端的嵌入式系統,選擇8位mcu作為入門是比較適中的,而8位mcu中,相比pic、avr、freescale等等8位單片機來說,又以選擇51核的單片機作為學習8位mcu的首選來更加合適。當然這個觀點是仁者見仁智者見智;如果需要理由的話,那么也許以下這些理由可以作為參考: 1. 51上積累了大量的優秀的代碼和其它資源;網絡上這樣的資源太多了,幾乎就是不花錢的; 2. 生產51內核的單片機的廠家很多,比如:ATMEL、華邦、LG、飛利浦、STC(宏晶科技)、TI、… 3. 51單片機在細分低端市場,面向不同的行業應用,廠家推出了不同的產品,如LPC900系列,STC的12CXXXX系列;在功能、價格、功耗,體積,封裝、抗干擾等方面來滿足行業用戶的需求;例如,現在的51單片機越來越多的集成了A/D、D/A、SPI、I2C、PWM、內部時鐘、看門狗、eeprom、ISP/IAP等等,已經跟傳統的ATMEL的89C51/52有了很大的差別!功能越來越強大的同時成本越來越低,而且不擔心某個廠家缺貨.. 第二步:熟悉can2.0A/B,在精通51的基礎上,熟悉can2.0A/B CAN具有的特點 1. 采用無損壞的仲裁技術; 2. 8字節的短幀傳送,故傳輸時間短、抗干擾性強; 3. 高速,最高速度可達1Mbit/s; 4. 具有多種錯誤校驗方式如CRC及其他校驗措施,數據出錯率極低;而且在嚴重錯誤的情況下,節點會自動離線,避免影響總線上其它節點;Rs485經常是一個節點影響了總線上所有的節點; 5. 可以做到全區廣播、分區廣播和點對點通訊; 6. 多主方式,多主之間又可以分成是主節點和次節點;各節點均可在任意時刻主動向網絡上的其他節點發送信息,不分主從,通信靈活;發送的時候總線自動仲裁主次;主節點占有優先權; 7. Can控制器自動過濾幀號不符的幀;大大減輕了CPU的負擔; 作為一種技術先進、可靠性高、功能完善、成本合理的遠程網絡通訊控制方式,CAN總線已被廣泛應用于各個行業之中。 第二步:熟悉ARM7,掌握ARM這個超級單片機(32位) 二、 學最新最有用的東西。 記住一句話:無論是在哪一個開發行業中,要學就學最新,最有用的東西! 對于嵌入式系統的學習者,一款已經過時的技術學它做什么?難道學了不能致用是對的? 在這里我推薦大家學習51系列的單片機,學好了就能畢業出去生存而學習了51+canbus能夠讓你如虎添翼; 三、 分模塊學習嵌入式系統 任何一門學問,難得就是入門;而入門,就是要有一個完整的知識體系; 拿到一個電路設計的任務的時候,或者拿到一塊完整系統的電路板的時候,怎樣去分析它的系統構成呢? 作為一個電子系統,它的構成通常是: 1. 單片機最小系統 2. 配置(內存、時鐘、看門狗、eeprom) 3. 開關量輸入 4. 開關量輸出 5. 模擬量輸入 6. 模擬量輸出 7. 人機界面(按鍵+液晶顯示/LED顯示) 8. 通訊接口和協議 四、站在前人的肩膀上學習 當你拿到一個不會的任務或者學習一個不會的東西的時候怎么辦呢?你自己左思右想,苦苦思考,就是想不出來,最后感嘆一句:真難學? 這你就錯了,不知道沒關系,你本來就是在一點點學習,本來就沒有經驗,怎么會一下子就解決了所有的問題呢,那樣的話,我可以告訴你:你不用學了。所以當面臨這些問題時,不要錢,我們先把問題分成一個個小模塊,每個小模塊百度去,你就會發現,咦?周立功老師發表過這個問題啊,下載過來學吧! 學習就是把前輩的東西拿來用,自己累積經驗,久而久之你也成高手了! 五、精通一門技術足以,門門相通。 大家切身經歷的一件事就是,面試的時候簡歷上寫的會的技能一大堆,什么html了,asp了,硬件了什么的,都懂,可這些,企業會看嗎? 企業關心的,不是你會多少?而是你是否精通一門,在精通一門的基礎上,略懂其他。 而對于嵌入式領域來說,我個人認為對于在校的學生,應該重點放在c語言的熟練上;一方面是因為硬件沒有實際的實踐,很難能拿得出手,當然實踐的成本也高;當然自己動手做一個學習板還是很有必要的,也不算很難;還有就是在企業中,軟件和硬件的配置基本上是1:4的情況;對于成熟產品,基本上,硬件修改的情況非常小,升級都是在軟件的功能的增加和完善上。 六、第一份工作,不求薪資,只求長經驗。 第一份工作是你步入社會的重要的一步,走好第一步,可以少走2~3年底的彎路; 然而,你的份工作能不能做嵌入式開發,首先就要看你是否具有嵌入式的一定基礎或者取得一些嵌入式開發的經驗,如果你不是,那一開始不要計較工資的高低而是干了再說,哪怕是到實驗室打雜,也比干點別的再回過頭來做嵌入式的開發要強。 七、 保持合理規劃時間,勤奮學習,才能在嵌入式中不斷提高自己 現在社會競爭這么激烈,所以每個人都在去努力培養自己的核心競爭力,只有成為技術專家+行業專業才能在這個行業立足不倒。 所以我們要有一個明確的職業生涯的規劃,同時要有一個達到這個目標的可以實施的準確的時間表。抓緊時間,提高效率最重要的因素之一。 八、 嵌入式系統設計的3個境界 - 熟練、熟能生巧、系統設計的思想 熟練:熟練掌握c語言、電路模塊、eda工具; 熟能生巧:干活多了,從中悟出很多的技巧;干得活又快又好,這是熟能生巧; 系統設計:不滿足于熟能生巧,而開始考慮,代碼重復使用,代碼設計的標準化、模塊化;使得后來的開發能在一個標準的平臺上進行;對嵌入式系統設計有了自己的獨到的見解。 也還可以使用另外的標準來作為嵌入式系統設計的境界: 可靠性高:在同樣的成本下,做出來的東西可靠性高于競爭對手; 可靠性高的情況下成本更低:能用比競爭對手成本更低的電路設計作出可靠性更高的產品; 在此基礎之上,功能更加強大,用戶使用更方便:進入到行業專家的境界了。 九、 學習就要- 快、準、狠 看準嵌入式系統設計可以作為傍身之技的話,那就要: 快:下手要快,看到現在形勢良好,想學那就趕緊學; 準:抓住8位mcu、can總線、arm7這樣的道路,不走冤枉路; 狠:學習就要刻苦,吃了就學,睡醒就學,想要成功總要付出點什么。 |