¿Las frecuencias sugeridas por SetCPU
para cada dispositivo se basan en un cierto algoritmo o se elaboró específicamente para el dispositivo o simplemente se formaron arbitrariamente luego de pruebas exhaustivas?
Tengo un viejo HTC Wildfire que tiene una frecuencia máxima en768MHz
Los pasos de frecuencias que muestra el propio SetCPU están 176,264,352,518,576,614,633,652,672,691,710,729,748,768
todos en formato MHz
.
Eventualmente creé un setcpu.txt
archivo que puse en la raíz de la tarjeta SD. La cosa es que cuando tenía una frecuencia de 800MHz
SetCPU
lectura, pero la frecuencia máxima que obviamente podía tocar era 768MHz
.
Repito, mi pregunta es ¿cómo se SetCPU
formulan las frecuencias enumeradas por?
La respuesta se encuentra en la fuente del kernel para ese HTC Wildfire: arch/arm/mach-msm/acpuclock.c
consulte la tabla de frecuencias aceptadas. Dado que el WildFire se basa en el conjunto de chips MSM-7x25, aquí está el extracto de la tabla de frecuencias codificada, asumiendo que es un teléfono GSM:
/* 7x01/7x25 normal with GSM capable modem */
static struct clkctl_acpu_speed pll0_245_pll1_768_pll2_1056[] = {
{ 0, 19200, ACPU_PLL_TCXO, 0, 0, 19200, 0, 0, 30720 },
{ 1, 122880, ACPU_PLL_0, 4, 1, 61440, 1, 3, 61440 },
{ 0, 128000, ACPU_PLL_1, 1, 5, 64000, 1, 3, 61440 },
{ 0, 176000, ACPU_PLL_2, 2, 5, 88000, 1, 3, 61440 },
{ 1, 245760, ACPU_PLL_0, 4, 0, 81920, 2, 4, 61440 },
{ 1, 256000, ACPU_PLL_1, 1, 2, 128000, 1, 5, 128000 },
{ 0, 352000, ACPU_PLL_2, 2, 2, 88000, 3, 5, 128000 },
{ 1, 384000, ACPU_PLL_1, 1, 1, 128000, 2, 6, 128000 },
{ 1, 528000, ACPU_PLL_2, 2, 1, 132000, 3, 7, 128000 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0}, {0, 0, 0} }
};
a11
reloj (en algún lugar dentro de las entrañas del conjunto de chips)De hecho, se utilizan 12 campos, los campos restantes se completan en el arranque del kernel, tal vez agregando guardias y asegurando que los valores conservados no se anulen explícitamente, un "guardián" si lo desea, siga leyendo. ..
Más adelante en la fuente, generalmente hay frecuencias de overclocking conservadoras (los conjuntos de chips comunes MSM - 7x 01/25/27 lo admiten ), nuevamente el mismo diseño que los "valores conservadores" como se destacó anteriormente, observe cada uno de las frecuencias se pueden escalar hacia arriba o hacia abajo para cada frecuencia de overclock . Así es como SetCPU puede ajustar esos valores, ya que tiene un 1 en la primera columna.
#ifndef CONFIG_MSM_CPU_FREQ_OVERCLOCK_AHB
/* Conservative AHB overclocking */
{ 0, 403200, ACPU_PLL_2, 2, 2, 134400, 2, 5, 122880 },
{ 1, 480000, ACPU_PLL_0, 4, 1, 160000, 2, 6, 122880 },
{ 1, 595200, ACPU_PLL_2, 2, 1, 198400, 2, 7, 122880 },
{ 1, 604800, ACPU_PLL_2, 2, 1, 201600, 2, 7, 200000 },
{ 1, 614400, ACPU_PLL_0, 4, 0, 204800, 2, 7, 200000 },
{ 1, 633600, ACPU_PLL_0, 4, 0, 211200, 2, 7, 200000 },
{ 1, 652800, ACPU_PLL_0, 4, 0, 217600, 2, 7, 200000 },
{ 1, 672000, ACPU_PLL_0, 4, 0, 224000, 2, 7, 200000 },
{ 1, 691200, ACPU_PLL_0, 4, 0, 230400, 2, 7, 200000 },
{ 1, 710400, ACPU_PLL_0, 4, 0, 236800, 2, 7, 200000 },
{ 1, 729600, ACPU_PLL_0, 4, 0, 243200, 2, 7, 200000 },
{ 1, 748800, ACPU_PLL_0, 4, 0, 249600, 2, 7, 200000 },
{ 1, 768000, ACPU_PLL_0, 4, 0, 256000, 2, 7, 200000 },
{ 1, 787200, ACPU_PLL_0, 4, 0, 262400, 2, 7, 200000 },
{ 1, 806400, ACPU_PLL_0, 4, 0, 268800, 2, 7, 200000 },
// { 1, 825600, ACPU_PLL_0, 4, 0, 275200, 2, 7, 200000 },
// { 1, 844800, ACPU_PLL_0, 4, 0, 281600, 2, 7, 200000 },
#else
/* Agressive AHB overclocking */
{ 0, 403200, ACPU_PLL_2, 2, 2, 201600, 1, 5, 200000 },
{ 1, 480000, ACPU_PLL_0, 4, 1, 240000, 1, 6, 200000 },
{ 1, 595200, ACPU_PLL_2, 2, 1, 297600, 1, 7, 200000 },
{ 1, 604800, ACPU_PLL_2, 2, 1, 302400, 1, 7, 200000 },
{ 1, 614400, ACPU_PLL_0, 4, 0, 307200, 1, 7, 200000 },
{ 1, 633600, ACPU_PLL_0, 4, 0, 316800, 1, 7, 200000 },
{ 1, 652800, ACPU_PLL_0, 4, 0, 326400, 1, 7, 200000 },
{ 1, 672000, ACPU_PLL_0, 4, 0, 336000, 1, 7, 200000 },
{ 1, 691200, ACPU_PLL_0, 4, 0, 345600, 1, 7, 200000 },
{ 1, 710400, ACPU_PLL_0, 4, 0, 355200, 1, 7, 200000 },
{ 1, 729600, ACPU_PLL_0, 4, 0, 364800, 1, 7, 200000 },
{ 1, 748800, ACPU_PLL_0, 4, 0, 374400, 1, 7, 200000 },
{ 1, 768000, ACPU_PLL_0, 4, 0, 384000, 1, 7, 200000 },
{ 1, 787200, ACPU_PLL_0, 4, 0, 393600, 1, 7, 200000 },
{ 1, 806400, ACPU_PLL_0, 4, 0, 403200, 1, 7, 200000 },
// { 1, 825600, ACPU_PLL_0, 4, 0, 412800, 1, 7, 200000 },
// { 1, 844800, ACPU_PLL_0, 4, 0, 422400, 1, 7, 200000 },
#endif /* CONFIG_MSM_CPU_FREQ_OVERCLOCK_AHB */
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0}, {0, 0, 0} }
};
Dependiendo de las búsquedas en la tabla y del conjunto de chips, solo se especifica el máximo y el kernel lo refuerza (en el resto de los campos del registro que el kernel lee y procesa, ¡como se mencionó anteriormente!)
Eventualmente creé un archivo setcpu.txt que puse en la raíz de la tarjeta SD. La cosa es que cuando tenía una frecuencia de 800 MHz, SetCPU todavía lo leía, pero la frecuencia máxima que obviamente podía tocar era 768 MHz.
¡Es por eso que nunca puede anular el máximo según lo dictado, como en el caso del OP, para evitar daños térmicos en el conjunto de chips y la frecuencia del reloj!
Los reinicios aleatorios, los bloqueos aleatorios, el sobrecalentamiento de la batería más rápido de lo normal (normal dentro del umbral de frecuencia de reloj de la CPU regulado) son síntomas de un conjunto de chips overclockeado.
¡Esta es una gran pista cuando alguien pregunta sobre reinicios aleatorios pero no dice que probablemente esté overclockeado!
Chahk
t0mm13b
acpuclock.c
en realidad está diseñado para conjuntos de chips Qualcomm, habrá variantes para conjuntos de chips ARMv7 comoacpuclock-7x30.c
,acpuclock--8x50a.c
o inclusoacpuclock-8x50.c
, estos son para Qualcomm conjuntos de chips, habrá variantes en los otros subdirectorios del kernel debajoarch/
, además, ¡para usar el overclocking se requiere root!