看板 SuperTree
作者 dick51207 (dick51207.bbs@ptt.cc)
標題 Re: [請益] 韌體新鮮人請益
時間 2018年02月28日 Wed. PM 11:48:27


※ 本文轉寄自 dick51207.bbs@ptt.cc

看板 Soft_Job
作者 hizuki (入贅桧月家,我妻彩花)
標題 Re: [請益] 韌體新鮮人請益
時間 Wed Dec 20 10:10:10 2017


※ 引述《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來熟悉一下環境,再慢慢教授控制
別的晶片。我是不建議一開始兩個個項目同時進行的,會困擾的,
一個一個來比較好。而且也不符合以後的開發方式,多數的將來都是
只替換掉當中的一個而已。


--
你比較喜歡哪一個?
當年不是黨國大老但是被江浙財團捧紅的中國帥哥
跟同樣擁兵一方的諸侯約會裁軍結果半途諸侯們爽約,平常有在寫日記的莊嚴男人開始發飆
在旁邊讀著荒漠甘泉冷眼旁觀看著薔薇戰爭的人,為了中國的事情爭吵
別國調侃是不是中國總統,義正詞嚴的說著我是民族的燈塔的威嚴老先生

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 103.29.142.67
※ 文章代碼(AID): #1QESQ6a7 (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1513735814.A.907.html
※ 同主題文章:
Re: [請益] 韌體新鮮人請益
02-28 23:48 dick51207
※ 編輯: hizuki (103.29.142.67), 12/20/2017 10:16:17
Severus5566: 感謝大大回應 看來關於MCU我什麼都不懂 所以希望有沒1F 12/20 10:43
加油吧,這行其實很簡單的。多問就好了。
Severus5566: 有推薦的工具書可以讓我快速上手的 畢竟不能一直追著別人問2F 12/20 10:46
工具書我要去找,而且可能我只有全英文的。不過我看您需要跑一個專案來熟悉流程,
不然您看書後會覺得一頭霧水,不知道有什麼用。也麻煩您多看幾遍我的上面的說明。
※ 編輯: hizuki (103.29.142.67), 12/20/2017 10:49:17
frank010180: 推好文分享4F 12/20 13:42

--
dick51207: Re: [請益] 韌體新鮮人請益 - SuperTree板