imx6嵌入式驱动入门
作者:互联网
第一个驱动
基于迅为imx6ull
驱动包含
头文件
驱动模块的入口和出口
声明信息
功能实现
代码实现
-
包含头文件
-
驱动模块的入口和出口
-
声明模块拥有开源许可
-
功能模块
#include <linux/init.h> //包含头文件 #include <linux/module.h> //包含初始化加载的头文件 static int hello_init(void) { printk("hello world \n"); return 0; } static void hello_exit(void) { printk("goodbye \n"); return 0; } module_init(hello_init); module_exit(hello_exit); MODULE_LICENSE("GPL");
编译驱动
- 把驱动编译成模块,然后使用命令把驱动加载到内核里面
- 直接把驱动编译到内核
步骤
-
先写makefile
-
obj-m +=demo1_helloworld.o KDIR=/home/taqiyya/linux_/linux-imx-rel_imx_4.1.15_2.1.0_ga PWD?=$(shell pwd) all: make -C $(KDIR) M=$(PWD) modules ~
-
然后编译就可以了
-
看来后面需要每天补一下makefile的语法了
-
-
编译驱动
- 内核源码先编译通过此段
- 编译驱动用的内核源码一定要和我们开发板上运行的内核镜像是一套
用vim打开目录的时候,会发现这里有个文件打开不是空白而是一个目录的形式。
-
加载驱动
-
insmod //加载驱动 rmmod //卸载驱动
-
实践
- 找驱动,源码有的话使用,没有的话就自己写
- 注意事项
- export ARCH=arm
- 注意事项
图形化配置
-
make menuconfig
-
进入界面
进入源码界面下
执行
$ make menuconfig
本质是在读取ARCH/$ARCH下的Kconfig 文件 -
界面里操作
搜索:用斜杠 “\”进行走索
用方向键去选择 -
配置驱动
- 在嵌入式开发中是要根据自己的需求去配置属于自己的驱动的,用menuconfig配置时,可以根据需要作出选择
驱动编译成模块
【M】
驱动编译到内核里面
【*】
不编译
【】 -
退出
- 下面一栏有提示
保存退出
不保存退出 -
相关文件
- linux开发中一直贯彻着一切接文件的概念,下面是配置时候用到的文件
Makefile
- 编译规则,make时候如何编译
Kconfig
- 内核配置选项,就是可以选择的目录菜单
.config
- 生成的配置选项,就是自己选择之后的内核
- 内核默认读取.config文件作为配置选项
- 不符合要求时候make menuconfiger 进行配置
arch/arm/config下面有很多配置文件,可以直接复制成.config
-
当保存menuconfig时候,linux会把左右的配置选项以宏定义的形式进行保存
-
标签:入门,make,配置,嵌入式,编译,内核,驱动,imx6,hello 来源: https://blog.csdn.net/qq_44600017/article/details/113240845