Expandir la memoria RAM y flash en LPC2294

3

Tengo un proyecto en mente. Quiero comprar un microcontrolador LPC2294, SDRAM IC y flash IC (esos IC aún no se han definido). Lo que quiero hacer es conectar esos circuitos integrados al microcontrolador para expandir su memoria de programa y memoria de datos automáticamente (lo que significa que no quiero tener que crear un método para escribir en la memoria flash o SDRAM, quiero el microcontrolador para poder decir que tiene esos recursos y utilizarlos como si fueran microcontroladores en las memorias de chip).

Sé cómo conectar esos componentes físicamente (ya que el sitio de NXP tiene un ejemplo de esto que fue realmente fácil de entender).

Mi pregunta principal: ¿Solo es necesario conectarlo a través de hardware y poner BAJO o ALTO en algunos pines en el arranque para que el microcontrolador reconozca esos recursos externos como propios, o también tendré hacer otra cosa? Por ejemplo: ¿tendré que modificar los registros de memoria que apuntan al flash interno y la RAM y hacer que esos registros apunten a los componentes externos? ¿Cómo podría poner el programa en el flash externo?

¿Tendré que escribir un gestor de arranque y grabarlo manualmente en el flash externo o puedo usar el gestor de arranque interno y, de alguna manera, asignarlo a los dispositivos externos?

Si alguien me pudiera explicar esto, estaría muy agradecido. Y si hay algún código involucrado, o cambios en los archivos de configuración, ¿podría darme un ejemplo de cómo funciona?

    
pregunta morcillo

2 respuestas

1

Primero debes verificar si te refieres a SDRAM o SRAM. No creo que este microcontrolador sea compatible con SDRAM y sospecho que debería planear utilizar una SRAM externa.

Consulte la documentación del microcontrolador para ver ejemplos de cómo conectar el microcontrolador a la memoria SRAM externa y flash. También puede encontrar una placa de evaluación que contenga memorias externas y hacer referencia al esquema del tablero de evaluación.

Deberá configurar el controlador de memoria externo del microcontrolador para que el microcontrolador pueda usar las memorias externas. Consulte la Guía del usuario del microcontrolador para obtener detalles sobre cómo configurar el controlador de memoria externa. Básicamente, cada memoria estará asociada con un pin de selección de chip y tendrá que configurar todos los ajustes asociados con las selecciones de chip que está utilizando. Normalmente, el controlador de memoria externa se configura con algunas instrucciones en el código de inicio para su aplicación. (Está configurado por el código de inicio para que las memorias externas sean accesibles más temprano que tarde). Es probable que tenga que proporcionar, o al menos personalizar, esta parte del código de inicio. Una vez más, si puede encontrar un tablero de evaluación con memorias externas, el programa de ejemplo que viene con el tablero de evaluación será una excelente referencia.

Una vez que el controlador de memoria externa esté configurado correctamente, el microcontrolador debería poder leer y escribir en la memoria SRAM externa sin ningún código de controlador adicional. El microcontrolador también debe poder leer desde el flash externo sin ningún código de controlador especial. Sin embargo, escribir en el flash externo requerirá un código de controlador especial que deberá incorporar en su programa. Consulte la hoja de datos de la parte de flash para los algoritmos de borrado y programa que se requieren para reprogramar el flash. Una vez más, un ejemplo de junta de evaluación sería una buena referencia.

(Si no necesita reprogramar el flash externo en el tiempo de ejecución, es posible que no necesite el código del controlador del flash. Por ejemplo, es posible que pueda reprogramar el flash a través de JTAG con una aplicación de programación de flash especial en tu PC.)

No estoy familiarizado con el cargador de arranque interno provisto con este microcontrolador. Sospecho que lee el código del UART y lo copia en la SRAM interna y luego lo ejecuta. Dudo que este bootloader soporte tus memorias externas automáticamente. Pero es posible que pueda obtener el código fuente para el gestor de arranque interno y luego personalizarlo agregando soporte para sus memorias externas.

    
respondido por el kkrambo
1

Intentaré responder a sus preguntas en el orden que tenga más sentido para mí:

  

¿Tendré que escribir un gestor de arranque y grabarlo manualmente en el flash externo o puedo usar el gestor de arranque interno y, de alguna manera, asignarlo a los dispositivos externos?

Tendrá que escribir su propio gestor de arranque para esta parte. El gestor de arranque tendrá que leer el programa almacenado en la memoria flash (probablemente usando SPI) y cargarlo en su RAM externa. Una buena descripción se da en esta nota de aplicación: AN10835 - Cargador de arranque secundario LPC2000 para la actualización del código mediante IAP

  

¿Solo es necesario conectarlo por hardware y poner BAJA o ALTA en   Algunos pines en el arranque para que el microcontrolador reconozca aquellos externos   recursos propios, o también tendré que hacer algo más?

Para utilizar SDRAM externo, deberá configurar e inicializar correctamente. El controlador de memoria externa en el dispositivo. Esto incluye la configuración de los pines en esa parte para sus funciones alternativas. Para esto, recomiendo estudiar detenidamente los capítulos sobre configuración de pines y el controlador de memoria externo en el manual del usuario de LPC2294. Entonces sugeriría obtener una placa de evaluación que viene con un código de demostración para configurar el controlador de memoria externa y el código de inicialización para la SDRAM en la placa de evaluación. Una búsqueda rápida en Google convirtió esta placa de evaluación en: LPC-L2294-1MB (www.olimex.com/Products/ARM/NXP/LPC-L2294-1MB/), que también tiene un código de cargador de arranque. Probablemente puedas encontrar otros.

Una vez que sienta que entiende lo que están haciendo los códigos de inicialización de EMC y SDRAM, puede pensar en seleccionar un SDRAM diferente para su aplicación. Debe poder leer la hoja de datos y averiguar qué modificaciones necesita hacer en el código de inicialización desde ese punto. Desafortunadamente, la configuración de la EMC para SDRAM externa por primera vez no es trivial en comparación con otras configuraciones periféricas. Le sugiero que haga uso de los recursos y foros en LPCWare (www.lpcware.com) para ayudarlo en sus esfuerzos.

  

Lo que quiero hacer es conectar esos circuitos integrados al microcontrolador para expandir su memoria de programa y memoria de datos automáticamente (lo que significa que no quiero tener que crear un método para escribir en la memoria flash o SDRAM). desea que el microcontrolador sepa que tiene esos recursos, y úsalos como si fueran microcontroladores en las memorias de chip).

Como mencioné, para el FLASH, es probable que esté bloqueado implementando un cargador de arranque personalizado como se describe en la Nota de Aplicación. En el caso de SDRAM, habrá un rango de memoria que se extenderá desde alguna dirección base definida para SDRAM externa. Efectivamente, el microcontrolador sabe usar el controlador de memoria externo cuando ejecuta instrucciones que acceden a esas direcciones, por lo que es bastante sencillo durante el desarrollo de la aplicación una vez que se configura. Para comprender mejor cómo funciona el controlador de memoria externo con la memoria dinámica, le sugiero encarecidamente que también lea la documentación técnica proporcionada por ARM: Manual de referencia técnica del controlador de memoria PrimePell ™ MultiCort de ARM (PL176)

    
respondido por el James Ethridge

Lea otras preguntas en las etiquetas