【发布时间】:2020-01-03 11:50:03
【问题描述】:
我们在一个 iMX 设备树文件的 i2c2 节点中定义了模拟视频在 adv7180 元数据硬件定义。最终目的是从 i2c2 总线识别 adv7180 驱动程序。
在处理器的引导过程中,使用 linux 映像进行了 I2C 的 defconfig 更改,第二个 I2C 总线未被识别。
以下是串行控制台打印语句:
U-Boot 2015.10+fslc+g1b6aee7 (Jan 16 2018 - 14:57:01 +0530)
CPU: Freescale i.MX6Q rev1.2 996 MHz (running at 792 MHz)
CPU: Automotive temperature grade (-40C to 125C) at 26C
Reset cause: POR
Board: MX6-SabreSD
I2C: ready
Line 129: i2c i2c-1: IMX I2C adapter registered //i2c-2 not registered??
Line 272 onwards: i2c /dev entries driver
IR NEC protocol handler initialized
IR RC5(x) protocol handler initialized
IR RC6 protocol handler initialized
IR JVC protocol handler initialized
IR Sony protocol handler initialized
IR RC5 (streamzap) protocol handler initialized
IR SANYO protocol handler initialized
IR MCE Keyboard/mouse protocol handler initialized
mxc_v4l2_output v4l2_out.28: V4L2 device registered as video16
mxc_v4l2_output v4l2_out.28: V4L2 device registered as video17
i2c-core: driver [mag3110] using legacy suspend method
i2c-core: driver [mag3110] using legacy resume method
我已经在我的 Yocto Built 的源目录中的 defconfig 文件中编写了这些额外的行。
CONFIG_IMX_HAVE_PLATFORM_IMX_I2C=y
# CONFIG_I2C_COMPAT is not set
CONFIG_I2C_CHARDEV=y
# CONFIG_I2C_HELPER_AUTO is not set
CONFIG_I2C_ALGOPCF=m
CONFIG_I2C_ALGOPCA=m
CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_IMX=y
CONFIG_I2C_MUX=y
CONFIG_I2C_MUX=y
我还检查了 Kconfig 文件,发现 i2c 驱动程序是从构建的 kernel-source 目录传递的。
我是否必须修改在我构建的 yocto 的路径 /home/fsl-community-bsp-myproject/build/tmp/work-shared/imx6qonlinepdd/kernel-source/drivers/i2c 中创建的 C 文件(驱动程序文件)?
子目录/drivers/media下竟然还有一个adv7180的C文件,可以修改吗?
【问题讨论】:
-
您似乎向内核传递了错误的 dtb(
mag3110正在通过 i2c、i2c-1 进行探测,但没有注册 i2c-2...)。你如何告诉 Yocto/U-Boot/kernel 使用你的 dtb? -
我已经在源目录的机器文件夹中声明了 .dtb 文件名。传递错误的 dtb 是什么意思?我在机器文件夹中提到了名称“imx6q-sabresd-ldo.dtb”。
-
我的意思是很有可能您没有将修改后的 dtb 传递给内核,而是将默认的 dtb 传递给内核。您可以粘贴这些配置及其路径吗?你没有对
whatever/build/tmp/work-shared/...做任何改变,不是吗?如果你是,你不应该。除非你确切地知道你在做什么。顾名思义,是一个临时 (tmp) 文件夹,更改可能会挥发。 -
你猜对了。我正在篡改tmp文件夹,并替换dts和dtsi文件以获取dtb文件中的一些更改,它可以识别一些驱动程序,但它不起作用。我什至尝试在/lib/modules/kernel 中查看modules.dep 文件,而我需要的驱动程序并没有写在这些文件中。
-
您应该在重新编译内核之前执行此操作。否则您的更改将不会被考虑在内。在
tmp中进行更改后,您也可以使用bitbake virtual/kernel -C compile。
标签: kernel yocto i2c u-boot kconfig