[請益] 1~3年韌體工程師求前輩指點

作者: zzss2003 (brotherD)   2019-01-22 14:12:27
嗨,今天大家過的好嗎。
小弟寫FW已經有一兩年了,大概了解這個領域的工作內容以及涉及的範圍。目前技術能力
卡在一個瓶頸,想上來請教各位大大該如何精進自己。
先說說我已具備的能力。
1.有辦法讀懂OS手冊,並正確使用該API。
花了兩個月把uC/OS-III的手冊看完一遍,且成功使用semaphore與message queue。有辦法
融會貫通手冊想要表達的觀念以及kernel的實作細節。但僅止於此,就是會用而已。
2.有辦法快速上手新的硬體,並寫出該硬體的driver。
3.其他抓硬體bug,用示波器...blabla的基本能力就不贅述了
目前欠缺的能力
1.物件導向的觀念
我發現我之前寫的code在亂寫,很像是把一堆東西東湊西湊然後混著用。我希望自己能寫
出具有模組化的程式碼,且有辦法在未來需要擴充的時候不用牽一髮而動全身。
上網查,如果在C語言加入物件導向的觀念,可以改善這部分(請幫舉證?),所以我最近試
著想要用C語言的角度了解、寫出物件導向的程式碼
但我找不到一本好的入門書,請各位網友建議,謝謝。
2.欠缺讀code的能力
當coder把user用不到的資訊全部放在header file,會讓user越讀越混亂。好的code應該
具有information hiding的特色(我自己說的),
我沒辦法在一堆混亂的資訊中過濾出有用的資訊,並且了解對方在寫什麼。看到會讓人誤
會的變數命名、沒有註解的function prototype、沒有意義的檔名以及沒有把每個file分
層的project,我真的必須要一直問對方才有辦法了解對方的邏輯。
我知道可以要求對方多加點註解,或者是要求改善他的寫法。但我相信我更應該做的是提
升自己的閱讀能力,而不是去要求別人。想請問這部分需要如何提升自己呢?
3.程式組織能力
這部分有一點抽象。比如在寫一支application,我可能會自定義很多型別(struct),但我
發現我有時候會搞錯各個成員(member)該擺放的位置,比如A結構的成員我可能會放到B結
構裡去,導致在寫struct of struct的時候會卡住。
常常搞混type的命名與identifier的命名。
拿int number做比喻好了,我們很清楚知道number的型別是int,但我有時候就會命名成相
反。該怎麼說呢,就是有點還沒辦法明確地分清楚各個struct要擔任的角色,以及type的
定義嗎?(我自己也不知道問題出在哪)
這部分我目前不知道該怎麼辦,感覺搞懂物件導向後有辦法改善? 還是看資料結構?(我買
來但都沒時間翻)
4.無法明確掌握自己該精進的方向
比如最近看到一個網址: https://www.state-machine.com/
它好像在提倡它的工具比RTOS好用,什麼framework還有state-machine的,還加上UML。
我腦袋就出現一堆問號,諸如:
什麼是UML?
在RTOS的環境下沒辦法寫state-machine嗎?
RTOS跟它的framework不能共存嗎?感覺是同一種東西啊!...blablabla
這些問題我也有上網google過,但也只能懂表面,沒辦法了解他們在幹嘛
希望有位好心的大大可以跟我聊一聊Q_Q讓我知道我目前在roadmap的哪裡,以及該怎麼前
進,謝謝!(如果打的很亂請見諒)
作者: kain777 (想妳在0:01分)   2019-01-22 14:21:00
你完全搞錯方向= =
作者: ggBird (ggBird)   2019-01-22 14:22:00
c的物件導向去看 linux碼, 一堆都是或是jserv有教學影片
作者: trink (逸)   2019-01-22 14:23:00
問題1~3,可以看clean code/clean architecture
作者: owenais   2019-01-22 14:29:00
了解設計模式,及多看code 會有幫助
作者: i386 (i386 cpu)   2019-01-22 14:39:00
第1點怪怪的,uC/OS-III需要自己實做semaphore和message queue? OS本身就有這功能吧
作者: LinuxKernel (Linus Torvalds)   2019-01-22 14:47:00
第一句聽到有點煩
作者: leonEEman (EE)   2019-01-22 14:54:00
你可以去問油土伯
作者: i386 (i386 cpu)   2019-01-22 14:54:00
讀code能力,除非自己有毅力去找open source的專案慢慢看裡面code, 不然就是接一堆幫人擦屁股的解軟體bug的工作來做韌體的話,建議你站穩一塊domain knowledge,ex:USB, TCP/IP,File system....這是做韌體最核心的價值
作者: loadingN (sarsaparilla)   2019-01-22 15:27:00
吃飽太閒可以去trace Linux kernel啊
作者: su27 (su27)   2019-01-22 15:35:00
1.的話就是指標+strict,就差不多能用了Struct
作者: ahlolha (啊囉哈)   2019-01-22 16:22:00
linux下面不同的subsystems很多都有搭物件導向寫法
作者: vul3kuo (Glory)   2019-01-22 16:25:00
C不是物件導向語言 不需要完全用物件導向硬要用C寫OO 可讀性會很差
作者: csfgsj (切割對半)   2019-01-22 16:39:00
FW code 扯進 OO 就完了
作者: xu3fu6xup6 (輪胎一枚)   2019-01-22 16:44:00
youtube搜尋你所不知道的c語言
作者: Hack (RYeh)   2019-01-22 17:22:00
寫FW談OO.. 是不是搞錯重點了
作者: azukikao (對大小金無欲無求....)   2019-01-22 17:28:00
整個linux kernel都很OO 可以去看看如何用C寫OO的資訊搭配kernel讀 認真看保證會有收穫
作者: ggBird (ggBird)   2019-01-22 17:44:00
看你是信 linux kernel 還是信不認識的鄉民
作者: i386 (i386 cpu)   2019-01-22 18:23:00
你的問題1,建議你找一段自己寫的程式然後把他畫成流程圖,看看這圖是不是很醜,是的話,請重畫出好看的圖,然後照圖的步驟去寫code問題1其實跟懂不懂物件導向關係不大
作者: PBDS (風城男子)   2019-01-22 18:42:00
其實韌體就只要做到,訊號進的來,資料出的去,工程師發大財!
作者: join183club (183club)   2019-01-22 23:08:00
可以說說你寫過那些driver嗎?
作者: since0258741 (回O憶)   2019-01-22 23:11:00
你不是夜市學店那一位嗎?電池沒做了?
作者: ohohohya (安安你好我草泥馬)   2019-01-22 23:21:00
來寫BIOS啊你講的這些來寫UEFI bios都有
作者: badyy (nick)   2019-01-23 00:02:00
拿現成BIOS/bootloader精進coding能力喔......XD ! 怎麼跟高級長官說的都不太一樣XD
作者: future314 (未來π)   2019-01-23 00:12:00
UEFI程式比較簡單環境也較單純 作為學C的OO其實還可以但是應用面很窄 還是直接學kernel或RTOS比較快
作者: badyy (nick)   2019-01-23 01:09:00
真的環境簡單XD OS BSOD,chip 莫名reset都算你的XD
作者: chuegou (chuegou)   2019-01-23 02:21:00
1. 21世紀C語言 / OOP in C可以拿來翻2. 資料流和領域知識可以輔助你更快進入狀況 就認真問吧4. 目的是要做啥?好維護?那還是選比較多人用的比較好
作者: aoqq12 (阿任)   2019-01-23 03:05:00
其實不是OO不好 是每個人寫的OO都不一樣寫久了就亂七八糟了在C++上已經有IDE幫你統一寫法 在C上各自發揮會用OO來寫code很好,但是如果四不像的OO簡直災難\Kernel code是一群高手的集散地,也一群人一直在修改公司的寫code 光是人力 時程問題就會讓你的code產生災難
作者: GTX9080 (你有Bootloader嗎)   2019-01-23 08:52:00
推訊號進的來,資料出的去XD
作者: askacis (ASKA)   2019-01-23 10:03:00
Linux kernel的code漂亮又洗煉,OO精神無所不在,不是mcu等級的code可以比的
作者: brianhsu (墳墓)   2019-01-23 12:22:00
Linux kernel 必看吧!
作者: DSB520 (Yankees and Sox)   2019-01-23 22:23:00
Linux kernel跟OO差的遠了 不是模組化就是OO勒
作者: usan (usan)   2019-01-24 20:18:00
不用急,多做幾件案子,從經驗中學習
作者: jeff12302000 (介甫)   2019-01-28 21:24:00
FW 有晶片容量限制......有時候你還得拋棄高階語言然後RTOS跟State-machine 根本兩碼子事情...你那句什麼意思我完全看不懂

Links booklink

Contact Us: admin [ a t ] ucptt.com