Depuración de problemas del bus DDR

5

Tenemos un tablero SBC, al estilo del Leopardboard o Beagleboard, que se está portando mal. Se basa en el diseño Leopardboard (CPU TI-DM368, DDR2 RAM, NAND Flash).

El desarrollo de software en el leopardo funciona bien. Sin embargo, el primer tablero prototipo apareció y se negó a arrancar. La investigación nos lleva al punto en que reducir la velocidad de los relojes (ARM & DDR) significa que la placa se iniciará .

El hardware (ya sea el diseño de la placa, la terminación, el chip DDR, lo que sea) es el sospechoso número 1, ya que podemos ejecutar un software idéntico en el Leopard y funciona bien. Desafortunadamente, la naturaleza de la falla significa que no podemos iniciar Linux para ejecutar pruebas de RAM agotadoras que pueden proporcionar mejores diagnósticos.

Desde el lado del hardware, el reloj DDR es uno de 345MHz, 486MHz, 680MHz dependiendo de la configuración del reloj, más allá del alcance de cualquiera de nuestros alcances o analizadores lógicos.

Entonces, son como dos preguntas en una:

Desde el punto de vista del hardware, aparte de "alquilar un alcance más rápido", ¿existe un método para diagnosticar esto con lo que hay a mano? Tenemos DSO de 200MHz, < rastreador lógico de 100MHz y analizador de espectro de 1.5GHz para jugar.

Desde el punto de vista del software (lo sé, un foro incorrecto) si alguien tiene sugerencias o fragmentos de código sobre el ejercicio de la memoria RAM DDR, se lo agradecería enormemente.

Editado para agregar la respuesta:

Tomamos prestado un Tektronix 7104 y funcionó tan bien que ni siquiera tuvimos que tocar el tablero con él;)

El problema se reveló a sí mismo como una línea de suministro de energía 1v3 hundida que estaba siendo estrangulada por ferritas SMT de tamaño 0402.

Los síntomas eran que, cerca de la frecuencia de operación marginal, la placa arrancaría, pero se bloquearía cuando intentara iniciarse un proceso de transmisión de video con gran ancho de banda y gran cantidad de memoria. Esto, junto con el hecho de que funcionar más lento lo hacía funcionar bien, nos llevó a creer que se trataba de un problema relacionado con la frecuencia cuando, de hecho, la frecuencia de reloj más baja también ponía menos carga en los componentes de la fuente de alimentación.

Las perlas de ferrita 0402 utilizadas para el filtrado tenían una impedancia sorprendentemente alta a medida que aumentaba la corriente, dejando caer una línea de suministro crítica por debajo del punto de operación permitido.

Desafortunadamente, esto significa que no puedo dar la "respuesta ganadora" a Dave Tweed, pero sí significa que nuestra junta ahora funciona. Aún mejor, ¡la culpa del jefe no es mía!

Oh y Tek 7104 son increíbles hazañas de ingeniería electrónica. Si nunca has visto cómo funcionan, es un kung-fu analógico puro.

    
pregunta John U

2 respuestas

0

Se agregaron todos los detalles para publicar, pero fueron los voltios, no los hercios, ¡no lo hice!

    
respondido por el John U
5

Esto es más un "comentario extendido" que una respuesta, pero permítanme comenzar diciendo que no, no creo que usted pueda solucionar este problema con un conjunto tan limitado de equipos de prueba. Una persona que ha tenido mucha experiencia haciendo estos diseños podría ser capaz de obtener algunas pistas sobre qué está mal al usarlos, pero tengo la impresión de que no eres una persona así.

Por ejemplo, los problemas con risetime y el timbre no se escalan con la frecuencia de reloj. Si no puede verlos a la velocidad de reloj alta, tampoco los verá a la velocidad de reloj baja.

El grado de éxito en este tipo de cosas depende de la forma en que duplicó el diseño de referencia, no solo el esquema, sino también el diseño físico, como la colocación relativa de piezas, el apilamiento de PCB, el enrutamiento y el ajuste de longitud de rastreos, etc. A menos que sepa exactamente lo que está haciendo, debe coincidir con cada detalle del diseño de referencia.

El hecho de que se ejecute a una velocidad de reloj más baja sugiere que tiene problemas con los sesgos de tiempo, posiblemente debido a longitudes de traza no coincidentes, pero también debido a terminaciones no coincidentes. Puede verificar esto al alquilar el visor de alta velocidad, pero su tiempo podría ser mejor gastado en comenzar con un respin de la pizarra de inmediato.

Además, es una tontería tomar un nuevo diseño de placa y esperar iniciar un sistema operativo completo y una aplicación en él de inmediato. Siempre debe planear desarrollar (o encontrar) algunas pruebas funcionales básicas en unidades funcionales individuales como las interfaces de memoria y comunicaciones.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas