嵌入式心得 (轉載)

學習有捷徑嗎?俺認爲是有的,正確的道路就是捷徑。
    就好象是登山,若是有導遊圖,那就能找到一條最正確的路線;若是沒有導遊圖,本身瞎琢磨,東問西問,也未必能找到最佳的路線。
    有時候回首前塵,會謂嘆,要是當時我這樣作就行了;這也說明了人生會有一個最優解。
    嵌入式系統的學習也是同樣,做爲電子專業或者其它專業的學生來講,想要把嵌入式系統的學習搞好,走一條成功的人生道路,那應該怎麼去作呢?俺試着分析看看。
    固然人生的道路不少不少,嵌入式不多是惟一的道路,也絕對不是最好的道路;這些都是因人而異的; 
若是你沒有什麼別的資源,俺主要指的是人脈,資金,須要靠技術吃飯,正好你學的是電子、自動化、通信...這樣跟嵌入式相關的專業,又正好喜歡技術,那麼能夠考慮把嵌入式看成本身的傍身之技來學習。這時尋求嵌入式系統學習的最優解就有了意義。
    1、 嵌入式系統的定義
    根據網絡上搜索到的關於嵌入式系統的定義,結合本身對嵌入式系統的理解,把嵌入式系統定義以下:
一、 嵌入式系統簡單的說就是面向特定應用設計的專用計算機系統;
二、 嵌入式系統與普通的PC或者notebook不一樣,嵌入式系統的外形尺寸、功耗、外部適配器等各類特徵必須知足應用的要求和限制;
三、 嵌入式系統的軟件包括操做系統燒錄在一塊電路板上;
四、 使用低功耗的X86級別的CPU,採用模塊化的設計,配置了最基本的計算機周邊配備而製成。這種計算機一般採用Windows操做系統;
五、 嵌入式系統的CPU能夠是:4位、8位、16位、32位;
六、 嵌入式系統應用普遍,諸如:
1) 小家電
2) 汽車
3) 電梯
4) 電視
5) 錄像機或者VCD、DVD
6) mp三、mp4
7) 工業控制
8) 醫療設備
9) 衛星
10) 電話
11) PDA
12) 飛行系統等等
13) ……
七、 嵌入式系統的體系結構:
1) CPU
2) RAM
3) ROM或者flash ram
4) AD
5) DA
6) 人機界面(例如按鍵+LED/LCD/彩色液晶顯示器/)
7) I/O
8) Usart
9) USB
10) CAN
11) 以太網
12) 嵌入式的操做系統,例如:uc/os、linux、vxworks、wince、dos。。。
八、 嵌入式系統更多的表現爲SoC的特色,也就是把整個系統都集成在一個芯片上,例如,ATMEL的arm7的芯片91sam7x128/256等;用戶能夠得到廉價而功能強大的嵌入式系統;



    2、 最正確的學習道路 - 從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有了很大的差異!功能愈來愈強大的同時成本愈來愈低,並且不擔憂某個廠家缺貨...
4. 。。。。(還在不斷增長之中)



    第二步:熟悉can2.0A/B,在精通51的基礎上,熟悉can2.0A/B



    爲何是canbus而不是modbus bus、bitbus?

    CAN是德國Bosch 公司爲解決現代車輛中衆多的控制和數據交換問題,開發出一種CAN(Controller Area Network)現場總線通訊結構。其主要特色是:
1. 8字節的短幀傳送,故傳輸時間短、抗干擾性強;
2. 高速,最高速度可達1Mbit/s;
3. 多主方式,多主之間又能夠分紅是主節點和次節點;各節點都可在任意時刻主動向網絡上的其餘節點發送信息,不分主從,通訊靈活;發送的時候總線自動仲裁主次;主節點佔有優先權; 
4. 能夠作到全區廣播、分區廣播和點對點通信;
5. Can控制器自動過濾幀號不符的幀;大大減輕了CPU的負擔; 
6. 具備多種錯誤校驗方式如CRC及其餘校驗措施,數據出錯率極低;並且在嚴重錯誤的狀況下,節點會自動離線,避免影響總線上其它節點;Rs485常常是一個節點影響了總線上全部的節點;

7. 採用無損壞的仲裁技術; 

    做爲一種技術先進、可靠性高、功能完善、成本合理的遠程網絡通信控制方式,CAN總線已被普遍應用於各個行業之中。大體有如下這些行業:
一、 汽車電子
二、 自動控制
三、 智能大廈
四、 電子系統
五、 紡織
六、 智能儀表
七、 醫療系統
八、 電梯
九、 安防監控
十、 電源
十一、 運動控制
十二、 …等各領域中,取代了原來的落後的RS485的通信方式。


    bitbus/modbus在物理層上都是Rs485的。


    第二步:熟悉ARM7,掌握ARM這個超級單片機(32位)

 
    3、 直奔主題 - 不要穿着棉襖洗澡


    學什麼很重要,沒有必要穿着棉襖洗澡,直奔主題,要學就學最有用的東西。
