Android 驱动编译为模块或者built-in内核

Android 驱动编译为模块或者built-in内核

  • 作者:吴思含(Witheart)
  • 更新时间:20250414

1. 模块化编译(生成独立KO文件)

1.1 驱动目录创建

在内核源码树中创建专用目录:

bash 复制代码
mkdir -p kernel/drivers/net/can/usb/${YOUR_DRIVER_DIR}/

注:建议选择合理的目录结构,通常位于对应子系统目录下

1.2 模块化编译配置

创建模块专用Makefile(路径示例):

makefile 复制代码
KERNEL_SRC = ${ANDROID_KERNEL_SOURCE_PATH}
EXTRA_CFLAGS += -I$(KERNEL_SRC)/drivers/net/can/usb/${YOUR_DRIVER_DIR}
obj-m += ${DRIVER_NAME}.o

all:
    $(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules

clean:
    $(MAKE) -C $(KERNEL_SRC) M=$(PWD) clean

1.3 交叉编译环境配置

bash 复制代码
export ARCH=${TARGET_ARCH}  # 如arm64
export CROSS_COMPILE=${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}- 
export PATH=$PATH:${TOOLCHAIN_PATH}/bin

1.4 执行模块编译

在驱动目录下运行:

bash 复制代码
make -j$(nproc)

生成产物:${DRIVER_NAME}.ko


2. 内核集成编译(直接编译进内核)

2.1 内核配置修改

添加Kconfig配置项:

kconfig 复制代码
# 文件位置参考:kernel/drivers/net/can/usb/Kconfig
config CAN_USB_${DRIVER_ID}
    tristate "${DRIVER_DESCRIPTION}"
    depends on USB
    help
        Driver support for ${DEVICE_DESCRIPTION}

2.2 构建系统集成

修改父目录Makefile:

makefile 复制代码
# 文件位置示例:kernel/drivers/net/can/usb/Makefile
obj-$(CONFIG_CAN_USB_${DRIVER_ID}) += ${YOUR_DRIVER_DIR}/

修改模块专用Makefile(路径示例):

makefile 复制代码
obj-$(CONFIG_CAN_USB_${DRIVER_ID}) += ${DRIVER_NAME}.o

2.3 内核编译配置

通过menuconfig启用驱动:

bash 复制代码
make menuconfig

配置路径示例:

复制代码
Device Drivers 
  → Network device support 
    → CAN 
      → USB CAN adapters 
        → <*> ${DRIVER_NAME}

2.4 整个系统编译

相关推荐
爱丶狸7 小时前
Grafana_Zabbix_ImageRenderer_部署与前端操作手册
linux·前端·zabbix·grafana·kylin
k4m7v2pz8 小时前
把 Bevy 0.14 游戏移植到 R36S 掌机:一场与“无窗口系统“的搏斗
linux·rust·bevy·r36s·rk3326·开源掌机
木子欢儿9 小时前
Intel 架构的 MacBook Pro 运行 Linux 发热量高解决
linux·运维·服务器
凌虚9 小时前
面向 MySQL 用户的 PostgreSQL 快速上手指南
数据库·后端·架构
五阿哥永琪10 小时前
MySQL中操作json的函数!
数据库·mysql·json
来者皆善10 小时前
了解Mysql优化吗?如何优化索引?
数据库·mysql
赤壁小虾12 小时前
【渲染流水线】[逐片元阶段]-[透明度测试]以UnityURP为例
java·前端·数据库
MC皮蛋侠客12 小时前
SQLAlchemy 系列(七):高级建模与高效写入——批量 DML、方言与扩展
数据库·python
会编程的土豆12 小时前
Go 模板初识
linux·运维·服务器
奈斯先生Vector13 小时前
把 Midjourney 二次编辑做成生产系统:customId 能力令牌、Action Graph 与 WebUI 精修工作台
数据库·人工智能·架构·aigc·音视频·midjourney