说明:本文以写一个hello驱动为例,演示移植驱动的过程,有需求的客户可参考此方法自行操作。 1. 进入源码的drivers目录下,并创建一个名为hello的目录:
2. 进入hello目录,创建hello.c:
在hello.c中写入如下内容:
程序含义:insmod驱动挂载时打印Hello world,rmmod驱动卸载时打印Goodbye world。 3. 在该文件夹下创建Kconfig,Makefile两个文件。
在Kconfig文件中写入如下内容:
表示如果使能了CONFIG_HAVE_HELLO在内核裁剪配置文件中,将显示hello drivers菜单,默认编译进内核: y:编译进内核 m:编译为模块.ko文件 n:表示不编译,未使能。
在Makefile文件中写入如下内容:
注意:宏定义的名字要和Kconfig中的一样。后面添加需要编译的文件名,因为内核会自动添加前缀CONFIG,所以我们这里也要在名字前面添加CONFIG_。表示CONFIG_HAVE_HELLO使能时,编译规则指定的文件为hello.c。 给添加的这三个文件权限:
4. 编辑drivers顶层的Kconfig,Makefile文件。
在Kconfig文件中写入如下内容:
如此一来,配置系统就会按照这个配置去解析hello文件夹下的Kconfig。 编辑Makefile:
在Makefile文件中写入如下内容:
这句话的作用是当CONFIG_HAVE_HELLO使能后,在哪里去找源文件。再结合hello文件下模块Makefile就形成了层次式Makefile。注意不要少了/ ,这里添加自定义文件夹的名字,表示把这个文件夹编译进内核。 5. 编译
编译完成后,即可在OK8MP-linux-kernel/drivers/hello目录下看到编译生成的驱动了:
6. 将hello.ko使用U盘或TF卡拷贝到开发板里进行验证:
由上述测试可看,hello.ko驱动可正常运行。 |
|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )
GMT+8, 2024-12-23 16:49
Powered by Discuz! X3.4
© 2001-2013 Comsenz Inc.