懂得看原理圖,電路圖,去做嵌入式,還需要具備哪些知識?
作為一個手機維修技術員,非科班出身。擁有9年的硬體維修經驗。目前從事蘋果維修(可以純手工解除蘋果任何設備的ID鎖),懂得如何看電路圖,原理圖。在工作的過程中有時會碰見軟體層面的問題,但是因為沒有接觸過編程方面的知識很容易不知道怎麼處理問題。另外一個方面就是自己願意想去學習編程這塊,也算是對自己的一個提升。
現在我是想系統的學習一下嵌入式這方面的知識,對於未來不想僅僅是一個維修佬。現在不知道從何入手,還需具備什麼樣的條件。勞請回答。謝謝。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。更新之前接觸過pads AD 之類的pcb軟體,基本的功能,我知道,但是要完全直接設計一塊pcb沒試過。 另外會用CAD因為之前做過iphone的擴容設備,設計模型的時候需要用到cad。編程這塊,前段時間接觸過一下彙編,感覺相對來說還是可以比較能理解的。後來看過一些c的課程感覺真的要慢慢啃啊。我希望能堅持下去的。 另外就是開發板,沒有買過來試過,感覺開發板還是比較適合我目前的工作比較匹配的,畢竟開發板也是arm 也有各類的匯流排介面定義。
首先我要對題主不斷進取的精神稱讚,
開頭說"作為一個手機維修技術員,非科班出身。擁有9年的硬體維修經驗,去做嵌入式".我給你的建議是,不要去做嵌入式軟體工程師,而是做嵌入式硬體工程師.之前其他的答者里說讓你去學C++,Linux,Android,我覺得並不合適,因為你沒有軟體基礎,但有硬體基礎,一家嵌入式公司里.硬體電路設計這方面也是需要人才的.建議你去找找電子電路,計算機硬體.ARM.PCB之類的資料看看,軟體方面,看看彙編,C語言,(操作系統先不要管),最多看看Uboot就行了.看Uboot也是著重在啟動,初始化,電源管理這幾方面,還有看看開發板的電路圖,想想為什麼這麼設計,替換方案有沒有.還有各種調試工具,示波器一定要玩得很溜.(還有,對英語有一點要求.文檔和資料大都是英文,)其實能掌握這些東西,能解決一般常見問題,就算已經有進入嵌入式行業的敲門磚了.補充一點,硬體工程師學C語言.
當然可以學,但是其實用到的機會不多,只能說是錦上添花,因為一般的公司都有分工.硬體工程師,驅動工程師.系統移植裁剪,應用開發.還有美工(UI).硬體工程師學C語言 就相當於 應用開發學UI設計.
如果確定要學C,有幾個知識點是最常遇到的.C語言最最精華的指針和結構體是一定得熟練掌握的,2進位8進位16進位互相轉換,...想到再補充吧..既然是嵌入式,那就只能學C語言了。
完全沒有什麼基礎的話,可以先看《C Primer Plus》,大概6-700頁,作者很耐心的引導你由淺入深,看完後差不多就入門了吧。
如果覺得代碼寫的太少,還是少了點感覺,可以看《The C Programming Language》,整本書幾乎都是代碼,還有本配套的習題集,這是C語言創始者寫的書,非常經典,一定要看。
另外還有《C和指針》、《C陷阱與缺陷》、《C專家編程》可以稍微看看,裡面有很多黑魔法。不過不看影響也不大,看興趣吧。
我對嵌入式不太懂,不過有本書肯定對題主有用,就是《編碼——隱匿在計算機軟硬體背後的語言》。這本書教你怎樣用導線和開關做成繼電器,然後用繼電器構成邏輯門,再組成一台計算機。既然題主懂電路原理,那麼這本書絕對會讓你大呼過癮。
到這裡我覺得差不多了吧,以題主的經驗完全能夠勝任工作了。作為一名電子信息工程的本科生,我當年也是懷揣著干嵌入式的夢想的(研究生估計要搞計算機視覺,囧),這裡有一個我收藏的豆瓣豆列嵌入式大師之路,你可以參考一下。第一步肯定是學習C編程,而且要在Linux下搞,推薦Linux C編程一站式學習 (豆瓣)。然後學習彙編、操作系統、網路,一步一步來慢慢後面你就知道要學什麼了。加油!!
樓上說的挺不錯,C的確是學嵌入式必備的語言,學完C後有能力的可以學一學linux
找當地知名大學旁聽,主要是看體系架構上的基礎書籍,高數線性代數,概率論一定要好好學。最好考研卷子能穩定拿個80分。
然後就是軟體的加強
之前接觸過一些硬體維修工程師,他們往往是具備一些電子知識和維修經驗的。對這樣的人來說,最重要的就是補充理論知識。
電路分析,電位,電流走來走去比較容易學會。
最重要的就是放棄維修工的思維,好好把模電上的二極體,三極體,運放工作原理補一補。另外現在很少有單純的模擬電路了,軟體不學也是不行的。學習硬體設計的時候就要注意單片機的應用。另外說一句,修手機跟做嵌入式設計真是兩碼事,就像會修電腦並不會為你的計算機道路填多少便利,還是得重頭來過學。要有心理準備。如果有決心和毅力,那麼先把電子工程系的專業必修選修課過一遍。也許你會覺得裡面不少知識沒什麼用,但不要輕易覺得沒用,不然後面你還要回來補。
像學習某種編程語言,搭個環境看看語法就能寫小程序了,感覺已經入了門了。事實上,能快速進入實戰階段只是給你一種學編程不難的錯覺。基礎不紮實,後面有更深的坑等著你。所以什麼xx天學會xxx的教程統統不靠譜,看完以後充其量只是具備入門的資格。
舉個例子。你能看懂電路圖,原理圖了對吧。那你知道為什麼要選這些器件嗎?知道為什麼這麼走線嗎?知道外圍電路怎麼設計嗎?雖然現在晶元集成度很高,需要的外圍元器件越來越少。但是當你需要獨立承擔一個小型系統開發的時候,往往遇到的不是理想情況,而是會出各種問題。如果基礎不紮實,不知道背後原理,那你連bug如何下手都不知道。
往深挖你就要發現,調試晶元或者系統時以前學的數字電路、模擬電路原理起作用了;高頻情況下信號完整性需要考慮了;寫firmware以前學的微機原理用上了;處理音頻視頻以前學的數字信號處理和數字通信又沒白學。然後你又發現可能高等數學又要用一點了。最後你發現,專業課或多或少都沒白學。
所以很多知識其實都是在交織中融會,在實踐中貫通的。建議你從離實踐最近的專業課程入手,遇到需要其他課程基礎的時候再去學相應的基礎課。起碼做到理解原理吧?
另外,知乎也有不少問嵌入式如何轉別的行業的,所以。。。
有人問如何硬解id我上圖。
說白了就是通過硬體的方式把有數據的加密零件給替換成沒有ID的套件。嵌入式是對知識儲備要求最高的工作之一,要學的很多,不是一下子能掌握的。硬體軟體系統都要學。
先學C語言,這是最基礎的,現在嵌入式底層基本都是用C來實現的,應用層C++多一點,學會了C其他的也是觸類旁通。
嵌入式這個定義很廣泛,有做晶元公司做驅動的,有做SDK的,也有在方案公司開發嵌入式界面的,不同的方向,對技能的側重點要求也不一樣,但是想要進這個行業,C語言是基礎.可以的話,一定要自己動手。
推薦閱讀: