系统是如何知道 CPU 支持哪些频率并写入到 scaling available frequencies 配置文件中的呢?
如果我直接修改了 scaling available frequencies 文件是否会引起什么后果?
scaling available frequencies 是只读的吧。 cpu 可用频率存在于 bios acpi 的一个表中。 bios 上电以后会侦测 cpu 的类型,选择对应的可用频率表。所以很多老主板要支持新 cpu 一般都是需要刷 bios 的。内核在变频时把 cpu stats 作为索引选择表中的具体项。
那移动端的 SOC 是怎么处理的呢?
没做过移动设备的底层开发,但之前了解一点, ARM 有一个 device tree ,写在 firmware 或 uboot 上面,描述板子上的硬件配置,和 x86 的 acpi 差不多但简单很多,可以看内核 arch/arm/boot/dts 里面有一些直接支持的 cpu 的 device tree :
/*
* Device Tree Source for OMAP34xx/OMAP35xx SoC
*
* Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
*
* This file is licensed under the terms of the GNU General Public License
* version 2. This program is licensed "as is" without any warranty of any
* kind, whether express or implied.
*/
"omap3.dtsi"
/ {
cpus {
[email&{
/* OMAP343x/OMAP35xx variants OPP1-5 */
operating-points = <
/* kHz uV */
125000 975000
250000 1075000
500000 1200000
550000 1270000
600000 1350000
>;
clock-latency = <300000>; /* From legacy driver */
};
};
.........................
好像编译内核的时候会将这个文本描述编译成二进制文件,然后烧进去。具体可能要问问搞 BSP 的人
最后内核通过一套 OPP 接口来访问它。
还需要慢慢的来研究研究_(:з」∠)_