作者:
esheep (^^)
2017-12-20 15:30:42手機排版,請見諒
一般來說 剛拿到IC的Demo Code 及 Spec, driver 部分的工作大致如下
1. 看Spec 的 IC arch.
重點在知道 這 IC 的主要功能及運作時
的control flow.
2. 看Spec 的 Register 描述
重點在初步釐清 這 IC 可以給你什麼?
以及 不能 給你什麼
3. 看Code IC init 部份
用Spec 中 IC initialization register 當
key words 去找Code,
重點在 call register 的順序,其次是參
數
4. 看Code data init 部份
一樣從 Spec 找key words,
這部分可能需要,也可能不用。
重點在 得知"何時"需重新做 “ 那些”
data init
5. 看Spec data部分時序圖
確認data 傳輸的限制及aligment
看 Code
常見是直接call bus APIs. 知道怎麼用
就行了,不用看進去
5. 看Spec Interrupt
這部分 Code 可能沒有或不完整
如果是 Linux kernel 做法都一樣,
google 一下就有了
重點:
1. 確認支援的interrupt mode
2. 確認是否需delay, pull H/L
這裡容易有 HW 整合的問題,
有問題建議直接找HW協助量訊號
6. 其他
suspend and resume etc.
這部分跟 你們的產品Spec 比較有關
知道 IC 在這些狀態下,對應的register
要怎麼設定就行了
結論:
一般 demo code 就只是把IC Spec 寫成code 而已,Code 本身不會有太多跟IC 功
能無關的軟體架構 或 演算法
I C 控制的code 也就這樣,剩下的就是一堆 Limitation, walk around , corner case
handle...
※ 引述《Severus5566 (正義 從天而降)》之銘言:
: 小弟學士社會新鮮人
: 應徵上一個寫韌體的職務
: 但大學只有學過C語言跟玩過一點Arduino
: 說來慚愧 自己不知道怎麼閱讀DataSheet
: 然後用韌體來控制硬體(寫C語言)
: 有爬文 好像控制暫存器還是記憶體位置?
: 懇請大大給點指點
: 可請寫韌體的前輩們給我開些書單 讓我工作之餘時能自己看
: 目前狀態:主管給我一些廠商的範例程式碼,可是韌體的函式庫裡面註解不多
: 所以讀起來很吃力,也不確定自己理解的是不是對的
: 就像是去GitHub挖一筆資料來看 但不知道有哪些函式可以應用
: 或是這些函式或變數從哪個H檔引用來的
作者: badyy (nick) 2017-12-20 17:07:00
最重要的不是記得下班前把bug清掉嗎??
作者: esheep (^^) 2017-12-20 19:50:00
IC control 很少有 bug. 大部分都在說服別人: 請接受 IClimitation
本公司沒有hw bug,只要sw有workaround的 就不是bug!
作者:
R119 (= =)
2017-12-20 23:11:00老闆:我不接受 workaround 但是 Issue 還是要 SW 解
作者:
YukiTW (ゆうき)
2017-12-21 10:18:00軟體要學會強調這不是 issue,而是 spec的說服功力
不是應該要把 issue 硬拗成 feature 嗎 XDD
作者:
yamakazi (大安吳彥祖)
2017-12-21 12:42:00limitation而不是issue 我遇過取樣頻率太低 ADC前沒做anti aliasing filter的硬體 發生aliasing之後叫sw想辦法濾掉高頻信號都aliasing變超低頻了 是要怎麼濾波
這看起來比較偏software... 韌體的話…調整硬體跟量測訊號是跑不掉的, 最後可能連QC跟機構的屎都跑不掉……………