当前位置: 首页> 娱乐> 明星 > 青岛市城乡和住房建设局_中国互联网协会理事长_中国数据网_中小企业管理培训课程

青岛市城乡和住房建设局_中国互联网协会理事长_中国数据网_中小企业管理培训课程

时间:2025/7/10 13:58:58来源:https://blog.csdn.net/v13111329954/article/details/146987333 浏览次数:1次
青岛市城乡和住房建设局_中国互联网协会理事长_中国数据网_中小企业管理培训课程

【系统移植】(六)第三方驱动移植

文章目录

  • 【系统移植】(六)第三方驱动移植
    • 1.编译驱动进内核
      • 方法一:编译makefile
      • 方法二:编译kconfig
      • 方法三:编译成模块
    • 2.字符设备框架

编译驱动进内核a.  选择驱动存放目录 (或任意目录。源码下的drivers/char目录,同时修改目录下的makefile)b.  改Makefilec.  改Kconfig  (界面可配置)编译驱动为独立的模块a. 配置为模块方式b. make modules 编译为模块c. 创建设备节点(应用访问驱动的入口)d. 运行测试驱动的应用程序

1.编译驱动进内核

一、驱动编译进内核Makefile1、首先找内核中是否已经支持设备的驱动  选配2、内核中没有的驱动移植进来 --第三方驱动移植将第三方驱动代码放到linux源码树中的driver目录中修改 Makefile Kconfig(界面配置) 修改过的和新添加的代码会重新编译程序需要在板子上运行 就需要使用交叉编译工具编译mknod /dev/led c或者b  主设备号  此设备号

方法一:编译makefile

  1. 选择驱动存放目录,源码下的drivers/char目录,同时修改目录下的makefile

image-20241221155810139

  1. 仿照其他文件的格式,编写同名文件的.o后缀

image-20241221160235703

  1. 回到源码顶层目录,执行make uImage编译内核

  2. 把生成的uImage传到开发板上面

image-20241221160736473

搞一个应用程序,测试这个LED点灯程序,Linux下一切皆文件,那么访问应用层访问底层的入口就是/dev/led文件image-20241221161011705

  1. 在开发板上生成这个设备号文件

image-20241221161329106

  1. 通过交叉编译,把应用程序发到板子上面运行监测即可

方法二:编译kconfig

由方法一可知,添加一个驱动还行,如果有n个呢?就很难维护。所以有了此方法

二、make menuconfig、Makefile、Kconfig、.config 三者的关系Makfile 具体编译文件Kconfig 选配,生成图形化界面,这个只是配置make menuconfig后的界面,具体编译模块还是看makefile在Kconfig中添加一个灯的选项界面修改好了, 还需要再次修改 Makfile[] 只有两种选项编译(y)或者不编译(n)  <> 三种选项 编译(y)、不编译(n)或者编译成模块(m)obj-y obj-n obj-$(CONFIG_XXX)	//编译,不编译,根据kconfig确定方便驱动管理

如何关联起来kconfig和makefile。(之前直接写的-y就写死了)

image-20241221165323969

方法三:编译成模块

之前编译的都是跟内核原本的驱动目录都在一块呢,如果我们写了很多驱动的话还是很乱,这个部分就是把自己写的驱动与Linux原本驱动分离开来。

这部分的内容放到Linux驱动里面讲,在这里不再详细展示。

换成tristate就可有三种模式选择,可编译不可编译,编译编译成模块

image-20241221172322382

2.字符设备框架

image-20241222105753981

关键字:青岛市城乡和住房建设局_中国互联网协会理事长_中国数据网_中小企业管理培训课程

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: