在 RISC-V Linux 内核中添加模块
flyfish
本例以添加helloworld字符设备为例
一 源码配置
1 源码
源码文件helloworld.c拷贝到 drivers/char
目录中
源码主要是输出Hello world init
2 Kconfig
打开drivers/char
目录下的Kconfig文件
在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
配置时出现如下界面
本例是字符设备
可以看到我们的helloworld配置了生成镜像后启动
命令参考
https://www.kernel.org/doc/makehelp.txt