※ 引述《t7365443 (U彥)》之銘言:
: 各位版友好
: 目前就讀國立科大碩(電機)
: 大學是資工系的
: 本人一直想走韌體工程師這方面
: 但是實驗室又是做網路相關的
: 想找個網路設備的韌體的領域
: 想知道如果要走韌體這方面需要補足什麼地方
: 有什麼比較重要的地方 可以自己自學或是去修大學部的課
: 大學是稍微有玩過arduino開發版
: 但尤其是硬體這方面 (電子 電路 嵌入式系統等等)以前資工教的比較少
: 謝謝各位的意見
身為一個在韌體&embedded system 工作了快20年的老屁孩來跟你說(我很廢,bug製造機,
只剩年資可以說嘴).
想走韌體,基本的電子電機知識是一定要具備的.
最基礎的電子學,電路學,數位邏輯,基本電學,非常重要,要會.基本的晶片通訊方式,
例如gpio, i2c, SPI,要會,電磁學,線路設計,pcb layout,會的話更好但不是必須.
要會這些要幹麻? 因為等你控制週邊晶片,週邊晶片卻不會正常動作的時候,你要有能力
找出為什麼.至少要能找到線索,說得出所以然來.這樣你才能跟硬體工程師進行討論.
如果你只是一個遇到問題就只會說”阿我填了暫存器,他就是不會動阿”的韌體工程師
,那硬體工程師怎麼跟你合作?厚黑一點的來說,當硬體工程師指責你的時候你能在老闆面
前反擊.
MCU/CPU/SoC的硬體部份,要知道一些基本知識,中斷,輪詢,timer,io,memory,mmu/non-
mmu,memory address mapping,clock&PLL,power & regulator等等的,不知道這些,你就
無法知道怎麼正確控制cpu的行為
OS的部份,基本的恐龍書內容要會,因為 1)如果你是在一個作業系統上開發,你要知道作
業系統在背後挖什麼洞給你跳.2)如果你遇到的是單晶片裸機開發,你總有一天會遇到需
要開發出自己的一個簡單的分時系統的狀況.不過資工的恐龍書都要念,對資工人應該還
算小菜.
除錯的部份,最基本的要懂得操作三用電錶,示波器,邏輯分析儀.韌體除錯部份,大概要知
道如何操作一些通用的除錯工具,例如gdb,或是IDE內附的debuger,另還有Jtag or SWD
等等.但我敢保證做軔體一定會遇到上述工具都無法幫助你的時候.
回頭來說,如果要走網通類韌體,目前產業鏈還蠻完整,OS&週邊晶片都很成熟,除了上述
的基礎之外(對,是基礎),你可以在多碰一些有線無線網路相關的軟硬體知識以及openwrt
韌體的水是很深的,絕不是簡單的事情.業界很多那種只會call api,填暫存器,遇到不會動
就傻在那邊只會推給硬體工程師的人,我個人覺得是很丟臉的.如果能勸你,我還是覺得不
要進來這,薪水沒有比較高,走純軟不必要會上面那麼多,還不須要跟硬體工程師吵架.每月
五號口袋麥克麥克.
多好