PTT推薦

Re: [請益] 非本科韌體技能樹該怎麼點

看板Soft_Job標題Re: [請益] 非本科韌體技能樹該怎麼點作者
descent
(「雄辯是銀,沉默是金」)
時間推噓 推:0 噓:0 →:0

不知道你說的韌體是指什麼? 嵌入系有很多種:

* embedded linux
* 使用 rtos, 例如: freertos/vxworks
* bare metal 程式
* 手機
* 其他:

每種都有自己需要修練的功課, 但大概都脫離不了 c 語言,
大概除了 bare metal 都需要一些 os 相關知識,
雖然 OS 觀念大同小異, 但大同之中的小異就足夠讓人傷透腦筋。

細節很多, 提一些大方向。

embedded linux:
device driver
porting 到新 chip
user mode 應用程式

這 3 個各有其功課要修練, porting 到新 chip 大概是最難的,
一般人也比較沒有機會練習到, 大概連第0手資料也沒有。

device driver 由於和硬體有關, 會和硬體打交道, 需要使用
一些硬體相關工具, 示波器之類的。也要熟悉 linux device driver
架構。這個要練習比較麻煩, 書籍大概都過時, 需要自己看第0手資料,
也就是自己要看 device driver souce code, 然後看懂自己要怎麼寫
自己要 porting 的硬體。

user mode 應用程式有很多書籍可以學習, 要看懂他們並不容易,
需要花費不少時間。
尤其是 signal/fork/thread 議題都很難搞懂,
但這只是其中一部分而已。

rtos 則是看使用那一套, 就需要去學習其中的用法,
使用起來應該會和 linux 有點差異。
有 ice 會比較容易 debug, 一般大概也會需要用 ice。

bare metal 程式也是很難, 需要從開機程式開始撰寫,
如果 chip 廠商有給範例或是相關函釋庫, 也許會簡單一些。
但如果 c 基礎不夠, 可能有 bug 時, 不太容易找到問題。
會需要使用 ice 的經驗。

至於課本的演算法, 資料結構, 不能說不重要,
但可以從基本先熟悉, 不用著急學比較難的,
例如 queue, linked list, 基本 tree,
avl tree, rbtree 可以先緩點。


※ 引述《womandrift (瑪莉)》之銘言:
: 小魯本科學碩,在IC Design House寫過幾年FW
: 分享自己的經驗以及一點淺見
: 要進這行的順序:
: 1. C練熟,至少要有大一計概與程設課程等級
: 具體目標是用C寫出八皇后、河內塔...等經典問題
: 這個階段主要是讓你熟悉C語言
: 包括基本語法、編譯與執行的方式、如何Debug
: 還有最重要的: 撐過去並且願意繼續寫C
: 如果你遇到了一堆Segmentation Fault,或是各種Compile不過
: 上Stack Overflow也不見得可以在五分鐘之內就找到bug的解法
: 你依然願意繼續找下去依然不放棄這行
: 那你再往下看其他步驟,否則壓力只會更大
: 2. 修大學部的作業系統概論
: 目標就是跟著修完一學期的課就對了
: 無論是上開放式課程或是直接去學校旁聽都好
: 一定要跟著交作業/Project
: 如果跟著寫作業的話應該會更加熟悉C
: 以及遇到更多坑
: 我預期作業應該會讓你熟悉以下幾點操作
: a. 裝VM
: b. Linux File System
: c. Linux 內的基本Command,例如ls、cat、grep...
: d. 用gcc 寫/編譯 C code
: 所以要記得先完成第一點熟悉C到一定程度
: 否則這時候寫作業會有更多問題
: 更加複雜更不容易找到Solution
: 3. 修大學部的計算機架構/計算機結構 概論
: 課名上可能EE/CS 會有不同,但授課範圍都大同小異
: 目標一樣是修完大學Level一學期的課
: 一樣請跟著寫作業/Project
: 這堂課主要是對應到原Po提到的"硬體知識"
: 就是熟悉CPU的Cache、Write through/Write back、TLB...等等內容
: 我當年在修的時候有一部分會和OS的內容重疊
: 所以其實可以兩堂一起修,看你時間分配
: 另外這堂課作業也許會需要你寫Verilog
: 如果有遇到的話就跟著學,以後可以自己玩FPGA
: 4. 準備面試
: 網路上應該有相關的介紹
: 你在修完上述兩門課之後面試會問到的東西應該都看得懂了
: 或至少有基礎知識,要再繼續上Google查也會更有方向
: 我認為一般人要能面試進這行至少要完成上面4個步驟
: 當然如果你有任何特權 (身份/血統/...) 就可以無視
: 如果有錢有閒想再更進階的話可以再進修以下幾點
: 1. 嵌入式系統概論
: 我建議可以修個大學部的課
: 應該可以讓你compile kernel,熟悉一下kernel module、Makefile等等
: 當然你要自己買個板子來玩也是ok
: 反正就是熟悉以後的開發環境
: 2. Linux
: 就跟著鳥哥的課
: 有空就加減看一下練習練習
: 熟悉Linux環境跟Bash Script,以後上班會很好用
: 祝福原Po順利找到理想工作
: 我個人是不想繼續寫C 就是了XD

--
紙上得來終覺淺,絕知此事要躬行。

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.129.142 (臺灣)
PTT 網址