Firefly-RK3399第一个编译到内核的驱动程序编制
新建目录
在 kernel/drivers目录中,新建文件夹
mkdir zwwang
编写驱动程序 hello.c
在zwwang目录中新建hello.c文件
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/delay.h>
static int __init hello_init(void)
{
int i;
for(i=0;i<=10;i++)
{
printk("~~~~~~~~~~~~~~~~~~~~~~~~Hello world~~~~~~~~~~~~~~~~~~~~~~~~ %d\n",i);
mdelay(1000);
}
return 0;
}
static void __exit hello_exit(void)
{
printk("Exit Hello world\n");
}
subsys_initcall(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR("zwwang");
MODULE_DESCRIPTION("hello driver");
MODULE_LICENSE("GPL");
编写Makefile和Kconfig文件
在zwwang目录中新建两个文件
Makefile文件如下:
obj-$(CONFIG_HELLO) += hello.o
Kconfig文件如下:
config HELLO
tristate "Hello world for Firefly"
help
Hello for Firefly
在drivers目录下修改Makefile和Kconfig文件
在Makefile中增加
obj-y += zwwang/
在Kconfig中增加
source "drivers/zwwang/Kconfig"
配置环境
在kernel目录下执行
make menuconfig
选择需要编译的驱动程序
注:如出现“fatal error: curses.h: No such file or directory”,使用
sudo apt-get install libncurses5-dev
安装环境,后执行 make menuconfig
编译内核
在kernel 目录下执行
make ARCH=arm64 rk3399-firefly-linux.img -j8
执行
把编译完成后的kernel.img 通过内核升级工具拷贝至目标主机
结果
在系统启动时,有
“~~~~~~~~~~~~~~~~~~~~~~~~ Hello world ~~~~~~~~~~~~~~~~~~~~~~~~”
打印出来