微软交流社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 124|回复: 4

如何进行驱动开发(一)

[复制链接]

3

主题

4

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2022-9-21 03:17:54 | 显示全部楼层 |阅读模式
笔者是一个毕业以后一直进行驱动开发的软件工程师。写这个文章的目的是为了记录软件工作中遇到的一些问题和思考,避免在后续的软件工作中犯相同的问题。
首先要进行驱动开发,那就要知道驱动是什么。笔者理解的驱动,就是芯片要运作起来,必须要依赖软件的一系列的配置,这一系列配置就是驱动。至于为什么需要驱动,能点开这篇文章的人应该都清楚。
       可能有些才开始接触底层开发的人员或者对这部分不太了解的人会认为驱动开发是个很高大上的职业。但笔者作为工作在基层的员工来说,大部分驱动开发并没有太多的技术含量。为什么这么说,原因如下:
       1、大部分功能是由芯片实现,驱动的作用主要是控制和初始化。大部分芯片驱动就是写这个,写完了芯片就能跑起来了。具体做什么业务再根据具体场景来进行控制配置,这就不是驱动的范围了。
       2、驱动开发是有套路的不管是用户态驱动还是内核态驱动,基本按照这个套路走,就不会有大问题。特别是初级用户态驱动,是一层很薄的软件,就像一个洋葱剥几层就看到最里面的东西,没太多技术。
       3、大部分驱动由于主要做控制和初始化,涉及不到复杂的算法,所以其实编码阶段大部分都不会太难。
       所以我感觉我上班的大部分时间其实是在搬砖,所以码农这个称呼其实也有一定道理      []~( ̄▽ ̄)~*。但是驱动为什么还是比较吸引人,还是因为驱动开发也有它自己的难点和魅力,我理解的驱动开发的难点(魅力)主要是集中在以下几点
       1、芯片需要跟软件一起完成的功能,也就是说整套功能流程需要软件和芯片紧密配合。这部分功能驱动是比较复杂的,会涉及到软硬件资源的保护,软硬件的交互效率等问题。
      2、内核态驱动与内核耦合,在出现异常后,如何定位是一个难点,特别是踩内存这种问题,或者出现了某种异常直接复位,无问题现场。这种问题分析是很难短时间内找到问题点的,必须要一步步抽丝剥茧。
以上主要是笔者对驱动开发的基本理解,难免会有些地方理解不够到位,如果出现理解不一致的情况欢迎一起交流探讨。后续会针对何如开发Linux驱动,以及开发中遇到的问题进行具体分析。
2018.9.13 更新
上面说的用户态驱动简单的2,3点原因,这部分写的比较片面,笔者当时了解的主要还是功能驱动的情况,其实还有很多像DPDK之类,有很多算法,以及性能优化的用户态驱动,所以还是要平时多思考,虽然当前的控制层面是比较薄,能不能在这个基础上精简,做出通用标杆的系统,也是一个很有追求的出路
回复

使用道具 举报

2

主题

5

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2022-9-21 03:18:18 | 显示全部楼层
会涉及到软硬件资源的保护,所以驱动智能由厂商开发?
回复

使用道具 举报

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-9-21 03:18:29 | 显示全部楼层
我有一个驱动的项目需要开发,有意向的私信我。
回复

使用道具 举报

1

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2022-9-21 03:19:23 | 显示全部楼层
请问一下作者, 对于同一个接口电路设备来说,裸机/Free-RTOS/Linux的设备驱动程序的关系可以这样理解吗? 裸机驱动程序=Free-RTOS驱动程序=用户态驱动   Linux驱动程序=内核态驱动程序
      我的问题背景是这样的:
      当前做了一个SD卡控制器硬件电路接口,但是需要把一些动作封装成一些API,也就是对应的驱动程序,对底层的寄存器进行读写。需要在RTOS下完成,那么我是否可以像上面我所说的理解成一个裸机的设备驱动开发?
回复

使用道具 举报

2

主题

6

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2022-9-21 03:19:28 | 显示全部楼层
我对Free RTOS不太熟悉, 我稍微看过RT Thread的驱动,看上去和Linux内核驱动比较类似。我浅薄的理解这种轻量级的OS 也不用区分用户态和内核态了。我建议你重心放在功能抽象上,避免改来改去,影响系统稳定
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|微软交流社区

GMT+8, 2025-1-7 04:36 , Processed in 0.068890 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表