说明
平台:RK3399
板型:NanoPC-T4
Host:Ubuntu 16.04
Kernel:https://github.com/friendlyarm/kernel-rockchip
u-boot:https://github.com/friendlyarm/uboot-rockchip
本文档基于友善NanoPC-T4制作,主要是为了记录做Linux板级驱动全过程,以备忘。
创建soc目录
1、在drivers/soc
建立自己的板目录,在这里我创建venkeeboard
cd drivers/soc
mkdir venkeeboard
2、在drivers/soc/venkeeboard
目录建立自己的一个Kconfig
文件
cd venkeeboard
vi Kconfig
内容如下
#
# Machine drivers
#
if ARCH_ROCKCHIP
config MACH_VENKEEBOARD # 这个在编译dts时用到
bool "Venkee board Machine"
default y
endif
3、复制原厂的board.c
文件到drivers/soc/venkeeboard
目录
cp ../friendlyelec/board.c .
vi board.c
修改代码片段
static const struct of_device_id board_sys_of_match[] = {
{
.compatible = "venkee,board" }, // 设置自己的compatible,跟一会修改的dts的compatible保持一致
{
}
};
MODULE_DEVICE_TABLE(of, board_sys_of_match);
static struct platform_driver board_sys_driver = {
.probe = board_sys_probe,
.driver = {
.name = "venkee-board",
.of_match_table = board_sys_of_match,
},
};
static int __init board_sys_init(void)
{
return platform_driver_register(&board_sys_driver);
}
device_initcall(board_sys_init);
4、复制原厂的Makefile
文件到drivers/soc/venkeeboard
目录
cp ../friendlyelec/Makefile .
vi Makefile
内容修改为
obj-$(CONFIG_MACH_VENKEEBOARD) += board.o
5、修改drivers/soc
目录下的Kconfi