我正在尝试创建一个通用的时钟框架设备驱动程序。我的测试环境是一个树莓Pi 3连接到一个eval板上,上面有时钟芯片(通过I2C)。现在,我只是试图了解设备树,并找出如何修改它包括一个现有的时钟驱动程序(即使该时钟实际上没有连接)。特别是,我计划在设备树中添加一个Si570芯片,看看我是否可以查看日志,看看它是否在引导时正确加载(从drivers/clk/clk-Si570.c)。
我已经成功地构建了一个新的Raspbian内核并部署了它(4.4.16-v7)。(顺便说一下,这是我第一次编译内核)。现在我试图使用“make menuconfig”来启用公共时钟框架,但是我看不到这个选项。
从网上看,似乎共因失效在Raspbian上得到了支持。不过,我不是很乐观。我曾经在menuconfig中搜索公共时钟。它有一个“selected by”行,而不是依赖于。那条线太长了,不能放在屏幕上,所以被切断了。因为我在PI/ARM上,所以它有诸如“X86_INTEL_QUARK[=n]&&X86_32[=n]&&X86_EXTENDED_PLATFORM[=y]&&X86_PLATFORM_DEVICES[=y]…”这样的子句,所以我不确定如何解释这一行。
而且,Raspbian内核构建的.config文件中甚至没有config_COMMON_CLK=n;COMMON_CLK不会出现在文件的任何地方。
所以我有两个问题:
共因基金是否得到了拉斯宾的支持?
我还可以使用哪些其他技术来找出为什么在menuconfig中没有出现Drivers>Common Clock Framework?
更新
通用时钟框架确实适用于覆盆子Pi。请看我的另一篇文章:
Hello World for Common Clock Framework on Raspberry PI

最佳答案

答案
首先,使用make menuconfig是个不错的主意。不用担心这行太长-只要用键盘上的右箭头向右滚动就行了。不过,你并不真的需要这些,因为最重要的是:

Symbol: COMMON_CLK [=y]

如果显示“=y”,则它处于打开状态。如果您使用bcm2709_defconfig(对于RaspberryPi 3应该使用该选项),则默认情况下此选项设置为y。
更多细节
取决于选择的vs
你把那两个搞混了。Depends on,顾名思义,描述了此选项的依赖关系。这意味着必须满足所有这些依赖项,否则根本无法设置此选项。COMMON_CLK没有任何依赖项。
Selected by,另一方面,意味着如果满足条件,将自动选择此选项。在COMMON_CLK的情况下,条件相当复杂,但它是由大量的or表达式组成的。我们只需要找到我们感兴趣的表达方式。你从左到右很快就会发现:
ARCH_BCM2709 [=y] && <choice>

(与RPi0/1的类似ARCH_BCM2708变体)。因此,这意味着如果设置了ARCH_BCM2709,我们的选项将被自动选中(=y表示它确实是)。这里有一个奇怪的&& <choice>实际上是一个伪影,它是由ARCH_BCM2709位于一个未命名的choice块中造成的,这意味着只能选择一个架构。
为什么在menuconfig中找不到公共时钟
并非所有选项都在menuconfig(或任何其他用于内核配置的“gui”)中可见。选项可能不可见的一个原因是它的依赖项不满足。另一种情况是,COMMON_CLK的情况是选项不是设计为用户可选择的,因此它没有“提示值”。在这种情况下,只有满足“selectby:”表达式时,才能选择该选项。
X86_英特尔夸克混淆
您在这里粘贴的“Selected by”行表明您没有正确使用“make menuconfig”。因为您试图为非默认体系结构(X86)配置和构建内核,所以应该使用ARCH=arm来表示这一点。就这样跑:
make ARCH=arm menuconfig

07-24 09:35