手机排版,请见谅
一般来说 刚拿到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档引用来的