5

全志V3S嵌入式驱动开发(驱动开发准备)

 1 year ago
source link: https://blog.csdn.net/feixiaoxing/article/details/130903184
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

全志V3S嵌入式驱动开发(驱动开发准备)

original.png
嵌入式-老费 newUpTime2.png 已于 2023-05-27 17:11:18 修改 articleReadEyes2.png 8

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        之前的文章都是教大家怎么搭建环境、看原理图、编译内核和根文件系统、做镜像,直到现在才进入驱动开发的主题。毕竟整个专栏的目的,还是希望大家能够学会驱动外部硬件。驱动好硬件,分成硬件和软件两个部分,硬件的部分比较好理解,就是看相关的信号有没有对接上即可,但是软件对接、甚至于怎么写软件,大家好像接触的比较少,所以这个时候,就可以简单讨论一下,怎么样才能写驱动代码。

1、了解外部驱动芯片手册

        所谓驱动,其实就是用soc里面的io控制器来驱动外部电路,或者说是外部芯片。如果是简单的io和uart这些,当然不需要知道驱动芯片的内容。但是如果驱动的是外部芯片,那么这个时候我们就要把对应芯片的资料找过来,好好读一读。里面协议的内容,就是我们将来编程的依据,

274644966316418f8cadf388bb9760e0.png

2、了解soc芯片手册

        了解外部芯片主要是解决发送内容的问题,而soc芯片则会告诉我们怎么发送这些内容。比如,它是iic接口,还是spi接口,还是普通的uart接口等等。这些内容,都可以通过soc的芯片手册找到,比如下面s3c2440中nandflash controller的介绍,

191066c1ada246a986f8d1212940ee24.png

3、os驱动框架的学习

        不同的os,它的驱动框架其实是不一样的。比如说,windows有windows的驱动框架,linux有linux的驱动框架,android系统甚至于把一部分驱动代码放到了应用层,这都是有可能的。所以,对于驱动工程师来说,如果需要编写驱动,那么要做的就是熟悉对应系统的驱动框架。一般来说,大部分驱动代码都是差不多的,没有必要从0开始写,可以找一个差不多的模板代码,根据芯片手册改一下内容,基本就可以用了。

4、熟悉os kernel API

        一般来说,编写驱动的时候,我们也会用到内核的API。比如说,需要申请内存,需要申请中断,需要访问io地址等等,这些操作都需要小心、谨慎地去做。因为,如果是上层去做开发,最多也就是程序闪退,出不了大错,但是底层驱动如果写错,会直接重启硬件,或者程序死锁,这些都是很常见的现象。所以在真正使用API的时候,一定要理解了之后再使用,驱动的一些故障、特别是一些低概率的故障还是比较难调试的。

5、适当编写上层代码

        驱动写好了,是需要搭配上层代码进行配套测试的。如果公司不是很大,这部分也是需要驱动工程师自己去完成的。另外从提高工作效率的角度来说,自己会写上层应用,也可以更好地发现问题、解决问题,省的拖到最后解决,只会让自己搞得措手不及。

注:
        上面说的都是软件的工作,有时候驱动工程师还需要自己量电压、测信号。不需要很懂,但是可以解决最低级的故障。根据2/8原则来说,我们会的硬件知识也许不多,但是掌握了常见的套路之后,它已经足够可以解决80%的问题。这样遇到难题,也不会受制于人,效率上不打折扣。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK