看板 Soft_Job 關於我們 聯絡資訊
※ 引述《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
csfgsj: gdb 沒用過,我都是用 12/06 17:30
csfgsj: printf("%s %d %s\n", _FILE_, _line_, _function_); 12/06 17:30
csfgsj: 對可疑的地方(source)做地毯式的狂轟濫炸 12/06 17:31
csfgsj: 我就不相信會炸不到Bug 12/06 17:31
csfgsj: Debug的小技巧很多,有機會下次再說吧 12/06 17:31
Deltaguita: printf...XD 12/06 17:45
amatt: 用printf是必須重新compile再跑,gdb是直接run time設一些 12/06 17:49
amatt: 斷點來觀察。 12/06 17:49
askacis: 每次看到 soc廠提給kernel tree的版本裡面一堆 bug 12/06 18:13
askacis: SOC後來修改過的新版卻不提交上去就覺得用到有問題版本 12/06 18:16
askacis: 的人很衰 12/06 18:16
Killercat: ...kernel debug怎麼會用printf(/facepalm) 12/06 19:44
SkyFluid: 用printf來debug?!?!? 12/06 19:49
shortoneal: 系統壞了,這些code都沒跑到,你看都沒印東西 12/06 20:23
askacis: 二樓大大明明在反串XD 12/06 21:11
Knudsen: vendor送upstream可能有很多故事 支援不好或有問題是 12/06 21:15
Knudsen: 很常見的事情 對upstream contributor也無可奈何 12/06 21:15
wesley234: gdb 的缺點是對環境的要求比較多 12/06 21:51
wesley234: 很多embedded 的環境無法使用 12/06 21:52
wesley234: 相對來說printf的條件單純多了 12/06 21:52
wesley234: 幾乎所有的平台都可以用 12/06 21:52
SuperTaco: 印象中 Linus 本人說過他只用 printk 來 debug XD 12/06 22:43
SuperTaco: 不過一般人畢竟不是天才,所以工具能用的還是用一下… 12/06 22:43
final01: 誰跟你linus只會printk... 12/06 23:28
Obama19: 樓上邏輯有問題? 只用不代表只會 12/07 01:29
IhateOGC: dmesg QQ 12/07 07:18
SuperTaco: http://goo.gl/pvfFYs 大概是這篇吧 不過15年前的 XD 12/07 09:48
comferret: printk... 12/08 14:25
csfgsj: #define printf printk 不就好了,小問題也在GGYY 12/08 19:56
csfgsj: 忘了說:我寫程式從來不檢查,都是讓Compiler幫我看 12/08 19:59
csfgsj: 業界跟學校不一樣,不要花精神在機器都可以代勞的事情上 12/08 20:02
csfgsj: 有參考資料、Google,我也從來不去背特別的語法與LIB 12/08 20:06
csfgsj: 效率是靠方法,不是苦力 12/08 20:06
csfgsj: 我始終覺得我們的學校教育的方式有問題 12/08 20:08
csfgsj: 所以學生好像只會當苦力 12/08 20:08
karamajean: 推用printf, 因為看老半天的code 也不曉得程式跑到那 12/20 20:20