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

作者: hizuki (ayaka)   2017-12-20 10:10:10
※ 引述《Severus5566 (正義 從天而降)》之銘言:
: 小弟學士社會新鮮人
: 應徵上一個寫韌體的職務
: 但大學只有學過C語言跟玩過一點Arduino
: 說來慚愧 自己不知道怎麼閱讀DataSheet
: 然後用韌體來控制硬體(寫C語言)
: 有爬文 好像控制暫存器還是記憶體位置?
取決於平台,但是多數平台,尤其是流行的ARM,是控制記憶體。
但是,但是,雖然這麼說,實際上只是某個控制器的暫存器映射
到virtual address當中去而已。
然而所謂控制暫存器的場合,在後者平台也有,但是不是直接的。
比如說,一個外置晶片採用SPI介面和控制晶片,然後我要控制這個外置晶片
做什麼,就是寫指令到這個晶片當中的暫存器中。而且這種東西一般
是沒有辦法映射到virtual memory中的(PCI應該很少見吧)
: 懇請大大給點指點
: 可請寫韌體的前輩們給我開些書單 讓我工作之餘時能自己看
我不建議一開始就看晶片的Datasheet,因為您壓根不知道要做什麼。
我回答您第一個問題,關於控制暫存器還是記憶體當中某個位置,
說明您對電腦體系沒有個概念。不過也不要要緊,我這邊簡略說明
一下這項工作,希望對您有幫助。
我以控制MEMS傳感器為例子,您需要了解什麼呢?
1. 我的控制晶片如何和傳感器通信
2. 傳感器能提供何種資料?資料能表示什麼
先從問題一來,傳感器通信無非就是SPI, I2C兩種為主,還有一些
用signal bus或者採用ADC的可以等下再講。
那您就要去了解一下SPI和I2C協定的內容,是如何傳輸資料的。
當然不了解細節也是可以,因為項目一可是拆分成下面的細節:
1.1. 通信協定本身的資料傳輸方式,電氣與信號原理
1.2. 控制晶片上是否有提供符合這個協定的控制器?(多數有)
1.3. 如何操作控制晶片上的控制器?(多數都有提供API)
如果沒有遇到性能問題,或者通信障礙,多數只要了解1.3就可以了。
這個是多數工程師打交道的地方了。
現在我們來看項目二,例如一個速度傳感器,我要如何讀取速度
資料出來?
2.1 如何上電,初期化被控制晶片(例子中是個傳感器)
2.2 讀取某個方向的速度(一般有3個軸向的),需要讀取
那幾個暫存器?
2.3 傳感器上如果資料生成後存儲於何處?如何不漏地讀取資料?
2.1和2.2是比較需要看Datasheet,反正流程都差不多。
2.2無非就是看看Datasheet當中,如何換算一下讀出的數值到需求的
單位上,因為有的時候是把16bit資料拆成兩個8bit暫存器中去,
或者是把整數和小數點拆開之類的。或者需要利用某個暫存器中
表示的範圍進行換算。
2.3是比較需要關於程式的知識,大概就是需要了解一下FIFO和Interrupter
之類內容。
但是進行到項目二,您只是完成了主管的初期任務吧?重要的控制器
拿到傳感器傳輸的資料可以做什麼?這個就是專業領域的問題了。
可能要用傳感器的訊息控制電機,或者算出機構的姿態,從而
控制一下別的什麼設備。控制別的設備就有回到項目一和項目二了。
大概說明了一下工作內容,至於推薦圖書,我自己其實不是搞這個領域,
MCU沒有摸很多,我要找找合適的書推薦。最好請版上先進推薦。
: 目前狀態:主管給我一些廠商的範例程式碼,可是韌體的函式庫裡面註解不多
: 所以讀起來很吃力,也不確定自己理解的是不是對的
: 就像是去GitHub挖一筆資料來看 但不知道有哪些函式可以應用
: 或是這些函式或變數從哪個H檔引用來的
我不清楚您主管給的是控制晶片的資料,還是被控制晶片的資料。
如果是完全新人的話,一般來說給的都是控制晶片的資料,
然後讓人在評估板上run demo來熟悉一下環境,再慢慢教授控制
別的晶片。我是不建議一開始兩個個項目同時進行的,會困擾的,
一個一個來比較好。而且也不符合以後的開發方式,多數的將來都是
只替換掉當中的一個而已。
作者: Severus5566 (正義 從天而降)   2017-12-20 10:43:00
感謝大大回應 看來關於MCU我什麼都不懂 所以希望有沒有推薦的工具書可以讓我快速上手的 畢竟不能一直追著別人問
作者: frank010180 (量仔~)   2017-12-20 13:42:00
推好文分享

Links booklink

Contact Us: admin [ a t ] ucptt.com