好比單片機,學什麼型號?市場上的單片機,有5一、AVR、PIC、freescale等不一樣的系列,把任何一款單片機學會了玩通了那都是很不錯;

    可是我我的認爲仍是51系列的單片機在中國使用最多,去中發問問哪款單片機出貨量最大就知道啦;
聽說有些大學如今還在教授Z80,在論壇上爭論起來,有些人支持,有些人反對;支持的人認爲這是一款很好的原型機,能夠學到不少計算機的原理;

    可是對於嵌入式系統的學習者,一款已通過時的技術學它作什麼?難道學了不能致用是對的?

    學習51不也同樣能瞭解計算機的基礎知識?而學好了51畢業出去就能生存;

    你們都知道485總線要想可靠工做非專家不可,而如今canbus做爲更加可靠性能更加卓越的總線技術,節點數量每一年遞增;能夠說,51+canbus可以讓你如虎添翼;

    那麼,是否是去學習canbus要能得到更加遠大的前途而沒必要在485上浪費寶貴的青春?答案顯然是前者。
畢業以前的大學n年+畢業設計就是爲了邁出就業的第一步;第一步很重要。
人生不要有斷點,一步接着一步,如今邁出的一步就是爲了下一步作好準備,甚至爲了比較長遠的之後...

    4、 把嵌入式系統分紅模塊學習 - 庖丁怎樣解牛?

    拿到一個電路設計的任務的時候,或者拿到一塊完整系統的電路板的時候,怎樣去分析它的系統構成呢?

    做爲一個電子系統,它的構成一般是:
1. 單片機最小系統
2. 配置(內存、時鐘、看門狗、eeprom)
3. 開關量輸入
4. 開關量輸出
5. 模擬量輸入
6. 模擬量輸出
7. 人機界面(按鍵+液晶顯示/LED顯示)
8. 通信接口和協議

    所以設計的時候,或者分析的時候,要按照這個分類來選擇。

    舉個例子:開關量的輸入輸出的擴展,有如下的方法:

    一、 串口擴展

    二、 並行擴展

    那麼,在系統設計的時候,究竟是使用串行擴展仍是並行擴展,就須要權衡性能和價格,而選擇一種最合適的擴展方法;
在《從51初學者到電子工程師》一書中,將把這些知識點列表出來。

    在這個基礎上,按照這個思路,您再去構築本身的知識體系。

    其實,任何一門學問,可貴就是入門;而入門,就是要有一個完整的知識體系;一開始這個知識體系僅僅是一個個點,到後來就能成爲一套完整的體系,知識的網越織越密。



    5、 儘量得到更多的信息 - 站在前人的肩膀上


    當您拿到一個設計任務的時候,怎麼入手呢?

    要把這個任務按照模塊分解,再充分利用網絡上的資源,找到現成的或者相似的解決方案。

    試舉一例:

    《基於CAN總線的智能I/O讀寫模塊》

    當你拿到這個任務的時候怎麼着手呢?

    一、 您會想到,哦can總線是什麼東西啊,不知道;不過沒有關係,狗狗之;

    哈哈,結果出來啦,原來是周立功先生推的can總線啊,知道知道;把周立功網站上的有關can的資料都下載下來學習;



    二、 哦那原理圖怎麼畫呢?再次狗狗之,不過此次要使用圖片;嗯可是我已經知道了,還有一個can總線控制器的芯片,sja1000,那就使用這個詞來搜索吧;

    哈哈找到了,連89c5X+sja1000+82C250(總線收發器)都有了;哦還有一個復位電路,不過沒有關係,俺可使用stc89C5X,內置看門狗和復位電路;



    三、 剩下I/O讀寫模塊怎麼辦呢?

    哦模塊化的設計思路,想一想看,老樹都說了什麼?

    I/O有多種的擴展方法,一種是串行、一種是並行,那我須要擴展嗎?算算I/O的數量,硬件還剩下哪些資源呢?

    一、p0、p2被佔用了

    二、WR、RD也被佔用了,哦仔細看看,int0也被sja1000的中斷佔用了;

    三、p1/p3加起來是16根口線,剩下16-3(RD、WR、int0)=13個口線;

    四、看門狗喂狗須要一個(若是內置看門狗的能夠不要)

    還剩下13個;

    如今須要8入8出,超出了,那麼就須要擴展

    擴展有2種方法:

    一、串行

    二、並行


    串行速度慢點,可是簡單;

    也可使用並行,能夠按照對ram的讀寫同樣的方法來擴展;反正sja1000也是並行的;

    串行又能夠分紅:

    輸入串行擴展;

    輸出串行擴展;

    嗯要不就定下來,輸入使用串行擴展,反正輸入的開關量爲了抗干擾也要使用時間片,1ms間隔掃描至少3~5次才能判斷;

    輸入串行擴展可使用74HC165;好像74hc166也能夠,不記得了;須要2根I/O;

    這樣13-2=11,再減去輸出的8個口線,徹底夠用了;還剩下3個口線;那就把串口也作出來調試和下載用;哈哈。。。

    不過…開關量8入8出的信號是什麼形式?

    嗯一般輸出輸出都是幹接點;

    輸入須要光電隔離;要使用一個隔離的Dc/DC模塊;

    輸出7407直接驅動繼電器便可;

    光耦使用什麼型號呢?

    嗯老樹說了,有TLP521-1,再找來TLP521-1的資料看了,光耦隔離的芯片也有了...

    再找來7407的芯片的datasheet看了,驅動繼電器的芯片的資料也有了...

    再去找nais的繼電器的資料看了,繼電器輸出也有了...

    再去找接線端子的資料或者去配套市場看看,輸入輸出電源can接口的端子也有了...

    作到這些,硬件就差很少了
