Re: [閒聊] Linux Kernel 開發者的生活

看板Soft_Job作者 (入贅桧月家,我妻彩花)時間8年前 (2015/12/06 14:46), 編輯推噓15(15021)
留言36則, 15人參與, 最新討論串7/7 (看更多)
※ 引述《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://www.ptt.cc/bbs/Soft_Job/M.1449384385.A.599.html

12/06 17:30, , 1F
gdb 沒用過,我都是用
12/06 17:30, 1F

12/06 17:30, , 2F
printf("%s %d %s\n", _FILE_, _line_, _function_);
12/06 17:30, 2F

12/06 17:31, , 3F
對可疑的地方(source)做地毯式的狂轟濫炸
12/06 17:31, 3F

12/06 17:31, , 4F
我就不相信會炸不到Bug
12/06 17:31, 4F

12/06 17:31, , 5F
Debug的小技巧很多,有機會下次再說吧
12/06 17:31, 5F

12/06 17:45, , 6F
printf...XD
12/06 17:45, 6F

12/06 17:49, , 7F
用printf是必須重新compile再跑,gdb是直接run time設一些
12/06 17:49, 7F

12/06 17:49, , 8F
斷點來觀察。
12/06 17:49, 8F

12/06 18:13, , 9F
每次看到 soc廠提給kernel tree的版本裡面一堆 bug
12/06 18:13, 9F

12/06 18:16, , 10F
SOC後來修改過的新版卻不提交上去就覺得用到有問題版本
12/06 18:16, 10F

12/06 18:16, , 11F
的人很衰
12/06 18:16, 11F

12/06 19:44, , 12F
...kernel debug怎麼會用printf(/facepalm)
12/06 19:44, 12F

12/06 19:49, , 13F
用printf來debug?!?!?
12/06 19:49, 13F

12/06 20:23, , 14F
系統壞了,這些code都沒跑到,你看都沒印東西
12/06 20:23, 14F

12/06 21:11, , 15F
二樓大大明明在反串XD
12/06 21:11, 15F

12/06 21:15, , 16F
vendor送upstream可能有很多故事 支援不好或有問題是
12/06 21:15, 16F

12/06 21:15, , 17F
很常見的事情 對upstream contributor也無可奈何
12/06 21:15, 17F

12/06 21:51, , 18F
gdb 的缺點是對環境的要求比較多
12/06 21:51, 18F

12/06 21:52, , 19F
很多embedded 的環境無法使用
12/06 21:52, 19F

12/06 21:52, , 20F
相對來說printf的條件單純多了
12/06 21:52, 20F

12/06 21:52, , 21F
幾乎所有的平台都可以用
12/06 21:52, 21F

12/06 22:43, , 22F
印象中 Linus 本人說過他只用 printk 來 debug XD
12/06 22:43, 22F

12/06 22:43, , 23F
不過一般人畢竟不是天才,所以工具能用的還是用一下…
12/06 22:43, 23F

12/06 23:28, , 24F
誰跟你linus只會printk...
12/06 23:28, 24F

12/07 01:29, , 25F
樓上邏輯有問題? 只用不代表只會
12/07 01:29, 25F

12/07 07:18, , 26F
dmesg QQ
12/07 07:18, 26F

12/07 09:48, , 27F
http://goo.gl/pvfFYs 大概是這篇吧 不過15年前的 XD
12/07 09:48, 27F

12/08 14:25, , 28F
printk...
12/08 14:25, 28F

12/08 19:56, , 29F
#define printf printk 不就好了,小問題也在GGYY
12/08 19:56, 29F

12/08 19:59, , 30F
忘了說:我寫程式從來不檢查,都是讓Compiler幫我看
12/08 19:59, 30F

12/08 20:02, , 31F
業界跟學校不一樣,不要花精神在機器都可以代勞的事情上
12/08 20:02, 31F

12/08 20:06, , 32F
有參考資料、Google,我也從來不去背特別的語法與LIB
12/08 20:06, 32F

12/08 20:06, , 33F
效率是靠方法,不是苦力
12/08 20:06, 33F

12/08 20:08, , 34F
我始終覺得我們的學校教育的方式有問題
12/08 20:08, 34F

12/08 20:08, , 35F
所以學生好像只會當苦力
12/08 20:08, 35F

12/20 20:20, , 36F
推用printf, 因為看老半天的code 也不曉得程式跑到那
12/20 20:20, 36F
文章代碼(AID): #1MOzd1MP (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1MOzd1MP (Soft_Job)