特别注意:以下所有操作必须再同一个终端命令行下进行。
在milk-v duo的SDK的目录下,按照如下步骤单步进行(预准备环境):
source build/cvisetup.sh
defconfig cv1800b_sophpi_duo_sd
build_all
然后在milk-v duo的SDK目录外,新建一个文件夹,例如命名为hello_module,进入hello_module文件夹;
创建一个hello_module.c文件,文件内容如下:
#include <linux/kernel.h>
#include <linux/module.h>static int __init hello_module_init(void)
{printk("Hello, Milk-V duo module is installed !\n");return 0;
}static void __exit hello_module_exit(void)
{printk("Good-bye, Milk-V duo module was removed!\n");
}module_init(hello_module_init);
module_exit(hello_module_exit);
MODULE_LICENSE("GPL");
然后再创建一个Makefile文件,文件内容如下(注:需要将第一行的SDK_DIR 变量换成自己实际目录):
SDK_DIR = /root/duo/cvi_mmf_sdk
KERN_DIR = $(SDK_DIR)/linux_5.10/build/cv1800b_sophpi_duo_sdall:make -C $(KERN_DIR) M=$(PWD) modules clean:make -C $(KERN_DIR) M=$(PWD) modules cleanrm -rf modules.orderobj-m += hello_module.o
最后输入:make命令,等待编译完成即可看到hello_module.ko文件;
输入:file hello_module.ko命令,可以看到如下信息(sha1可能不同):
hello_module.ko: ELF 64-bit LSB relocatable, UCB RISC-V, RVC, soft-float ABI, version 1 (SYSV), BuildID[sha1]=39f7273db7a2d530d9fdfe0fd77a802a5dd50267, not stripped
至此最简单的内核模块编译完成,可以下载到板子上,进行模块的安装或卸载。进行相关操作时,会看到对应的日志。
QQ:763314235,会在第一时间处理。