学会linux驱动程序的步骤

第一步:建立     Linux   驱动的骨架

linux内核使用驱动时候,需要先初始化,包括建立设备文件,分配内存地址空间等,退出的时候要释放资源,删除设备文件,释放内存地址空间等。所以在linux驱动中需要提供两个函数来分别处理驱动初始化和退出的工作,这两个函数分别用module_init和module_exit宏来指定,linux驱动一般都需要指定这两个函数,所以linux驱动有一个C文件,文件中包含处理驱动初始化和退出的函数,以及指定这两个函数的module_init和module_exit宏.

 学会linux驱动程序的步骤_设计制作_MEMS/传感技术

第二步:注册和注销设备文件

任何一个驱动都有设备文件,     mi   sc_regis     te   r,misc_deregister

第三步:指定与驱动相关的信息

驱动程序带自描述内容,比如用modinfo可以获取包括作者名称,版本号等等,有MODULE_AUTHOR,MODULE_LICENSE,MODULE_ALIAS,MODULE_DESCRIP     TI   ON等宏

第四步:指定回调函数

linux驱动的各个动作也可称为事件,这些时间就有相应的回调函数,

第五步:编写功能逻辑

编写程序,来实现该驱动所要求达到的功能,可以由多个函数/多个文件/甚至多个模块组成

第六步:编写Makefile

一个新的驱动程序必须要有一个Makefile,obj-m表示将驱动作为模块编译,obj-y则表示将驱动编译进内核,

echo 'obj-m := led.o' > Makefile

上句表示新建一个Makefile文件,文件中只有一个话:obj-m := led.o

该句表示用make指令编译时,会将源代码目录中的led.c或led.s文件编译成led.o文件,并且led.o会被编译进led.ko文件,然后使用insmod或modprobe命令来装载led.ko.如果使用的不是obj-m,而是obj-y,则led.o将会被编译进build-in.o,最终被连接进内核。build-in.o是连接同一类程序的.o文件生产的中间目标文件。make menuconfig可以配置是否最终编译进内核。

如果驱动依赖其他程序,如process.c,data.c,则Makefile需要按如下写:

obj-m := led.o

led-y := process.o data.o

依赖文件由module-y或module-objs决定,module就是指led。

第七步:编译驱动程序

可以直接将驱动编译进内核,也可以作为模块单独编译

第八步:安装/卸载驱动

将驱动编译进内核,则只要linux使用该内核,则驱动将自动加载。如果不编译进内核,而是以模块存在,在需要使用insmod或modprobe命令来装载驱动模块,用rmmod命令来卸载驱动模块。



6
46
0
26

相关资讯

  1. 1、Amass连接器的工作原理,种类和发展历程介绍2412
  2. 2、小鱼易连发布全新会议MEII系列等全线新品,节约40%带宽资源857
  3. 3、DigiCert发布新物联网设备管理器,实现完整的端到端设备安全4255
  4. 4、腾讯云将推出新一代云服务器实例,计算性能大幅提升2500
  5. 5、圣泉集团打破国外垄断实现光刻胶材料国产化1697
  6. 6、人工智能对VPN技术的影响是什么?3704
  7. 7、竹间智能完成3000万美金B轮融资,多模态情感识别更懂人类193
  8. 8、三星三季度营业利润67亿美元同比下滑55.7%!4600
  9. 9、联通Q3财报:净利润98.23亿人民币,同比上升12%3416
  10. 10、智毅聚芯发布16bitDAC芯片产品,达到工业级应用标准3253
全部评论(0)
我也有话说
0
收藏
点赞
顶部