完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
现在的嵌入式芯片越来越多,从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)这一点也是最难的,要充分发挥驱动的优势,寻找驱动可以充分发挥自己应用场景的地方,比前四点都要难。 总是,我们学习是为了应用,绝不是为了学习驱动而学习,怎么用起来才是最重要的。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS编译开发说明
504 浏览 0 评论
1100 浏览 1 评论
2933 浏览 0 评论
为了学习内核开发,大佬手搓了一个轻量级操作系统YiYiYa OS
2876 浏览 0 评论
1288 浏览 0 评论
【开源硬件大赛】基于全志V853设计的全功能BTB学习开发板
3450浏览 8评论
3102浏览 5评论
1876浏览 4评论
全志V85x硬件设计大赛作品精选第二期,快来Pick你心目中的最佳方案
88843浏览 3评论
3610浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 01:01 , Processed in 0.650594 second(s), Total 58, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号