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

现在的嵌入式芯片越来越多,从51、stm32、soc到gpu、fpga、dsp等专用芯片,基本上只要涉及到逻辑编程,就会涉及到驱动开发。但是什么是驱动开发,为什么要做驱动开发?不知道大家有没有考虑过?嵌入式开发有哪几种?怎么做嵌入式开发?

1、驱动是cpu和其他芯片交互的一种方法

在这里插入图片描述

不管是哪一种运算芯片,它如果需要和外面的其他芯片打交道,那么只能通过内部的ip core和外界进行通讯,没有其他的办法。外面的芯片可能是各种各样的类型,有存储的、有计算的、有网络的、有传感器的,那么这个时候就需要各种各样对应的ip core来与之通信。所谓的驱动,就是对ip core进行配置,使之可以正常地和外界进行数据的交互,仅此而已。

2、嵌入式驱动和操作系统的关系

本质上说,嵌入式驱动和操作系统没有一点点关系。比如说,一个i2c的存储芯片,可以在uboot下面写驱动,也可以在linux下面写驱动,同样也可以在android下面写驱动,甚至于不需要任何的平台,直接裸写驱动也是可以的。只不过各个平台为了自己的方便,把驱动中通过的代码抽象成了一个一个的框架,开发的同学只需要了解这个框架,做对应的代码适配就好了,无需重头开始写代码。

3、嵌入式驱动不一定都是内核层代码

很多同学都以为嵌入式驱动都是内核层代码,这也是不正确的。以linux系统为例,最初设计的时候,确实是想把大多数驱动都放在内核来做。但是到了android的时候,由于GPL协议的限制,很多厂家并不想把所有的驱动都开源出来,这就出现了一种情形,有的厂家把一部分驱动放在了内核层,一部分放在应用层。处于内核层的驱动代码就开源出来,而不想开源的代码就用动态库的方法提供给开发者。此外,还有一种驱动,就是纯应用层的。这一类的驱动包括串口RS232、以太网都属于这一类,比如gps、相机这一类设备的访问,就很大程度上依赖于厂家提供的sdk代码。

4、驱动的作用

很多同学都以为驱动只是把外界的设备添加到当前的平台中,其实不仅仅如此。如果用的好,驱动可以扮演很多的角色。比如说,对于一些手机拍照软件,完全可以把ddr的一部分内存预留出来,单独做成驱动给camera访问,这样做成buffer之后,可以供消费者快速浏览和处理图片使用。再比如,像zynq这样的arm+fpga集成soc,完全可以自定义ip core,把一些经典的算法设计成ip core,这个时候驱动的作用就不仅仅是驱动设备这么简单,而是说通过驱动实现协处理器的功能,加速代码的执行过程。

5、软件栈中驱动的角色

在这里插入图片描述

驱动在软件开发中的角色,就相当于人的各个感知器官和执行机构。cpu处理的数据再强,没有这些外部数据的输入,就没有办法感知这个世界。同样输出的结果,如果没有执行结构,同样也就没有办法带来任何的改变和效果。所以,driver就是一个承上启下的角色。对于使用者来说,怎么把嵌入式设备用到自己的业务场景和专业领域,这才是自己核心的竞争力。

6、写好驱动需要设计的几个知识点

写好驱动主要涉及到这几个方面,1)会读原理图,不会读原理图,不会量电压、测信号,什么也做不了;2)会读芯片手册,很多时候驱动只是把厂家的流程描绘成代码而已;3)会使用平台给出的驱动框架,不管是linux平台还是windows平台;4)会测试代码,很多时候测试完全靠自己,不可能依赖于别人来帮自己进行测试;5)这一点也是最难的,要充分发挥驱动的优势,寻找驱动可以充分发挥自己应用场景的地方,比前四点都要难。

总是,我们学习是为了应用,绝不是为了学习驱动而学习,怎么用起来才是最重要的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值