作者hizuki (入贅桧月家,我妻彩花)
看板Soft_Job
標題Re: [閒聊] Linux Kernel 開發者的生活
時間Sun Dec 6 14:46:09 2015
※ 引述《csfgsj (仙人異路)》之銘言:
: ※ 引述《askacis (ASKA)》之銘言:
: : 最近剛好在看這個問題,提供一點自身的經驗分享XD。
: : 說實在的,Embedded Linux做久了,有時候會不知道自己在寫程式還是在當柯南XD
小弟之前是做二次開發的,買回來core board(SoC + RAM + Storage)自己開發底板。
硬體故障最討厭了,比如有次我的老闆讓人手工焊接出了一個底板(當然PCB是工廠打樣的)。
一開始的時候連啟動開關都有問題,三次有一次boot mode不對,那位線路工程師永遠
都不知道究竟哪裡出問題了,反正就發回重焊。
後面就是USB出問題,實驗室的示波器採樣頻率太底,根本沒法用。反正最後又是發回
重焊。
幸好我沒用原本vendor給的的kernel,改用新的內核,支援dts,把mainline當中的dts改一下,
就可以用在新的base board上。內核開發是沒什麼問題了。
然而你不能指望每個driver都是正確的,就算是mainline的,可能出一個新SoC,上游更著update了,
這個上游還又可能是SoC廠商自己。不過這不能保證他們有在老平台測試過一遍。
我也因此提交兩個小patches被merge進去了。和上游溝通真的很麻煩,可能一周都沒人回信。
當然這不影響開發進度。
我還兼任userspace的開發,這就是另外一段故事了。
不過我因為開發的程度不深入,沒有使用過kgdb,我都是用dynmaic print來解決問題的。
我在學習的時候,上IRC請益debug的問題,被外國人虧幹嘛用那麼麻煩的工具,所以我到
現在還是不會用kgdb。
對我來說kernel driver沒有那麼可怕,反而bootloader和userspace的問題更多。尤其是bootloader,
現在有些vendor的1st bootloader, 2nd bootloader搞的很麻煩,還要數位簽名。我最怕去連
JTAG來debug了。
另外說一下,我的水準太糟,新的SoC platform必燒一次,而且經常是把USB port給燒壞掉。
小弟最近也是失業了,想去找一份embeded linux driver開發的工作,想請教各位前輩一下,
這行對電子學要求高嗎?不會要求我們同時畫電路吧?
之前做二次開發的時候,總是去麻煩電子工程師來解決問題:P
--
蒙上主眷顧的網路工程師
With the mercy of God, I am a network engineer.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.77.80.246
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1449384385.A.599.html
1F:推 csfgsj: gdb 沒用過,我都是用 12/06 17:30
2F:→ csfgsj: printf("%s %d %s\n", _FILE_, _line_, _function_); 12/06 17:30
3F:→ csfgsj: 對可疑的地方(source)做地毯式的狂轟濫炸 12/06 17:31
4F:→ csfgsj: 我就不相信會炸不到Bug 12/06 17:31
5F:→ csfgsj: Debug的小技巧很多,有機會下次再說吧 12/06 17:31
6F:→ Deltaguita: printf...XD 12/06 17:45
7F:推 amatt: 用printf是必須重新compile再跑,gdb是直接run time設一些 12/06 17:49
8F:→ amatt: 斷點來觀察。 12/06 17:49
9F:推 askacis: 每次看到 soc廠提給kernel tree的版本裡面一堆 bug 12/06 18:13
10F:推 askacis: SOC後來修改過的新版卻不提交上去就覺得用到有問題版本 12/06 18:16
11F:→ askacis: 的人很衰 12/06 18:16
12F:推 Killercat: ...kernel debug怎麼會用printf(/facepalm) 12/06 19:44
13F:推 SkyFluid: 用printf來debug?!?!? 12/06 19:49
14F:推 shortoneal: 系統壞了,這些code都沒跑到,你看都沒印東西 12/06 20:23
15F:推 askacis: 二樓大大明明在反串XD 12/06 21:11
16F:→ Knudsen: vendor送upstream可能有很多故事 支援不好或有問題是 12/06 21:15
17F:→ Knudsen: 很常見的事情 對upstream contributor也無可奈何 12/06 21:15
18F:推 wesley234: gdb 的缺點是對環境的要求比較多 12/06 21:51
19F:→ wesley234: 很多embedded 的環境無法使用 12/06 21:52
20F:→ wesley234: 相對來說printf的條件單純多了 12/06 21:52
21F:→ wesley234: 幾乎所有的平台都可以用 12/06 21:52
22F:推 SuperTaco: 印象中 Linus 本人說過他只用 printk 來 debug XD 12/06 22:43
23F:→ SuperTaco: 不過一般人畢竟不是天才,所以工具能用的還是用一下… 12/06 22:43
24F:→ final01: 誰跟你linus只會printk... 12/06 23:28
25F:→ Obama19: 樓上邏輯有問題? 只用不代表只會 12/07 01:29
26F:推 IhateOGC: dmesg QQ 12/07 07:18
28F:推 comferret: printk... 12/08 14:25
29F:推 csfgsj: #define printf printk 不就好了,小問題也在GGYY 12/08 19:56
30F:→ csfgsj: 忘了說:我寫程式從來不檢查,都是讓Compiler幫我看 12/08 19:59
31F:→ csfgsj: 業界跟學校不一樣,不要花精神在機器都可以代勞的事情上 12/08 20:02
32F:推 csfgsj: 有參考資料、Google,我也從來不去背特別的語法與LIB 12/08 20:06
33F:→ csfgsj: 效率是靠方法,不是苦力 12/08 20:06
34F:→ csfgsj: 我始終覺得我們的學校教育的方式有問題 12/08 20:08
35F:→ csfgsj: 所以學生好像只會當苦力 12/08 20:08
36F:推 karamajean: 推用printf, 因為看老半天的code 也不曉得程式跑到那 12/20 20:20