这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » ARM——linux驱动开发总结

共3条 1/1 1 跳转至

ARM——linux驱动开发总结

专家
2015-05-24 23:16:22     打赏

    最近下定决心要重新深入的研究armlinux驱动开发,将学习笔记记录留给网友,欢迎共同讨论学习。

    有些可能认知错误,希望高手给予纠正。

 第一篇Linux驱动基础--------2楼

  




关键词: ARM-linux     驱动开发    

专家
2015-05-24 23:18:33     打赏
2楼

 

  第一篇Linux驱动基础

linux驱动是一种辛苦和复杂的工作,驱动作为硬件和应用程序的连接,在嵌入式的操作系统开发中起到重要的作用,首先从构架和分类来看下驱动的构架。

 

字符设备特点

以字节为单位进行读写,也就是一次传送一个字节。

至少需要open closereadwrite进行系统的调用。

只能顺序访问数据通道,但是framebuffer类的设备中,应用程序可以通过位置重定义进行特定位置数据的读取。

      应用程序通过/dev下的文件系统结点来访问字符设备,比如访问串口0对应的驱动设备 /dev/ttySAC0,访问自己写的驱动程序/dev/xxx

        块设备特点

         数据已块的形式进行存放,大小确定,如16k  32k等。

         应用程序也是通过open closereadwrite进行系统调用。

        块设备和字符设备的区别:内核管理数据的方式不同。

        块设备驱动程序必须向内核文件系统提供专用的接口,这样接口可以使在块设备中存放的文件系统,挂载块设备。比如armlinux系统访问一U盘、TF卡等,都需要一个mount操作。

网络设备

传送的数据是有结构的, 成块的,但是块大小不固定,有结构定义。

任何一个网络通讯都需要一个网络接口进行数据传输。

一个网络接口负责数据的发送和接收。

内核通过调用一套和数据包传送相关函数进行数据传送。

在前期开发中,驱动以模块的形式进行存储,后期稳定之后将驱动打包到内核。

   驱动加载的方法通常有insmod/modprobe例如   insmod ./xxx.o

而卸载则用rmmod进行。

__init   生命之后的函数只用于加载和卸载的时候,其他的时候不进行操作。初始化加载完之后,可将该函数占用的内存释放。

__exit

insmod ./xxx.o   rmmod xxx    2.6.29之后

lsmod|grep xxx

在驱动中,常用static对函数进行修饰,static int xxx:为了说明xxx函数只在当前函数中使用

驱动不是进程,也不是线程,是内核函数的一部分,是线程的一部分。

对于嵌入式的驱动,一般是用来驱动硬件来完成某种功能。

 

关于如何在ubuntu12.0432位系统中进行linxu驱动的开发,请看该帖子

http://www.eepw.com.cn/article/264572.htm

 


专家
2017-04-04 09:08:59     打赏
3楼
谢谢楼主分享经验。

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]