You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Yocto环境中快速构建单个驱动配方?

Yocto驱动开发快速构建优化方案

术语定义

  • 嵌入式机器:Yocto项目的目标设备
  • 主机:用于克隆Yocto项目、执行bitbake的桌面开发机器

当前开发流程

每次修改驱动后,执行以下步骤验证:

devtool build MyDriver
devtool deploy-target -Ss MyDriver root@<ip> # 嵌入式机器IP
ssh root@<ip>
insmod /lib/modules/<kernel_version>/MyDriver.ko
sleep 10
rmmod MyDriver
dmesg -t | tail

注:驱动已通过devtool add添加至<build>/sources/路径下。

问题痛点

devtool build MyDriver会触发整个Linux内核的全量构建,导致仅1000行左右的驱动编译耗时数分钟,效率极低。

优化方案

可以通过以下两种方式仅构建目标驱动配方,避免内核全量编译:

方案一:直接用bitbake单独构建驱动

利用devtool生成的临时配方,直接调用bitbake执行指定任务,跳过内核依赖的全量构建:

# 强制重新编译驱动
bitbake MyDriver -c compile -f
# 完成编译后执行安装打包(用于后续deploy-target)
bitbake MyDriver -c install -f

执行完成后,继续使用你原有的devtool deploy-target命令即可部署新编译的驱动。

方案二:进入构建目录直接调用oe_runmake

直接在Yocto的构建环境中编译驱动,步骤如下:

  1. 进入驱动的构建工作目录(替换<machine_arch>和<version>为实际值):
cd <build>/tmp/work/<machine_arch>/MyDriver/<version>/build
  1. 调用Yocto环境中的make命令编译:
oe_runmake

编译完成后,你可以手动将生成的MyDriver.ko通过scp拷贝到嵌入式机器:

scp MyDriver.ko root@<ip>:/lib/modules/<kernel_version>/

之后再执行原有的insmod、rmmod等验证步骤即可。

前置条件

确保已提前构建过内核头文件,避免编译驱动时触发内核构建:

bitbake linux-<your_kernel_name> -c headers_install

内容的提问来源于stack exchange,提问作者Adrian Maire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 22:57:13