¡Esa es una gran cantidad de preguntas! Aquí hay algunas respuestas:
¿Cómo se obtiene el binario compilado en un procesador ARM?
Varía según una serie de factores.
¿Es JTAG el método normal (creo que eso es lo que mi investigación ha indicado ...)?
La mayoría (quizás todos) de los modernos dispositivos basados en ARM incluyen una interfaz JTAG (los núcleos blandos en un FPGA quizás sean exceptuados). En general, esto se puede utilizar para programar en un chip o flash externo o cargar directamente en la memoria RAM. La interfaz JTAG también es la interfaz para las características de depuración y rastreo en el chip. Algunos dispositivos tienen interfaces de depuración/programación adicionales, como ARM's SWD, por ejemplo.
¿Es el único método?
En algunos casos. Algunos microcontroladores basados en ARM incluyen una ROM del cargador de arranque en el chip que puede admitir serial, USB, NAND Flash u otros medios de programación de flash en el chip. A veces, tal instalación es muy simple y solo pretende cargar y ejecutar un gestor de arranque secundario que se ejecuta desde la RAM y realiza la programación flash real.
Si es un método válido, ¿cómo lo usa exactamente de esa manera?
Utilizando el software de host apropiado. JTAG es una interfaz muy simple, y no define ninguna funcionalidad en particular, solo un medio de transferencia de datos. Normalmente, el software de programación necesitará saber con qué dispositivo se está comunicando, y si la memoria flash no está en chip, necesitará conocer el dispositivo flash y su dirección. A menudo, la cadena de herramientas de desarrollo incluirá soporte para la programación del dispositivo, especialmente para dispositivos con memoria en chip. Si está utilizando la cadena de herramientas GNU, puede usar OpenOCD para programar el dispositivo e interconectar el depurador de GNU.
Si no lo es, ¿qué es/cómo lo hago?
Si su objetivo es COTS, bien puede incluir un gestor de arranque que ya permita la actualización de software a través de USB, serie o Ethernet, por ejemplo.
Además, puede usarse algo como un Arduino para crear una interfaz JTAG improvisada (si eso es realmente lo que se necesita para programar dispositivos ARM). . .?
Probablemente, como he dicho JTAG en sí mismo es trivialmente simple de implementar, el problema es hacer que sea compatible con cualquier software de host que utilice (o hacer que el software sea compatible con él). Los adaptadores JTAG "wiggler" más sencillos se implementan utilizando E/S de puerto paralelo para PC, no particularmente rápido, pero funcional.
Básicamente estoy preguntando: ¿JTAG es el programador de dispositivos del mundo ARM?
Se definió originalmente como una boundary scan test interface, pero ahora es ampliamente utilizado en la mayoría de los microprocesadores y microcontroladores que incluyen depuración y programación en chip.
¿Puedo hacer una parodia con Arduino (Arduino wiggler Clone o.o)? Si JTAG no es, ¿qué es y puedo suplantarlo?
No es una cuestión de "spoofing", la interfaz se puede implementar de muchas maneras. Cómo lo implementas afecta principalmente a la velocidad de la interfaz. Se puede alcanzar 16 MHz, pero un ondulador de puerto paralelo más simple probablemente no soportaría más de 500 kHz. Es una interfaz síncrona, por lo que las velocidades de reloj variables no son un problema.
Oh ... Y podría necesitar una mejor explicación de cómo funciona exactamente JTAG.
estoy seguro de que no puedo hacer algo mejor que la explicación de la Wikipedia en JTAG. Pero para la implementación en su dispositivo de destino, debe consultar el manual de referencia/hoja de datos de la parte.
Tengo un viejo Dispositivo Palm (LifeDrive), que tiene el procesador XScale PXA270 creo.
"Creer" probablemente no sea suficiente; necesitarás saber. ¿Están los pines JTAG incluso expuestos en el tablero? Sería habitual en un producto de consumo omitir un conector JTAG real. Incluso si hay uno, es probable que sea un conector patentado y pin-out (JTAG mismo no define ninguno, y hay varios definidos para ARM, pero lo que puede encontrar en una placa de desarrollo puede no estar incluido en el producto de consumo final.
Básicamente, esto podría ser una buena manera de llegar a jugar un poco con lo que es esencialmente una masa de sensores, y otras entradas y salidas de varios, y también acostumbrarse al lenguaje ensamblador ARM.
Probablemente sea mejor obtener una placa de desarrollo lista para usar con interfaces y pines de E/S expuestos. En un producto de consumo, es probable que solo los pines que requiere la aplicación de destino estén expuestos, y incluso entonces pueden no ser accesibles si están conectados a dispositivos BGA. Además, XScale está en el extremo complejo de los dispositivos ARM (cayendo aproximadamente entre ARM9 y ARM11), si no está familiarizado con tales dispositivos y cosas como el control del reloj PLL, el control y el tiempo de SDRAM y la configuración de MMU, puede consultar algo más simple. No solo eso, sino que tanto el Flash como la RAM serán de chip, necesitará detalles de la asignación de direcciones de la memoria y de otros dispositivos externos, así como los detalles necesarios de sincronización SDRAM. Al ser un dispositivo de consumo, dichos detalles pueden no estar disponibles de otra forma que no sea mediante ingeniería inversa.
Dicho esto, respecto al comentario anterior sobre los cargadores de arranque, Palm proporciona a user installable ROM update para el dispositivo, por lo que debe tener un gestor de arranque. Sin embargo, aún necesitaría detalles sobre el formato de archivo de imagen y el protocolo de transferencia de datos. Es poco probable que se publiquen, y probablemente sean difíciles de aplicar ingeniería inversa.
si yo sólo quería jugar con programación integrado, lo haría en mi lugar Arduino.)
Hay un montón de placa de desarrollo ARM de bajo costo disponibles. Pruebe Olimex por ejemplo: incluso tienen un bajo costo "Wiggler" clone JTAG adapter.
¿Cómo se obtiene el binario compilado en un procesador x86? –
A través de un emulador. –
Ni siquiera intentaré competir con la excelente respuesta de Clifford. Tengo una serie de ejemplos de brazo para una serie de paneles de brazo de bajo costo. El descubrimiento stm32f4 por $ 20 es un buen camino, lo que necesita cargar viene con el tablero. El descubrimiento de la línea de valor de $ 10 stm32, similar/misma historia. http://github.com/dwelch67/ Tengo algunos simuladores de brazos, así como miniaturas y samples de ámbar, para que puedas mojarte los pies gratis. –