......

    哦還有協議,嗯使用啥協議呢?嗯好像zlg那裏有一個什麼iCAN的協議,但是網站上沒有,怎麼辦呢?老辦法,搜索看看,哦,老周那裏有一本書講了ican的協議,嗯去互動出版社定購一本,過2天就能送到了...



    不過代碼尚未,嗯再搜搜看,要不就到21ic上問問...


    6、 大學階段掌握一門傍身之技取得先手之利 - 精通一門略通其它


    看剛畢業的學生的簡歷,處處都是熟悉的字樣,好比:
……

    熟練使用c5一、protel;

    瞭解ARM/ucos2/Linux

    分析過ucos2內核代碼。

    比較瞭解Linux底層硬件驅動軟件結構比較

    作過一些嵌入式硬件驅動的設計

    很熟悉網絡通訊知識及網絡編程
……

    實際上,對於企業來講,並不關心你學了多少的知識,而是關心你是否有一門比較精通的手藝,來了就能幹活。
那麼,該怎樣去作呢?俺以爲,應該是在精通一門手藝的狀況下,略通其它。

    嵌入式系統自己也是多方面的,硬件軟件都有,可是,要有本身的最強項,由於企業都是用你的最強項。面面俱到實際上對於在校的學生來講是不可能的。我認爲,對於在校的學生,應該重點放在c語言的熟練上;一方面是由於硬件沒有實際的實踐,很難能拿得出手,固然實踐的成本也高;固然本身動手作一個學習板仍是頗有必要的,也不算很難;還有就是在企業中,軟件和硬件的配置基本上是1:4的狀況;對於成熟產品,基本上,硬件修改的狀況很是小,升級都是在軟件的功能的增長和完善上。
    
    固然去強化本身的一門技術不等於放棄其它,而是說,要有重點的學習,要學會發力,把本身的精力集中在一門技術上;稍微大一點的企業都是有明確的分工的。

    而若是能在大學學習的階段就能熟練掌握一門技藝,或者是c語言的編程,或者是原理圖和PCB,或者熟練掌握模擬電子...,那麼就能很快找到嵌入式系統的開發工做,也就上道了。


    7、 第一份工做很重要 – 哪怕去實驗室打雜也要作跟嵌入式沾邊的工做

    第一份工做很重要,人生的第一步很重要,走好第一步,能夠少走2~3年末的彎路;沒有走好,有可能這輩子就廢了;
工做了2~3年以後,用人單位看重的是你的工做經驗,直接影響到您的價值能不能升值;就象微軟不會招聘作物流的人去作軟件,若是您作的是機械設計,固然用人單位也不會讓您去作51的開發;

    然而,第一份工做能不能作嵌入式開發,首先是您能不能在大學的4年內取得先手之利;先取得一些嵌入式開發的經驗,好比C51的編程等等;

    若是您經驗也不是很豐富,一開始能夠計較工資的高低,而是幹了再說,哪怕是到實驗室打雜;
