在 RISC-V Linux 内核中添加模块

在 RISC-V Linux 内核中添加模块

flyfish

本例以添加helloworld字符设备为例

一 源码配置

1 源码

源码文件helloworld.c拷贝到 drivers/char 目录中
源码主要是输出Hello world init

2 Kconfig

打开drivers/char 目录下的Kconfig文件
在 RISC-V Linux 内核中添加模块_第1张图片

在endmenu之前加上

config HELLOWORLD
    tristate "HELLOWORLD driver to output user messages"
    default n
    help
        I am here

3 makefile

打开drivers/char 目录下的makefile文件
最后加上

obj-$(CONFIG_HELLOWORLD)+= helloworld.o 

二 编译配置

在编译Linux内核文件时,先要配置.config文件。

命令说明

生成.config文件

make ARCH=riscv  defconfig 

修改配置

make ARCH=riscv    menuconfig 

将当前.config变成defconfg默认配置文件

make ARCH=riscv  savedefconfig

上述命令可以加上编译环境 CROSS_COMPILE=riscv64-linux-gnu-
例如

make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- defconfig

配置项的值有(星号、M、空) 三项,可以理解成(Y、M、N)三项
以下针对helloworld来说
Y: 编译时会将.c文件编译成.o文件并链接到内核
M: .o文件链接成模块。
N:就是不编译.文件
如果helloworld要编译就会在.config文件中看到

CONFIG_HELLOWORLD=y

配置方法

可以先用make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- defconfig

生成一个.config文件,然后执行命令make ARCH=riscv menuconfig修改
如果是buildroot中配置Linux内核可以执行命令 make linux-menuconfig
配置时出现如下界面
在 RISC-V Linux 内核中添加模块_第2张图片本例是字符设备
在 RISC-V Linux 内核中添加模块_第3张图片
可以看到我们的helloworld配置了在 RISC-V Linux 内核中添加模块_第4张图片生成镜像后启动
在 RISC-V Linux 内核中添加模块_第5张图片
命令参考

https://www.kernel.org/doc/makehelp.txt

你可能感兴趣的:(linux,risc-v,riscv)