1、理顺思路
1.1 章节:在ubuntu上配置龙芯工具链和编译内核源码
1.2 章节: 将ubuntu和板子,在同一WiFi下进行连接
1.3 章节:将内核源码中开启的PWM在板子上进行同步更新
1.4 章节:简单理解驱动,会修改和编译即可(需要和测试文件搭配使用)
2、对简单驱动的理解
编写一个demo_drv.c
#include <linux/init.h>
#include <linux/module.h>static int demo_init(void)
{
printk(KERN_INFO "Demo module loaded\n");
return 0;
}static void demo_exit(void)
{
printk(KERN_INFO "Demo module unloaded\n");
}//下面3行(必选),括号中函数,需要自己写
module_init(demo_init);//进入函数--挂载
module_exit(demo_exit);//退出函数--卸载MODULE_LICENSE("GPL");//不用修改
//下面2行(可选)
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("A simple demo module");
3、使用makefile验证
编写一个Makefile
obj-m += demo_drv.o //demo_drv就是上面的.c文件通过内核编译生成的
KERNEL_DIR := /home/user/Desktop/linux-4.19/ //内核路径
ARCH = loongarch //龙芯架构
CROSS_COMPILE = loongarch-linux-gnu- //龙芯工具链
PWD ?= $(shell pwd) //当前路径--pwdall:
make -C $(KERNEL_DIR) M=$(PWD) modules //使用内核编译scp ./*.ko root@192.168.159.15:/home/root/app //传输文件到板子上
make clean //清除内核编译生成的其它文件clean:
make -C $(KERNEL_DIR) M=$(PWD) clean
rm -f *.o *.mod.c *.mod.o Module.symvers modules.order
下面是ubuntu执行make之后生成的效果
下面是ubuntu执行make之后,传输到板子上的效果
4、对ko文件执行的效果
两图打印的日志相同,符合要求。