3、milk-v duo(CV1800B,C906内核)编写一个最简单的内核模块(驱动)

特别注意:以下所有操作必须再同一个终端命令行下进行。

在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 
#include 

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_sd

all:
	make -C $(KERN_DIR) M=$(PWD) modules 

clean:
	make -C $(KERN_DIR) M=$(PWD) modules clean
	rm -rf modules.order

obj-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,会在第一时间处理。

你可能感兴趣的:(CV1800B,物联网,嵌入式硬件,linux,risc-v)