這樣也比干點別的再回過頭來作嵌入式的開發要強。


    8、 怎麼增強本身?- 時間規劃+勤奮

    有一個明確的職業生涯的規劃,同時要有一個達到這個目標的能夠實施的準確的時間表。如今競爭這麼激烈,不付出超出常人的努力在現今的中國是不可能脫穎而出的;人太多了,競爭太激烈了。企業如此,我的也是如此;固然,真正的卓越的企業或者我的,更重要的是理念,怎樣去培養本身的核心競爭力!我的認爲,簡單的說,那就是技術專家+行業專家。

    年輕人每每對職業生涯的規劃迷迷茫茫;可是時間如白駒過隙一去不復返。若是說每一個人的成就有大有小。善於思考是一方面,行動敏捷是一方面,抓緊時間,提升效率那則是最重要的因素之一。


    9、 嵌入式系統設計的3個境界 - 熟練、熟能生巧、系統設計的思想

    熟練:熟練掌握c語言、電路模塊、eda工具;

    熟能生巧:幹活多了,從中悟出不少的技巧;幹得活又快又好,這是熟能生巧;

    系統設計:不知足於熟能生巧,而開始考慮,代碼重複使用,代碼設計的標準化、模塊化;使得後來的開發能在一個標準的平臺上進行;對嵌入式系統設計有了本身的獨到的看法。

    也還可使用另外的標準來做爲嵌入式系統設計的境界:

    可靠性高:在一樣的成本下,作出來的東西可靠性高於競爭對手;

    可靠性高的狀況下成本更低:能用比競爭對手成本更低的電路設計做出可靠性更高的產品;

    在此基礎之上,功能更增強大,用戶使用更方便:進入到行業專家的境界了。


    10、 細節決定成敗 – 精心設計硬件電路

    對於電子工程師而言,當拿到一個datasheet,或者一個電路圖,或者設計的電路圖,首先是站在前人的肩膀上,儘可能不去作重複的勞動;可是,要對每個電阻、電容在電路中的做用內心很清楚-把無關緊要的器件去掉。要是您對電路中的元器件的做用還不是很清楚,舉例,爲何上拉電阻是5.1K?換成1K行不行?換成10K行不行?什麼是上拉?什麼是強上拉?什麼是弱上拉?去耦電容的做用是什麼?這些都要作到清清楚楚。每個細節構成可靠的產品;而一個細節的疏忽帶來的是大量的經濟的損失和聲譽的喪失。


    11、 改善你的命運 - 了凡四訓


    12、 尋找足夠大的平臺 – 尋找機會與可持續發展


    十3、 學會發力 - 快、準、狠

    看準嵌入式系統設計能夠做爲傍身之技的話,那就要:
    快:下手要快,想到了就去作,趕忙去學;
    準:抓住8位mcu、can總線、arm7這樣的道路,不走錯;
    狠:用功要狠,白天黑夜,吃了吃飯睡覺時時想着;男人嘛,就是要對本身狠一點。

    十4、 團隊精神 – 並行處理的代名詞linux

---------------------------------------------------------------------------------------------    編程

  定義可從幾方面來理解嵌入式系統:
網絡

  ◆嵌入式系統是面向用戶、面向產品、面向應用的,它必須與具體應用相結合纔會具備生命力、才更具備優點。所以能夠這樣理解上述三個面向的含義,即嵌入式系統是與應用緊密結合的,它具備很強的專用性,必須結合實際系統需求進行合理的裁減利用。
模塊化

  ◆嵌入式系統是將先進的計算機技術、半導體技術和電子技術和各個行業的具體應用相結合後的產 物,這一點就決定了它必然是一個技術密集、資金密集、高度分散、不斷創新的知識集成系統。因此,介入嵌入式系統行業,必須有一個正確的定位。例如Palm 之因此在PDA領域佔有70%以上的市場,就是由於其立足於我的電子消費品,着重發展圖形界面和多任務管理;而風河的Vxworks之因此在火星車上得以 應用,則是由於其高實時性和高可靠性。
工具

  ◆嵌入式系統必須根據應用需求對軟硬件進行裁剪,知足應用系統的功能、可靠性、成本、體積等要 求。因此,若是能創建相對通用的軟硬件基礎,而後在其上開發出適應各類須要的系統,是一個比較好的發展模式。目前的嵌入式系統的核心每每是一個只有幾K到 幾十K微內核,須要根據實際的使用進行功能擴展或者裁減,可是因爲微內核的存在,使得這種擴展可以很是順利的進行。
性能

  實際上,嵌入式系統自己是一個外延極廣的名詞,凡是與產品結合在一塊兒的具備嵌入式特色的控制系 統均可以叫嵌入式系統,並且有時很難以給它下一個準確的定義。如今人們講嵌入式系統時,某種程度上指近些年比較熱的具備操做系統的嵌入式系統,本文在進行 分析和展望時,也沿用這一觀點。
學習

  通常而言,嵌入式系統的構架能夠分紅四個部分:處理器、存儲器、輸入輸出(I/O)和軟件(因爲多數嵌入式設備的應用軟件和操做系統都是緊密結合的,在這裏咱們對其不加區分,這也是嵌入式系統和Windows系統的最大區別)。網站

 

@本篇文章純屬轉載,但願你們多看看牛人學習的心得。操作系統

相關文章
相關標籤/搜索