2011-03-07 12 views
5

En mi placa personalizada basada en ARM, flasheo u-boot a NAND cada vez que hago cambios en eso. (poniendo algunas declaraciones de depuración/modificación). ¿Hay alguna manera de cargar directamente la imagen uboot en la memoria RAM en lugar de actualizarla cada vez?cargando u-Boot en memoria en lugar de flashearlo

Para la imagen del kernel de Linux, la cargo en la memoria y uso bootm para arrancar esa imagen. Del mismo modo para u-boot estoy probando. Amablemente brinda tus sugerencias.

Respuesta

2

Debe ser posible, si la imagen de U-Boot que desea ejecutar tiene un código de inicio que permite ejecutarla desde direcciones arbitrarias. No sé si ese es el caso de su junta o no.

Si el código de inicio comienza copiando la sección del código de la dirección actual (PC-relative) a la dirección de ejecución final (generalmente esto va precedido de una verificación de que estas áreas no se superponen), puede cargar el archivo .bin a cualquier dirección en RAM, e invocarlo usando go.

El segundo obstáculo que pude ver sería un código de configuración RAM incondicional al principio, que tienen varias tarjetas.

+0

voy a decir que debería ser posible - sin duda es común con un número de versión de u-boot. Incluso si el procesador quiere simular con ram, actualizar la configuración, etc. de forma destructiva en el arranque, con un diseño adecuado, ni siquiera debería ser necesario reiniciar el procesador para iniciar una nueva versión de u-boot de la versión anterior. –

0

El problema aquí es que lo que estás tratando de hacer va en contra de la filosofía de lo que es un gestor de arranque. La mayoría de los procesadores requieren que el código comience desde Flash. Ese código se llama un gestor de arranque. Eso es lo que es U-boot.

Sin embargo, si desea modificar el arranque en U para que no sea un gestor de arranque verdadero, puede hacer lo que desee. Es solo software. Pero no espere ningún soporte de la línea principal por las razones anteriores.

+2

Eso no es necesariamente cierto. Hay objetivos en los que se admite la carga de una prueba u-boot desde un u-boot flasheado y se considera completamente normal. ¡Y puede ser una forma práctica de probar! –

0

Solo tenga en cuenta (tenga cuidado de) el hardware que está configurando en su U-Boot modificado. U El arranque está destinado a inicializar módulos críticos, algunos de ellos no se pueden volver a configurar sobre la marcha o pueden no funcionar como si se hubieran inicializado/configurado al inicio.

3

La depuración de un gestor de arranque es un poco difícil, pero con las herramientas adecuadas debería ser relativamente fácil.

Me ocupo de la arquitectura de PowerPC y con un BDI-3000 puedo cargar y depurar directamente en la RAM (por supuesto, después de inicializar el controlador DDR).

Una opción es si tiene memoria caché SRAM o L2 en chip que se puede configurar como SRAM en chip. El BDI puede copiar primero al área SRAM, u-boot lo hace (por ejemplo, inicializar el controlador DDR), luego se reubica en la memoria RAM DDR después. Definitivamente más rápido que volver a escribir para ralentizar el flash todo el tiempo.

4

Alguien en Freescale ha hecho esto, para su sistema de evaluación P1022DS (y algunos otros también). Han proporcionado un documento algo útil sobre el proceso en el archivo $ {UBOOTROOT} /doc/README.ramboot-ppc8500 (en U-Boot V2010.12). Este documento es muy escueto y deja muchas preguntas sin respuesta, pero encontré un lugar razonable para comenzar cuando necesité depurar U-Boot para una nueva placa, antes de que la memoria flash para esa placa funcionara correctamente.

De hecho, tener una memoria flash no funcional es una de las razones por las que querrá depurar U-Boot en la RAM.(Hay algunos motivos enumerados en el archivo README, y todos me parecen bastante razonables, en contraste con algunos de los otros consejos disponibles sobre este tema)

En nuestra situación, se descubrió que el prototipo de hardware de la placa de destino incluido un error en la conexión del bus de direcciones a la memoria flash que nos impidió usar esa memoria flash. Mientras el hardware se rediseñaba y se refabricaba, queríamos continuar probando/depurando aquellas partes de nuestra configuración de U-Boot que no dependían de la memoria flash, por ejemplo, I2C, Ethernet, configuración FPGA, PCIe, etc. (allí hay muchas cosas que son independientes de donde proviene la imagen U-Boot).

Ejecutar U-Boot después de cargarlo en la RAM a través de una interfaz JTAG (usando Codewarrior y el TAP USB) nos permitió continuar nuestras tareas de arranque U-Boot, aunque no teníamos memoria flash funcional. Una vez que recibimos una versión más nueva de la placa de destino con memoria flash que funciona correctamente, volvimos a depurar las partes de U-Boot que no habíamos podido probar antes. Después de eso, U-Boot fue completamente funcional, y no tuvimos que esperar a que un tablero girara para hacer algún progreso.

+0

Esta publicación se realizó por error, me disculpo. Finalmente no tuve éxito en el uso del documento Freescale para iniciar U-Boot en la RAM. –

+0

Lo hice funcionar sin problemas para la P1010, por lo que otros lectores no deberían ser disuadidos. Es muy útil si no tienes un depurador BDI. [enlace] (https://github.com/atgreen/u-boot-moxie/blob/master/doc/README.ramboot-ppc85xx).Tenga en cuenta que el "CONFIG_SDCARD" bit es engañosa, lo único que necesitas hacer es configurar '#define CONFIG_SYS_TEXT_BASE \t \t 0x11000000' ' CONFIG_RESET_VECTOR_ADDRESS #define \t 0x1107fffc' 'CONFIG_SYS_RAMBOOT' #define – timmins

0

Si su tablero de destino admite el arranque de la red, puede cargar la imagen uboot desde el equipo host a la RAM a través de la red.

0

Puede usar el arranque USB. TI y Freescale proporcionan sus utilidades de arranque usb. No sé sobre otros proveedores.

0

Esto es lo que se puede leer en la documentación u-boot FAQ:

Pregunta: no quiero borrar de mi memoria flash porque no estoy seguro de si mi nueva imagen U-Boot trabajará. ¿Es posible configurar U-Boot tal como que puedo cargar en la memoria RAM en lugar de flash, y comenzar desde mi antiguo cargador de arranque ?

Respuesta: No. (. A menos que utilice un procesador de aleta negra, o la junta Socfpga, pero es probable que no lo son)

Pregunta: Pero me han dicho que es posible ??

Respuesta: Bueno, sí. Por supuesto, esto es posible. Este es un software, entonces todo es posible. Pero es difícil, no es compatible, y está lleno de peligros . Estás solo si eliges hacerlo. Y no lo ayudará a resolver su problema.

fuente: http://www.denx.de/wiki/view/DULG/CanUBootBeConfiguredSuchThatItCanBeStartedInRAM

Cuestiones relacionadas