Re: [請益] 韌體新鮮人請益

作者: kjlopin (kjlopin)   2017-12-20 11:02:39
※ 引述《Severus5566 (正義 從天而降)》之銘言:
: 小弟學士社會新鮮人
: 應徵上一個寫韌體的職務
: 但大學只有學過C語言跟玩過一點Arduino
: 說來慚愧 自己不知道怎麼閱讀DataSheet
: 然後用韌體來控制硬體(寫C語言)
: 有爬文 好像控制暫存器還是記憶體位置?
: 懇請大大給點指點
: 可請寫韌體的前輩們給我開些書單 讓我工作之餘時能自己看
: 目前狀態:主管給我一些廠商的範例程式碼,可是韌體的函式庫裡面註解不多
: 所以讀起來很吃力,也不確定自己理解的是不是對的
: 就像是去GitHub挖一筆資料來看 但不知道有哪些函式可以應用
: 或是這些函式或變數從哪個H檔引用來的
要學韌體,主要就是動手做,如果有連動外部電路,光看程式碼沒用。
廠商的範例程式碼通常都有搭配開發板,如果整體範例不複雜,就先單步執行,
看暫存器值(旗標 Flag)的變化。了解為什麼這些Flag會被改變,這些改變又會
觸發什麼事件。
還有了解周邊電路在做啥。不要只會低頭寫程式,適時跟EE和ME交流,
知道他們在做什麼,且讓他們知道你會什麼,可以做什麼,什麼需要他們配合,
這樣如果出問題,你才有跟他們討論的籌碼。
再來是C語言。
寫韌體一定要學會用指標!!!
寫韌體一定要學會用指標!!!
寫韌體一定要學會用指標!!!
指標(Pointer)不但可以加快程式執行速度,也能節省佔存器和記憶體的空間。
尤其到後面寫大型專案,更是要節省佔存器和記憶體的使用。
最後是Arduino,這套件出來,說不上是好是壞。好處是它簡化學習韌體的流程,
套件接一接,簡單判斷式寫一寫,API呼叫一下,WOW,會動了耶~
可壞處也就在這裡,Arduino把佔存器設定簡單化,只要呼叫API就可以,但有
人就會以為,暫存器設定只要呼叫API就好,沒說這方法不好,我現在也這樣用
,但如果你不去了解這API做了啥,如去設定佔存器,是否會跟其他API衝突,
這樣出問題,你就無法去追根。
書單的話,去各大廠找他們的教育訓練資料還比較有用。
最後,為了你和以後接手的人著想,程式碼的註解一定要寫...
作者: twinkle38 (UgoU)   2017-12-20 11:09:00
為何指標是寫"index" instead of "pointer"?
作者: kjlopin (kjlopin)   2017-12-20 11:29:00
我習慣是用index,pointer才是對的,我改一下
作者: hizuki (ayaka)   2017-12-20 11:36:00
我覺得啊其實與其說pointer, MCU更需要reference因為多數平台上malloc都是廢的,有實現也分不出來多大東西
作者: kjlopin (kjlopin)   2017-12-20 11:47:00
用優化是可以釋出很多啦,但通常不會用,因為會有靈異事不知道你所指的reference是指什麼?
作者: hizuki (ayaka)   2017-12-20 12:23:00
c++引入的東西。非ARM的MCU跑去搞memory management真少
作者: kjlopin (kjlopin)   2017-12-20 13:19:00
ㄆ,因為不太需要,如果不用到RTOS系統,RAM會用多少大概都知道
作者: yamakazi (大安吳彥祖)   2017-12-20 13:21:00
reference是C++才有 但我看過的MCU FW幾乎都是C而不是C++
作者: hizuki (ayaka)   2017-12-20 13:49:00
我其實只是提概念而已,我早就不在這個領域了
作者: badyy (nick)   2017-12-20 17:05:00
"我早就不在這個領域了" XD
作者: cia1099 (阿兜啊)   2017-12-20 17:57:00
虛標準的用嘴巴寫code
作者: odahawk (羊皮狼)   2017-12-20 23:53:00
哦..."我早就不在這個領域了" XD
作者: hizuki (ayaka)   2017-12-21 01:18:00
討論語言設計有什麼好噓的,你說說看動態記憶體管理的用處
作者: tommie (tommy)   2017-12-22 08:47:00
mcu只有大多只有單核,某些情況下不要被中斷應該都還好因為大都自己排程XD
作者: james732 (好人超)   2017-12-22 21:36:00
指標會多透過一層間接取值又多佔一個位置耶…在嵌入式系統用粗暴的全域變數反而比較有效率又省空間(當然濫用全域變數搞成bug地獄這種問題就不用我說了)

Links booklink

Contact Us: admin [ a t ] ucptt.com