2 votos

¿Cómo se formulan las frecuencias SetCPU?

¿Son las frecuencias sugeridas por SetCPU para cada dispositivo en función de un algoritmo determinado, ¿se elaboraron específicamente para cada dispositivo o se formaron arbitrariamente a partir de pruebas exhaustivas?

Tengo un viejo HTC Wildfire que tiene una frecuencia máxima a 768MHz

Los pasos de frecuencias mostrados por el propio SetCPU son 176,264,352,518,576,614,633,652,672,691,710,729,748,768 todo en MHz .

Al final creé un setcpu.txt que puse en root de la tarjeta SD. El caso es que cuando tenía una frecuencia de 800MHz SetCPU todavía lo leía pero la frecuencia máxima que obviamente podía tocar era 768MHz .

Repito, mi pregunta es cómo son las frecuencias enumeradas por SetCPU ¿formulada?

4voto

Nick Pierpoint Puntos 7976

La respuesta está en la fuente del kernel de ese HTC Wildfire - mira en arch/arm/mach-msm/acpuclock.c para ver la tabla de las frecuencias aceptadas. Dado que el WildFire se basa en el chipset MSM-7x25, a continuación se muestra un extracto de la tabla de frecuencias codificadas, suponiendo que se trata de 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} }
};
  • Primera columna, indica que la frecuencia se puede escalar, si es un 1 allí, que la frecuencia del chipset se puede escalar hacia arriba o hacia abajo, pensar en aumentar la CPU cuando se ejecuta una aplicación que consume mucho procesador y eso lo hace el kernel dinámicamente dentro de los límites de un umbral seguro sin quemar el chipset. - tenga en cuenta: ¡¡¡¡¡¡Esto es sólo para el núcleo de usar, más adelante en la respuesta, que muestra la tabla de overclocking, que es "usuario final" responsabilidad - no el kernel!!!!!!
  • Segunda columna, la frecuencia normal en KHz dictada por lo que creo que se llama el a11 reloj (en algún lugar de las entrañas del propio chipset)
  • Tercera columna, no exactamente seguro, pero es específicamente relacionados con chipset en sí
  • Cuarta columna, el selector utilizado para el ajuste de la frecuencia normal
  • Quinta columna, el divisor utilizado para el ajuste de frecuencia normal
  • Sexta columna, la frecuencia de overclocking en KHz
  • Séptima columna, el selector de frecuencia de overclocking
  • Octava columna, el divisor utilizado para el ajuste de la frecuencia de overclocking
  • Novena columna, tampoco estoy seguro de lo que significa

De hecho, se utilizan 12 campos, los campos restantes se rellenan al arrancar el kernel, quizás añadiendo protecciones y asegurando que los valores conservados no se anulan explícitamente, un "gate-keeper" si quieres, sigue leyendo...

Más adelante en la fuente, suele haber unas frecuencias de overclocking conservadoras (las comunes MSM-7x 01 / 25 / 27 ) lo soportan), de nuevo el mismo diseño que los "valores conservadores" resaltados anteriormente, observe que cada una de las frecuencias puede ser aumentada/disminuida 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 dependiendo del chipset, sólo se especifica el máximo, y es reforzado por el kernel (en el resto de los campos del registro que el kernel lee y lo procesa - ¡como se mencionó anteriormente!)

Finalmente he creado un archivo setcpu.txt que puse en root de la Tarjeta SD. La cosa es que cuando tenía una frecuencia de 800MHz SetCPU todavía lo leía pero la frecuencia máxima que podía tocar obviamente era 768MHz.

Por eso nunca se puede sobrepasar el máximo dictado, como en el caso del OP, ¡para evitar daños térmicos en el chipset y la frecuencia de reloj!

Reinicios aleatorios, congelaciones aleatorias, sobrecalentamiento de la batería más rápido de lo normal (normal como dentro del umbral regulado de frecuencia de reloj de la CPU) son todos síntomas de un chipset overclockeado.

Este es un gran indicio cuando alguien pregunta sobre reinicios aleatorios pero no dice que probablemente está overclockeado.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X