※ 引述《OPliao (OPman)》之銘言:
: ※ [本文轉錄自 Tech_Job 看板 #1OLtv-Fl ]
: 作者: OPliao (OPman) 看板: Tech_Job
: 標題: [請益] 研替 Linux/MCU
: 時間: Mon Dec 19 14:30:20 2016
: 各位前輩好
: 最近拿到兩個研替offer
: 兩間都是豬屎屋
: 一個會接觸到linux Kernel
: 一個是MCU相關
: 兩間薪水差不多 想請教走哪條路比較好?
: 有向學長詢問 他說選擇MCU就進入了 真●嵌入式領域
: 而且要跟Linux說掰掰
: 我考慮的點是Linux Kernel外面用得多,未來不怕沒地方去
: 但MCU台灣好像就幾間,不然就是外商(外商好,但沒打算出國工作
: 說錯請指正
: 有任何建議 分享 都相當感謝
: 也歡迎站內信討論~
: 補充
: 雖然知道Linux用在很多地方 但其實也沒有很清楚
: 可以的話請前輩們指引明燈~
: 謝謝
我覺得可以先從MCU下手在轉linux kernel。
好處是MCU架構相對支援linux的ARM A系列,或是mips到x86等CPU相對簡單很多很多,透
過JTAG配合簡單的程式碼,你可以很快熟悉CPU, 並列串列I/O (uart, i2c, spi, usb, p
cie等), timer,dma等基本功能,會看英文spec,設定register,並知道設定下去是在幹
麼,會對系統產生什麼影響。
甚至是可以自己設計memory lauout,自行安排text, bss, data等section(例如有大量快
速運算需求的section放在速度快的memory做系統最佳化)。或是會不會打包binary檔,bi
nary檔會不會加header,header format 是什麼,你程式碼該怎麼解header等等。
接著進一步移植RTOS上去(FreeRTOS,ucos等),你會知道primitive跟cocurrency 差別在
哪,什麼是queue, semaphore, mutex,或是context switch是怎麼處理的,然後進一步
對系統做穩定度與最佳化。
以上這些東西都是蹲馬步,馬步蹲完在去研究linux kernel 才會比較好上手,不然初學
者什麼都不會,就要去trace 好幾萬行程式碼的kernel,跟本瞎子摸象。摸到了一點皮毛
,會open ioctl /dev , /sys 就想一招打天下,但遇到booting hang,kernel panic 等
問題整個人掛在那裡,狂call FAE也求救無門。