如何向瑞芯微平台添加驱动
- 驱动配置
- 驱动文件放置
- 配置相应的编译选项
- 与设备树结合
- 设备树配置
以avafpga视频驱动为例:
驱动配置
驱动文件放置
为了保证驱动文件能够被系统正确识别编译,需要将驱动文件的源文件avafpga.c放在./kernel/drivers/media/i2c/下
将驱动文件的头文件avafpga.h放在kernel/include/config/video/下,即使头文件是空文件也要创建。
配置相应的编译选项
以avafpga驱动为例,在配置文件kernel/drivers/media/i2c/Kconfig中加入“config VIDEO_AVAFPGA”,其中VIDEO代表属于与视频相关的驱动,AVAFPGA对应驱动的名称。
在kernel/drivers/media/i2c/Makefile文件中需要加入obj-$(CONFIG_VIDEO_AVAFPGA) += avafpga.o,表示VIDEO_AVAFPGA的驱动文件为avafpga.o文件,此文件后续系统会根据avafpga.c文件编译生成。
与设备树结合
此时会完成avafpga的驱动编译,然后还要将驱动文件和设备树结合,使得设备能够找到对应的驱动。
观察执行 ./build.sh kernel的输出,观察参与编译kernel配置文件
框中对应的文件都在kernel/arch/arm/configs/文件夹下,向对应的文件中加入 CONFIG_VIDEO_AVAFPGA=y
需要在kernel/arch/arm/configs/rv1126_defconfig文件中加入CONFIG_VIDEO_AVAFPGA=y,在kernel/arch/arm/configs/rv1126-facial-gate.config文件中也加入CONFIG_VIDEO_AVAFPGA=y,代表将驱动加入到设备树中。
设备树配置
按照设备树代码习惯,可以将avafpga驱动写成一个avafpga.dtsi文件,在需要用到的时候,在顶层的dts文件中include进来,方便管理和代码共用。
此时在设备树文件最外层执行./build.sh kernel,即可对内核进行编译,正确编译后会发现在. /kernel/drivers/media/i2c/下会产生avafpga.o文件。