免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8429 | 回复: 17

嵌入式驱动开发流程 [复制链接]

论坛徽章:
0
发表于 2010-02-22 11:14 |显示全部楼层
学习嵌入式也有段时间了,也写了2个简单的驱动程序,但是对驱动开发还是没有一个清晰的脉络,哪位高人给讲讲,写一个驱动程序,应该怎么入手,比如说,先写什么,再写什么,有一个什么流程。
    谢谢!

论坛徽章:
0
发表于 2010-02-23 01:23 |显示全部楼层
没做过嵌入式的。
在X86下,一般的驱动写法都差不多。先写个最小的KERNEL MODULE. 然后加上设备初始化部分。然后再加上具体的I/O部分。每加一点就测试一下。反正我是这么写的。

论坛徽章:
0
发表于 2010-02-23 11:56 |显示全部楼层
嵌入式和 X86 应该是差不多的吧,反正都是 Linux,写法没什么两样……调试方法倒是可能不同……

论坛徽章:
0
发表于 2010-02-23 17:44 |显示全部楼层
这个...没有先写什么后写什么的问题

1.硬件最底层驱动

步骤一.
  理解硬件(功能、接口寄存器及CPU如何访问控制这些寄存器)
-->硬件层抽象(通常定义一些宏便于C语言访问)

步骤二.
   如果是在操作系统下访问,理解操作系统对驱动接口函数的要求(比如网卡驱动就要求理解操作系统协议栈访问你驱动的接口)
  如果不在操作系统下访问,自定义上层程序访问接口
  这一步还需要充分考虑你的驱动实体对操作系统或非操作系统的其他程序是否有负作用(比如中断响应时延、共享变量同步等等)以及如何避免或绕开这些负作用

步骤三.
   根据步骤二实现访问接口

步骤四.
   测试、重复步骤二到步骤四直到满意为止

2.中间层驱动

上述步骤二三四,还要考虑上下层的逻辑关系及合理性


呵呵,不是三言两语就能讲完的。
多看别人的代码,多做项目,自然而然就都清楚了

论坛徽章:
0
发表于 2010-02-24 11:19 |显示全部楼层
回复 4# readkernel


good!
如上面兄弟所言,很正确。
首先了解所需编写驱动的硬件设备的资源,再次在开发环境中进行交叉编译,最后拿到开发板上进行调试。

论坛徽章:
0
发表于 2010-02-24 20:35 |显示全部楼层
这个...没有先写什么后写什么的问题

1.硬件最底层驱动

步骤一.
  理解硬件(功能、接口寄存器及CPU如 ...
readkernel 发表于 2010-02-23 17:44



没做过这方面的实际开发. 现在觉得第一个大部分的思路分析的很清楚. 大侠能不能给共享一个具体的例子.
从datasheet到具体的实现?

论坛徽章:
0
发表于 2010-02-25 09:34 |显示全部楼层
回复 1# yel617


    想多了。工作后你会发现没有你需要架构的地方,现在多接触domain knowledge,多hack就行了。

论坛徽章:
0
发表于 2010-03-05 13:48 |显示全部楼层
不能沉下去啊
大家都给说说啊

论坛徽章:
0
发表于 2010-03-10 13:34 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
3
卯兔
日期:2013-08-26 22:14:57未羊
日期:2013-09-08 19:16:05未羊
日期:2014-10-23 10:34:12
发表于 2010-03-10 19:11 |显示全部楼层
第一步,把硬件接口的操作函数完成,与单片机的硬件接口调用函数一样

第二步,设备结构体的定义(这里不是指cdev(字符设备驱动要用)一类的,而是自己定义个一个结构体,除了包含cdev,还有其他一些结构,比如要用到内核定时器,需要声明一个timerlist,最好是放在设备结构体内部,这样使用起来会清晰很多)

第三步,就是完成系统调用接口函数最终调用的file_operations结构中的各个成员,比如read,write等的具体实现,并将其填充到file_operations中

第四步,设备初始化函数,包括硬件初始化,动态分配设备号,创建设备结点

第五步,模块接口处理(module_init/module_exit)

最后,Kconfig和Makefile

大致步骤是这样

这是最简单的字符设备

其他设备包含更多内容,比如设计DMA使用的,中断的;还有一些设备比如PCI,USB,协议比较复杂的,里边很多协议实现的代码,但是大致框架不变
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP