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

作者: womandrift (瑪莉)   2023-02-11 21:00:11
小魯本科學碩,在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
作者: testPtt (測試)   2023-02-11 21:29:00
開機程式好像都是C 不知道CPP能不能寫開機
作者: ming0071 (ming)   2023-02-11 21:30:00
其實想選韌體或嵌入式也是發現自己喜歡寫程式,但是非本科好像也就這個方向可以轉過取,不然感覺一直讀記憶體位置也是蠻單調枯燥的
作者: MoonCode (MoonCode)   2023-02-11 21:33:00
好奇寫FW好玩嗎 從來沒機會玩過個覺得可惜
作者: GoalBased (Artificail Intelligence)   2023-02-11 22:37:00
好人
作者: womandrift (瑪莉)   2023-02-11 22:37:00
非本科怎麼不寫SW,就不太需要知道HW的東西寫軟體才比較需要資結跟演算法想要寫程式不一定要寫C啊,有Python了何不繼續下去
作者: labbat (labbat)   2023-02-11 22:41:00
幹嘛限制在bash,高手都用tcsh和csh殼層做事情的
作者: shter (飛梭之影)   2023-02-11 23:58:00
只要能compile成組語/機械語言,沒有啥不能寫的現代語言都是A編譯B再編譯成C...問題是有沒有轉譯器
作者: alex70266 (小眼)   2023-02-12 00:14:00
其實你有興趣什麼都學一點也不會有什麼問題絕大部分的人都不是專點一兩項技能的我以前給人的建議都是A. 想走嵌入式,那弄塊可以跑linux的版子上面放自己編譯的web opensource service上去
作者: wulouise (在線上!=在電腦前)   2023-02-12 00:24:00
要用C++寫OS之前你先學一下rust
作者: alex70266 (小眼)   2023-02-12 00:25:00
這樣已經很有嵌入式工程師自幹風了 XDB.想要練寫C,那就試著用C重頭寫一個簡單的http server不難但是都需要讀一點東西,也有足夠菜鳥磨練的空間
作者: wei115 (ㄎㄎ)   2023-02-12 00:34:00
想學linux 感覺會更軟一點 不會像現在一堆時間都花在找硬體問題上面QQ
作者: ming0071 (ming)   2023-02-12 01:43:00
好的 感恩各位前輩的指導,目前看了下來感覺我應該也會想盡量避開受到硬體限制的問題,可能朝向嵌入式來做努力吧。不過要是沒辦法大概也是走向韌體了,最大的目標還是離開機構設備的框架
作者: alex70266 (小眼)   2023-02-12 02:25:00
我是會把演算法跟資結這種當成寫程式基本功。不要把自己的路設想的太死只有一個方向比較好依照我自己的經驗是做嵌入式系統什麼都要會一點,當然核心能力還是那些。但隨著soc能力越來越高,不代表不會在上面放高階語言的應用,越來越多上層程式需要開發在這些東西的時候,學過的東西越多看東西的角度越廣是越好。
作者: wilson6405 (KickAsson)   2023-02-12 11:13:00
推薦 Linux From Scratch
作者: shomingchang ( )   2023-02-12 11:19:00
寫SW啊會用glibc就很底層了
作者: odahawk (羊皮狼)   2023-02-13 09:20:00
我覺得再過幾年可能MCU上要跑Nodejs和SQLite了
作者: mirror0227 (鏡子)   2023-02-13 23:31:00
好文推
作者: ming0071 (ming)   2023-02-14 01:12:00
感謝上面幾位前輩的回覆,有得到一點方向了,打算修個作業系統的課先開始著手提到的不要受限只有一個方向也打破我一些鑽牛角尖的念頭,會再放開去了解更多東西的,非常感謝!!

Links booklink

Contact Us: admin [ a t ] ucptt.com