TODOPIC

Otros Microcontroladores / Dispositivos programables => Microcontroladores ARM => Mensaje iniciado por: planeta9999 en 15 de Junio de 2018, 08:15:03

Título: NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 15 de Junio de 2018, 08:15:03
 
Ya está el tema en marcha, NXP ha puesto a la venta las placas de evaluación para los RT1020, un microcontrolador con encapsulado LQFP100 y LQFP144, Cortex M7 a 500Mhz.

Lo raro es que las placas de evaluación ya se pueden comprar, yo ya tengo pedida la mía a Mouser, pero el micro aún no está en stock, y tampoco han liberado el Datasheet, ni el Manual de la placa de evaluacion.

De documentación, han soltado fundamentalmente Notas Aplicativas, y el único documento interesante una "Guía de Desarrollo Hardware". Se supone que el día 26 del mes actual ya tendremos el Datasheet y se pondrán comprar los chips y pedir muestras gratuitas a NXP.

La documentación disponible, aquí:
https://www.nxp.com/products/processors-and-microcontrollers/applications-processors/i.mx-applications-processors/i.mx-rt-series/i.mx-rt1020-crossover-processor-with-arm-cortex-m7-core:i.MX-RT1020?tab=Documentation_Tab

La placa de evaluación, vale poco más de 44€ en Mouser, raro también que no hayan puesto una foto del producto: https://www.mouser.es/ProductDetail/771-MIMXRT1020-EVK

De la documentación, le he echado un ojo a este documento para habilitar el arranque desde QSPI, y como generar el objeto, una vez compilado, para cargarlo. El ejemplo que ponen para cargar el programa, a mi no me vale, porque están usando un chip Kinetis que actúa de intermediario, y mi idea es cargarlo desde SD a QSPI.

https://www.nxp.com/docs/en/application-note/AN12108.pdf
 
La única peculiaridad de este micro, con respecto a otros, es que no tiene memoria flash interna. Para el arranque hay que conectar y habilitar una de las tres opciones posibles; tarjeta SD, memoria QSPI o Hyperflash paralelo.

Aprovechando el pedido a Mouser de la placa de evaluación, me he pedido unas memorias QSPI y una Hyperflash. También pedí a los polacos unos reguladores de 1.8 voltios, porque estas memorias, se alimentan ambas a ese voltaje.

Lo único complicado con la Hyperflash es que es encapsulado FBGA, pitch 1mm, en una matriz de 5x5 bolas, no se si esto lo podré hacer con un PCB de 2 capas, lo intentaré. Aparte de la placa de evaluación, en cuanto esté el Datasheet y los chips, mi idea es montar mi propia plaquita con el micro, su cuarzo (creo que es de 24Mhz), tarjetero micro SD, memoria QSPI y puede que la Hyperflash, también un regulador LD1117 de 3.3v para el micro y un MIC5504 para los 1.8v.

Esta es la hyperflash, bastante cara por cierto, si me funciona bien con la QSPI o incluso con el tarjetero SD, prescindiré de la hyperflash.

https://www.mouser.es/ProductDetail/727-S26KL128SDABHI02

(https://media.futureelectronics.com/SEMICONDUCTORS/MEMORY/FLASH/NOR-SERIAL/S26KL128SDABHI020-CYP-FNT-MED.JPG?m=IXLAy8)


En cuanto tenga la placa de evaluación, y el datasheet, mi idea es empezar las pruebas con MCUXpresso. Empezar con lo sencillo, probar el arranque desde las tres opciones posibles, y en cuanto lo tenga más o menos dominado, meterme con el DMA, que es lo que más me interesa. Y finalmente migrar todos mis desarrollos de Kinetis y STM32, al RT1020.

El precio del chip es una ganga, desde 6€ para una unidad, y bastante menos en cantidad.

Lo único en lo que cojea el RT1020 es que no tiene ningún controlador integrado para manejar pantallas TFT, una pena, para eso hay que usar el RT1050, pero ese ya es BGA, o echar mano de los STM32 que si tienen controladores TFT, bien paralelo o MIPI DSI.
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 17 de Junio de 2018, 05:42:23
 
Ya tenemos disponible el SDK del RT1020 para MCUXpresso. Lo he descargado, lo he importado a MCUXpresso y se ve muy bien, entre otras cosas, va bien cargado de fuentes de ejemplo (lo que siempre echo de menos en la mayoría de entornos de desarrollo, muchos fuentes de ejemplo, es como mejor se aprende), desde lo más sencillito para encender un Led, leer unos puladores, sacar variables por la Consola, hasta ejemplos para manejar toda la periferia del microcontrolador.

La semana que viene me entregan la placa de evaluación, y empiezo las pruebas. Interesante ver que tiene un Debug que directamente permite usar el PRINTF para volcar cualquier variable, en tiempo real, a la salida de la Consola del MCUXpresso, para mi mucho mejor que tener que usar el Debug con Breakpoints, en este aspecto viene a ser como Arduino.

(https://i.imgur.com/ef10UFm.jpg)


A partir de los fuentes de ejemplo del SDK, también veo que la placa usa un cuarzo de 24Mhz, así ya lo voy comprando para hacer mi placa, ya tengo la QSPI y la Hyperflash. He estado viendo varios fuentes más, y se ve todo muy familiar para cualquiera que sepa programar en C/C++ y más habiendo ya trabajado con otros micros NXP, como los Kinetis, no creo que me cueste mucho hacerme con esta maravilla de micro.

Incluso estoy pensando en probar a hacer una plaquita de 4 capas con el RT1050 en BGA, mi única duda es si los condensadores de desacoplo tendrán que ir por la cara de abajo (y el micro en la de arriba), porque eso me complicaría mucho el ensamblaje y soldadura para hacer un producto comercial. En el Teensy 3.6, que instala un Kinetis MK66 en BGA, no se ven componentes por la cara de abajo, me extraña un poco, a menos que las bolas con los pines de alimentación y GND, estén todas en el perímetro del encapsulado.

Uno de los tantos ejemplos que lleva cargado el SDK, uno sencillito, el típico para parpadear un led haciendo uso de una interrupción. En boards.h y boards.c, se define la frecuencia del cuarzo y la frecuencia de reloj, 24Mhz de cuarzo y 500Mhz de reloj para el RT1020.

Código: C++
  1. /*
  2.  * The Clear BSD License
  3.  * Copyright 2017 NXP
  4.  * All rights reserved.
  5.  *
  6.  */
  7.  
  8. #include "board.h"
  9. #include "fsl_gpio.h"
  10.  
  11. #include "pin_mux.h"
  12. #include "system_MIMXRT1052.h"
  13. /*******************************************************************************
  14.  * Definitions
  15.  ******************************************************************************/
  16. #define EXAMPLE_LED_GPIO BOARD_USER_LED_GPIO
  17. #define EXAMPLE_LED_GPIO_PIN BOARD_USER_LED_GPIO_PIN
  18.  
  19.  
  20. /*******************************************************************************
  21.  * Prototypes
  22.  ******************************************************************************/
  23.  
  24. /*******************************************************************************
  25.  * Variables
  26.  ******************************************************************************/
  27. volatile uint32_t g_systickCounter;
  28. /* The PIN status */
  29. volatile bool g_pinSet = false;
  30.  
  31. /*******************************************************************************
  32.  * Code
  33.  ******************************************************************************/
  34. void SysTick_Handler(void)
  35. {
  36.     if (g_systickCounter != 0U)
  37.     {
  38.         g_systickCounter--;
  39.     }
  40. }
  41.  
  42. void SysTick_DelayTicks(uint32_t n)
  43. {
  44.     g_systickCounter = n;
  45.     while(g_systickCounter != 0U)
  46.     {
  47.     }
  48. }
  49.  
  50. /*!
  51.  * @brief Main function
  52.  */
  53. int main(void)
  54. {
  55.     /* Define the init structure for the output LED pin*/
  56.     gpio_pin_config_t led_config = {kGPIO_DigitalOutput, 0, kGPIO_NoIntmode};
  57.  
  58.     /* Board pin init */
  59.     BOARD_InitPins();
  60.     /* Update the core clock */
  61.     SystemCoreClockUpdate();
  62.  
  63.     /* Init output LED GPIO. */
  64.     GPIO_PinInit(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, &led_config);
  65.  
  66.     /* Set systick reload value to generate 1ms interrupt */
  67.     if(SysTick_Config(SystemCoreClock / 1000U))
  68.     {
  69.         while(1)
  70.         {
  71.         }
  72.     }
  73.  
  74.     while (1)
  75.     {
  76.         /* Delay 1000 ms */
  77.         SysTick_DelayTicks(1000U);
  78.         if (g_pinSet)
  79.         {
  80.             GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 0U);
  81.             g_pinSet = false;
  82.         }
  83.         else
  84.         {
  85.             GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 1U);
  86.             g_pinSet = true;
  87.         }
  88.     }
  89. }


Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 18 de Junio de 2018, 08:05:30
 
Hoy recibí la placa de evaluación para el RT1020, con un día de antelación. Esta placa instala un LQFP144 a 500Mhz. Parece que no hay Hyperflash, solo QSPI y SDRAM. Supongo que solo podrá arrancar desde SD o QSPI, a diferencia de la placa de evaluación del RT1050 que además añade Hyperflash.

El SDK del RT1020 ya está disponible para MCUXpresso. Lo descargué e instalé, en general bien aunque las Peripheral Tools y la configuración gráfica del Reloj no están disponibles aún. Lleva muchos ejemplos de código fuente y documentación, eso está muy bien, lo que siempre le he pedido a un entorno de desarrollo, fuentes de ejemplo a cascoporro, que es como mejor se aprende en vez de Manuales de Referencia con miles de páginas que no hay quien se las trague.

Con la placa solo dan un cable micro USB, eso es todo, un poco rácanos. No hay ningún software, CD o DVD, solo un documento impreso del Packing List, donde lleva impresa la dirección web nxp.com/MIMXRT1020EVKQSG, para en teoría descargar la Guía de Usuario de la placa, pero esa dirección no funciona. Espero que el día 26 estén disponibles el Datasheet, el Manual de Referencia del micro y el Manual de usuario de la Placa de Evaluación.

La primera impresión es buena, tanto el hardware, como el SDK prometen mucho, ya estoy preparado para migrar todos mis desarrollos de Kinetis y STM32, a esta maravilla que es la serie RT de NXP.

Por cierto, en la última foto, hay un chip de la placa que no consigo identificar, con la referencia que lleva impresa no me sale nada por Google, solo se ve que lo fabrica NXP.


(https://i.imgur.com/1ZBCpqs.jpg)

(https://i.imgur.com/gKIDkQC.jpg)

(https://i.imgur.com/4gWBeKf.jpg)

(https://i.imgur.com/Anh4yGj.jpg)

(https://i.imgur.com/ijRNS6Z.jpg)

(https://i.imgur.com/o5I2HCZ.jpg)



Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 28 de Junio de 2018, 09:51:05
 
Ya tenemos el chip en el mercado (el LQFP100 a 500Mhz), por ahora solo en Digikey, yo me pedí 10 unidades hace unos días a 5,37 Euros la unidad, gastos de envío gratuitos para pedidos que superen los 50 euros, como en Mouser. Una auténtica ganga para un Cortex M7 a 500Mhz, me los han entregado hoy por UPS.  Samples gratuitos, por ahora NXP no da.

Para mi sorpresa no me han hecho pagar IVA. Según la web de Digikey, ellos pagan los aranceles de Aduanas, pero el IVA lo tiene que pagar el cliente cuando te lo entrega el repartidor. Mouser funciona parecido, pero el IVA te lo cargan en la tarjeta de crédito.

En cuanto tenga un hueco libre, que es básicamente cuando eche a andar la Pick and Place, me pongo a diseñar el PCB para esta maravilla, algo sencillo con tarjetero micro SD, QSPI de 64 Mb, cuarzo de 24Mhz, algunos leds para tareas de debug y unos conectores IDC para mi aplicación de pantallas led. Pondré en práctica por primera vez lo del "Length Tuning" para rutear la QSPI y el SDIO.

Lo único en lo que flojea el RT1020 es en el SDK para MCUXpresso, todavía no soporta las Peripheral Tools, que es el asistente para configurar toda la periferia, me interesa sobre todo para el DMA y las interrupciones, si no hay que hacerlo todo a mano, o tirar de alguno de los ejemplos de código fuente y ver como está montado.

De las cuatro referencias de RT1020, dos LQFP100 y dos LQFP144, a 400 y 500Mhz, por ahora solo está disponible el LQFP100 a 500Mhz. La placa de evaluación monta un LQFP144 a 500Mhz.


(https://i.imgur.com/yj9mqdj.jpg)

(https://i.imgur.com/PzskazO.jpg)


Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: rusotech en 11 de Agosto de 2018, 14:52:10
Hola planeta9999, pudistes armar una placa con el imxrt1021 en LQFP100?

Yo estoy apuntando al LQFP144 para cuando salga.

Soy el diseñador de esta placa:
https://github.com/martinribelotta/imxrt1020-module

La cual ya hemos discutido previamente en el post correspondiente del blog mcuoneclipse.
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 11 de Agosto de 2018, 23:06:39
Hola planeta9999, pudistes armar una placa con el imxrt1021 en LQFP100?

Yo estoy apuntando al LQFP144 para cuando salga.

Soy el diseñador de esta placa:
https://github.com/martinribelotta/imxrt1020-module

La cual ya hemos discutido previamente en el post correspondiente del blog mcuoneclipse.

Hola Martin.

Estoy preparando el diseño, el esquema ya lo tengo prácticamente completo para el LQFP100, con el conector para programar y hacer Debug por JTAG y un mini USB para cargar la imagen encriptada del firmware con la MFG Tool, aunque tengo dudas sobre donde se conecta la QSPI. En los esquemas de la placa de evaluación con el LQFP144, la SD va conectada al puerto GPIO_SD_B0, que no existe en el LQFP100.

He conectado en mi esquema la tarjeta SD al puerto GPIO_SD_B1. El problema es que si conecto la QSPI tambien a GPIO_SD_B1, el pin  GPIO_SD_B1_06 quedaría compartido entre la SD y la QSPI. En la SD, ese puerto va a la señal SD_CD_SW (creo que es la detección de tarjeta SD), y en la QSPI ese es el pin 3 de datos, sospecho que no funcionaría.

La alternativa es llevarme la QSPI al puerto GPIO_AD_B1, por lo que vi en el Manual de Referencia (FlexSPI 2nd option). Lo pregunté a NXP en su foro y también como una consulta privada, y de poco me sirvió la respuesta, porque prácticamente me remitieron al Manual de Referencia, que yo ya me había visto. 

https://community.nxp.com/message/1038958

Estoy por arriesgarme, pongo la QSPI en GPIO_AD_B1, ruteo y mando a fabricar a JLCPCB. Creo que es lo correcto, considerando todo esto del IOMUX para configurar las funciones alternativas de cada puerto, pero como estoy empezando con el RT1020 no estoy seguro al 100%.


(https://i.imgur.com/R3qtuAS.jpg)

(https://i.imgur.com/h1QicEQ.jpg)

(https://i.imgur.com/xC6261H.jpg)
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 12 de Agosto de 2018, 02:13:24
 
La cosa se complica, porque ahora resulta en que el puerto GPIO_AD_B1 también esta JTAG y SWD. Si ahí se conecta la QSPI, no se podrá hacer Debug, eso seguro, tal vez si se deje programar.

Lo único que se me ocurre para tenerlo todo es poner la QSPI en GPIO_SD_B1, siempre que el pin SD_CD_SW de detección de la SD, en el puerto GPIO_SD_B1_06, sea algo opcional que se pueda desactivar.

Si a cada pin, se le puede configurar individualmente su función alternativa, entonces supongo que se puede conectar GPIO_SD_B1_06 solo para la QSPIk sin que interfiera con la SD. Es lo que tiene cuando empiezas con algo, todo son dudas, y los manulaes como son tan crípticos, no ayudan demasiado, tampoco puedes esperar mucho del soporte oficial de NXP que ante estos pasteles te remiten al Manual de Referencia o al Datasheet, y búscate la vida Serafín.

Consultando el Manual de Referencia, apartado del Mutiplexado de pines, me encuentro que FlexSPI (A), permite elegir entre dos puertos para cada señal. Falta saber si se pueden mezclar o todas tienen que ser del mismo puerto. Tampoco tengo claro que no es lo mismo el Multiplexado de los pines y  la configuración del Boot de arranque.

Salir, saldrá, pero a base de echarle horas a cascoporro, pruebas y prototipos que terminarán en el cubo de la basura, me lo veo venir.

(https://i.imgur.com/ssQWkRd.jpg)

Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 12 de Agosto de 2018, 04:53:37
 
Creo que me voy a arriesgar a poner la QSPI en GPIO_SD_B1. Por lo que voy entendiendo del multiplexado de pines, hay pines que pueden tener varias funciones configurables por el usuario, solo UNA, por lo que en teoría no puede haber un pin compartiendo varias funciones, en este caso entre la SD y la QSPI.

Según la tabla adjunta, el puerto GPIO_SD_B1_06 puede configurarse con 7 funciones alternativas (en el manual pone 8, pero yo cuento 7), la ALT0 sería para que funcionase como el Card Detect de la tarjeta SD, y el ALT1 para que funcione como la linea 3 de Datos de la QSPI, que es lo que me interesa.

De esta manera me quedan libres los pines 0 a 6 del puerto GPIO_AD_B1 para el JTAG o el SWD, ambos para poder programar y hacer Debug. Aunque sigo teniendo dudas de si el modo Boot para la SD exige que GPIO_SD_B1_06 esté asignado a la SD, de ser así tampoco creo que haya problema, puedo configurar el Boot desde QSPI, y el acceso al tarjetero SD solo para modo de trabajo, lectura y almacenamiento de archivos de configuración.

Bueno Martín, si lo lees, ya comentarás que te parece, mi idea es mandar a fabricar el PCB esta próxima semana, recibo la placa una semana despues, y lo monto todo a ver que sale. Para el LQFP144, que para mi sería el ideal, todavía hay que esperar bastantes meses, hasta finales de año, y a mi me interesaría tener en marcha este bicho lo antes posible, para poder migrar mis diseños de Kinetis MK66 a RT1020.

Ya empecé a leer el apartado del DMA en el Manual de Referencia, y con la ayuda de otros textos lo voy entendiendo, quiero empezar probando el DMA por SPI y luego en paralelo de varios puertos GPIO a varios arrays.


(https://i.imgur.com/V79l0uY.jpg)
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 12 de Agosto de 2018, 23:10:47
 
Ya empecé a crear mi placa personalizada con el microcontrolador RT1020 en LQFP100 (el único disponible). Finalmente decidí poner la QSPI en el puerto GPIO_SD_B1, dejando el puerto GPIO_AD_B1 libre para JTAG o SWD.

He puesto puentes para configurar todo el sistema de arranque, ya que es una placa experimental para migrar uno de mis productos con Kinetis MK66. En la versión final, los fusibles se programarán internamente para el modo de arranque y todos estos puentes desaparecerán, dejando a su vez más puertos libres. No sé si reemplazar los jumpers con interruptores DIP, en general los jumpers parecen más prácticos en las placas de desarrollo.

También puse un conector USB para probar la carga de firmware encriptado usando la herramienta MFG. Todavía no sé si JTAG puede cargar una imagen de firmware encriptada o solo puede ser por USB/UART utilizando la herramienta MFG. He puesto tanto el conector JTAG como el SWD para probar ambos, y finalmente decidiré cuál prefiero.

Aún me queda bastante por rutear (aunque no es complicado), y creo que tendré que cambiar todos los condensadores de desacoplo, por unos de tamaño 0603, ahora son 0805, me parecen demasiado grandes y dejan poco espacio para el ruteo. Me  sorprende la cantidad de condensadores de desacoplo que necesita este microcontrolador, acostumbrado a poner, en los  STM32 o Kinetis, uno de 100nF por cada pin positivo, en el RT1020 hay montones, algunos en paralelo de varios valores.

Sigo los consejos de la "Guía de desarrollo de hardware" de NXP. Me llama la atención el comentario sobre el ajuste de la longitud de las pistas en el tarjetero SD, " For the SD module interfaces: o Match the data, clock, and CMD trace lengths (length delta depends on the bus rates). "

Creo que para la próxima semana puedo tener el diseño listo para enviarlo a JLCPCB, y en unos días tengo la placa para ensamblarlo aquí, y empiezo con las pruebas.



(https://i.imgur.com/aRAbiYU.jpg)

(https://i.imgur.com/BPo4rTP.jpg)

(https://i.imgur.com/IvA5nVf.jpg)
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 13 de Agosto de 2018, 11:40:18
 
PCB terminado y enviado a JLCPCB. En una semana espero recibirla y empiezo el ensamblaje y pruebas. Finalmente he puesto todos los condensadores de desacoplo de tamaño 0603, y el cuarzo SMD de 5x3mm. También he puesto interruptores DIL, en vez de los jumpers, supongo que si se eligen de calidad no darán problemas, porque me experiencia con este tipo de interruptores de los chinos, fue bastante mala, fallaban muchisimo.


(https://i.imgur.com/KR7JAJe.jpg)

(https://i.imgur.com/FyN8gDW.jpg)

(https://i.imgur.com/y3oGNtQ.jpg)

(https://i.imgur.com/ngbIlDP.jpg)
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: rusotech en 21 de Agosto de 2018, 15:37:22
Hola planeta9999, perdón el retardo en responder pero he tenido un par de semanas so-fucking-hot-of-work.

Voy respondiendo por partes (lo que me acuerdo y puede serte util):

Citar
También puse un conector USB para probar la carga de firmware encriptado usando la herramienta MFG. Todavía no sé si JTAG puede cargar una imagen de firmware encriptada o solo puede ser por USB/UART utilizando la herramienta MFG. He puesto tanto el conector JTAG como el SWD para probar ambos, y finalmente decidiré cuál prefiero.

JTAG puede hacer todo... básicamente tenes acceso al bus del CPU con ello. Yo he probado openocd con los imx6/7 (que tienen una arquitectura muy similar a los imx-rt pero con cortex-a7/a9) y se puede acceder al bus interno como si fueras un CPU mas. De ahí, el truco es bajarles un firmware a RAM y usar las interrupciones y algunos buffer en RAM para transmitir información entre el debugger y el MCU. Con esto, grabar la flash externa es pan comido... Entiendo que con el jlink comprado los micros están soportados al 100% (ya que NXP paga a segger para ello) y que en breve estará el script para usarlos desde openocd.

Citar
Aún me queda bastante por rutear (aunque no es complicado), y creo que tendré que cambiar todos los condensadores de desacoplo, por unos de tamaño 0603, ahora son 0805, me parecen demasiado grandes y dejan poco espacio para el ruteo. Me  sorprende la cantidad de condensadores de desacoplo que necesita este microcontrolador, acostumbrado a poner, en los  STM32 o Kinetis, uno de 100nF por cada pin positivo, en el RT1020 hay montones, algunos en paralelo de varios valores.

Incluso los 0604 son "grandes" para este micro, pero creo que va a ir bien... Cuando mas alta es la frecuencia de operación esto se vuelve común, incluso teniendo que echar mano de capacitores en array como estos:
https://www.digikey.com/product-detail/en/samsung-electro-mechanics/CL21B104MOCNBNC/1276-2452-1-ND/3890538 (https://www.digikey.com/product-detail/en/samsung-electro-mechanics/CL21B104MOCNBNC/1276-2452-1-ND/3890538)

Citar
Sigo los consejos de la "Guía de desarrollo de hardware" de NXP. Me llama la atención el comentario sobre el ajuste de la longitud de las pistas en el tarjetero SD, " For the SD module interfaces: o Match the data, clock, and CMD trace lengths (length delta depends on the bus rates). "

Sobre eso hay mucho mito y miedos varios dando vuelta por internet. En general, la diferencia entre pistas NO debe ser mayor al 10% de la longitud de onda del 5to armónico de tu señal cuadrada (recordar que una cuadrada esta formada por la sumatoria de armónicos sinusoidales impares) con lo que, si tu frecuencia es de 100MHz (cosa que pocas QSPI soportan) debes tener en cuenta una freq. sinusoidal de máximo 500MHz en tus lineas, y tunear su largo para que el frente de ondas no llegue desfasado las del 10% de esos 500M.

Luego el tamaño de esa onda hay variaciones de como calcularla, la mas simple (y la mas alejada de la realidad) es:

Ldiffmax=c/f

donde c es velocidad de la luz (299792458 m/s) que para 500MHz da: 0.0599584916 m. Esto es, casi 6cm de offset entre una y otra linea. Si nos ponemos exquisitos, podemos hablar de en vez del 10% un 5% lo que nos da algo así de 3.5cm.

Por supuesto, en el cobre c es distinta a la velocidad en en el vacío y esta afectada por un factor que depende de tantísimos parámetros que siempre se aproxima. Yo uso para FR4 el valor de 0.45*c lo que, a efectos prácticos nunca me ha dado peor que en las mediciones (esto con un network analyzer). Entonces de nuestros 3.5cm quedarían algo así de 2.7cm (0.1*299792458*0.45/500e6) lo cual sigue siendo un mundo respecto a las diferencias que tenes en tu placa.

Lo mismo aplica para la FlexRAM/FlexFLASH y los distintos grupos de la SDRAM (Grupo de direcciones y control: { A0...12, BA[1:0], nCAS, nRAS, nWE, nCE } y grupo de datos: D0..7, D8..15, DQML-DQMH, CKE, CLK).... Ok, con la sdram estoy haciendo una super simplificación porque hay mas reglas entre ellas pero en si, es fácil de ver.

Otro problema que se te puede presentar en altas velocidades (que no justo en este diseño con solo QSPI) es el tema de no tener matcheadas las impedancias de las lineas. O mejor dicho, tener des adaptados los 50ohm de las single ended. Matchear a 50ohm con un tickness de PCB mayor a 0.2 es imposible así que ni lo intentes. Actualmente el rebote es soportable según la gente de NXP (ellos recomiendan resistencias en serie pero eso solo evita que no se cargen mucho los GPIO en el rebote... la señal sigue siendo horrible jajajajaja) así que me dijeron en el foro de ellos mismos que las R que usan son de 0ohm y les anda a 133MHz la flash. Entiendo que tu QSPI tiene que andar perfecto a 50MHz.

Contanos tu experiencia cuando tengas el micro montado... en especial con el firmware de NXP que según vi esta un poco verde para estos micros (va lo verde es el MCUExpresso porque las librerías son las imx-6/7/8 revampeadas para tener los IPCore en su configuración correcta)

PD: Perdón si algún argentinismo no se entiende bien... escribo algo apurado jejeje
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 21 de Agosto de 2018, 15:56:44
 

Pues ya recibí la placa, ahora ando un poco liado con varios temas, intentaré montarla este fin de semana. Adjunto foto.

También me pedí un cable TC2050 de Tag Connect, este es un tipo de conector especial para programar y hacer debug por JTAG, que no necesita poner conector en el PCB, solo la huella para que los pines del conector toquen los pads, te ahorra tiempo y dinero en el ensamblaje. http://www.tag-connect.com/TC2050-IDC

En el diseño del PCB, cometí un error, porque desconocía como funciona el DMA. Necesito volcar datos de un array a varios pines de un puerto, y pensé que se podían elegir cualquier puerto y pin, luego me enteré que todos los pines deben de ser del mismo puerto y contiguos formando 1 o varios bytes. He diseñado una pequeña placa adaptadora con un conector IDC que reordena los pines, así podré probar mi aplicativo, que es una pantalla led con módulos HUB75.

La QSPI y el tarjetero SD, practicamente los tengo pegados al microcontrolador, con pistas muy cortas y directas, por eso no perdí el tiempo ajustando el largo para que todas coincidan.

Sobre el tamaño de los pasivos, aunque mi máquina de Pick and Place (una Neoden4) en teoría puede montar hasta 0402, prefiero siempre poner los componentes lo más grandes posible para evitar la imprecisión del posicionamiento de componentes muy pequeños. Si puede ir con 0603, para mi perfecto.



(https://i.imgur.com/hA4iGoT.jpg)

(https://i.imgur.com/DgQynaE.jpg)

(https://i.imgur.com/nGxRux3.jpg)

Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 22 de Agosto de 2018, 03:39:58
Otro problema que se te puede presentar en altas velocidades (que no justo en este diseño con solo QSPI) es el tema de no tener matcheadas las impedancias de las lineas. O mejor dicho, tener des adaptados los 50ohm de las single ended. Matchear a 50ohm con un tickness de PCB mayor a 0.2 es imposible así que ni lo intentes. Actualmente el rebote es soportable según la gente de NXP (ellos recomiendan resistencias en serie pero eso solo evita que no se cargen mucho los GPIO en el rebote... la señal sigue siendo horrible jajajajaja) así que me dijeron en el foro de ellos mismos que las R que usan son de 0ohm y les anda a 133MHz la flash. Entiendo que tu QSPI tiene que andar perfecto a 50MHz.


Este es un tema que se me escapa, porque nunca he trabajado con dispositivos tan rápidos, lo máximo los Kinetis MK66 a 180 Mhz, y estos lo llevan todo dentro del microcontrolador.

De QSPI, pedí estos dos modelos, ambas a 133 Mhz, de 64 Mbit y 128Mbit.
https://www.mouser.es/ProductDetail/870-25LP064A-JBLE
https://www.mouser.es/ProductDetail/870-IS25LP128-JBLE

Los avances y algunas dudas que me van surgiendo, por ejemplo con el DMA, las voy planteando en los foros de EEVBlog, allí hay bastante movimiendo y participación. Lo curioso es que en los foros de NXP, apenas contesta nadie a los posts, solo de vez en cuando y casi siempre técnicos de NXP (aunque las respuestas que dan no suelen aportar mucho).

http://www.eevblog.com/forum/microcontrollers/nxp-rt1020-programdebug-by-swd/
http://www.eevblog.com/forum/microcontrollers/dma-memory-to-peripheral/

Ahora me estoy planteando si comprar esta nueva placa de evaluación para el RT1050, fabricada por Embedded Artists.

https://www.mouser.es/ProductDetail/924-EAK00296

Lo bueno que tiene con respecto a la de NXP, es que te da acceso a todos los puertos del microcontrolador, mientras que la de NXP solo te pone unos conectores tipo Arduino con unos pocos puertos. Con respecto al RT1020, como no está todavía disponible el LQFP144, no puedo hacer mi placa con SDRAM, que me interesa mucho para cargar datos y programa para una aplicación que necesita un acceso muy rápido y mucha capacidad en RAM.

Ahora lo tengo todo en fase de pruebas, pero mi intención es usar el RT1020 LQFP144 para casi todos mis diseños, con QSPI y SDRAM. Solo en algunos casos en que no necesite la SDRAM, para proyectos sencillos, usaré el LQFP100 con QSPI nada más.

Incluso he pensado en atreverme con el RT1050 en BGA, ahora que tengo la Pick and Place, pero haciendo un sistema modular, con el micro en una pequeña plaquita a 4 capas, algo tipo SODIM o con otro tipo de conectores de menos pines según la aplicación. En principio la única ventaja que le veo al RT1050, es que incorpora controladores para displays TFT.


Contanos tu experiencia cuando tengas el micro montado... en especial con el firmware de NXP que según vi esta un poco verde para estos micros (va lo verde es el MCUExpresso porque las librerías son las imx-6/7/8 revampeadas para tener los IPCore en su configuración correcta)

En MCUXpresso, lo único que echo en falta para los RT, es las Peripheral Tools, me dijeron en los foros de NXP, que estarán disponibles en el último trimestre de este año. Creo que coincidirá todo, disponibilidad del RT1020 LQFP144, y liberación del SDK con soporte para las Peripheral Tools.

A mi lo que más me gusta de MCUXpresso, tanto para Kinetis como para los RT, es la cantidad de fuentes de ejemplo que lleva el SDK, es genial. Tienes una opción directa crear tu proyecto a partir de los ejemplos que trae el SDK. Por contra, no creo haber visto nada parecido en ST, con sus STM32, allí puedes echar mano del Cubemx, pero no te dan ningún fuente de ejemplo de programas modelo. Para mi es algo bastante importante, lo ví por primera vez en el entorno de Arduino, es una de las pocas cosas que me parecieron geniales, igual que su sistema de Debug usando printf  para enviar cualquier variable a una ventana de puerto serie.
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: rusotech en 11 de Septiembre de 2018, 17:14:44
Bueno... va tomando forma lentamente:
(https://lh3.googleusercontent.com/-RQ_E2xbdA3M/W5dTbjIsytI/AAAAAAAADC4/RiJ7i8jhoH85nLO8xc7Xedsz1KAe3elJQCL0BGAYYCw/h519/2018-09-10.png)

Algunos cambios:


En estos dias estoy haciendo la compra en digikey ni bien me respondan cuanto van a tardar en mandarmelo desde la fabrica de NXP (ellos no lo tienen en stock, tienen que pedir a fabrica)
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 11 de Septiembre de 2018, 17:54:26
 
Está muy bien.
¿ Que tamaño de pasivos estás usando ?, se ven muy pequeños, 0402 o incluso 0201. Yo lo más pequeño que uso es 0603, aunque mi máquina de Pick and Place creo que puede montar hasta 0402, pero contra más pequeños sean menos precisión tiene. Me gustaría dejarlo todo como mucho a 0603, y lo que sea posible incluso más grande.

Lo del boot no lo he mirado todavía, en mi prototipo de momento he puesto los mismos DIP switches que en la placa de evaluación de NXP, aunque creo que todo eso se puede eliminar programando los fuses internos para que el boot sea fijo, por ejemplo siempre desde QSPI.

¿ Que funciones tiene el jumper de tu boot ?.

¿ Sobre el conector de programación, no has pensado en cambiarlo por uno tipo TC2050?, este no necesita conector en el PCB, solo la huella para que enganche el conector TC2050. Yo ya no pongo conector de programación en ninguno de mis nuevos diseños, solo la huella para el conector TC2050, que compré en Digikey junto al adaptador JTAG para el Jlink de SEGGER.

Te dejo unas fotos del TC2050, en una de mis placas, es un conector de 2x5 muy pequeño (JTAG/SWD), con pestañas para fijarlo al PCB. Lo hay incluso más pequeño (TC2030) de 2x3 para usar solo SWD, y aún más pequeños sin pestañas, pero esos los tienes que sujetar con la mano porque no se enganchan a la placa, solo se quedan presionando los pines sobre los pads de la placa.


(https://i.imgur.com/bABmbT7.jpg)

(https://i.imgur.com/bDOiPjQ.jpg)

(https://i.imgur.com/Ypucn6a.jpg)

(https://i.imgur.com/c2uPztH.jpg)
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: juaperser1 en 16 de Septiembre de 2018, 06:45:37
Ya que has usado estos micros te pregunto, has utilizado modo bajo consumo con bateria?? Que tal va, se que no es un ultralow power de los de texas pero que tal va de consumo?

Has encontrado algun error en algún periferico? Uart, rtc, can...?
Para guardar en memoria supongo que no habra muchos cambios por que sea externa.
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 16 de Septiembre de 2018, 08:29:15
 
No he probado temas de bajo consumo, estoy centrado principalmente en dominar el DMA, que es lo que más me interesa. Probando DMA con SPI y Periférico a Memoria para leer varios GPIO almacenando en un array.

Ya casi tengo dominado el DMA, luego me quiero poner a probar todo el tema del boot, desde QSPI, SD y con el RT1050 también con la hyperflash. Y lo último, bien con las placa de evaluación que tengo para el RT1020 y el RT1050, o creando mi propio prototipo con un LQFP144, es probar la SDRAM, la idea es que el firmware arranque desde QSPI, se copie a SDRAM y se ejecute desde allí, para conseguir el máximo rendimiento.

De periféricos solo he probado el SPI, y probaré el USB para grabar el firmwae con las MFG Tools, pero confío mucho en NXP, creo que hace un muy buen producto, y todo lo que proporciona es de calidad.

La memoria se gestiona igual que si fuera interna, solo que si quieres que el firmware se ejecute en SDRAM tienes que activarle un parámetro en la configuración de la compilación en MCUXpresso. Además, cuando creas la imagen del programa, tienes opción a configurarle que la encripte, esto es importante para la versión final de un producto comercial, para que no te lo copien, en la fase de desarrollo por comodidad puedes tenerlo desactivado. Con unos fuses internos, configuras el arranque, desde SD, QSPI o Hyperflash (en los LQFP144).


Configurando MXUxpresso, para que la aplicación se copie y ejecute en SDRAM externa, después de haber arrancado desde SD, QSPI o Hyperflash. Tengo por aquí chips SDRAM de 256Mbit y 512Mbit para las pruebas.

(https://community.nxp.com/servlet/JiveServlet/downloadImage/102-341317-3-232797/pastedImage_8.png)
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: rusotech en 18 de Septiembre de 2018, 10:58:20
Citar
Está muy bien.
¿ Que tamaño de pasivos estás usando ?, se ven muy pequeños, 0402 o incluso 0201. Yo lo más pequeño que uso es 0603, aunque mi máquina de Pick and Place creo que puede montar hasta 0402, pero contra más pequeños sean menos precisión tiene. Me gustaría dejarlo todo como mucho a 0603, y lo que sea posible incluso más grande.

Estoy usando 0402 en los capacitores de desacople finos (0.22u y 0.1u), resistencias en 0402 y el resto de los capacitores en 0603 o 0805 (salvo el de 33u del DCDC que es de 1206)

En si, uno nunca debe bajar de 0402 para producción que no sea de alta presición. He hecho algunas cosas con 0201 e incluso con 01002 pero no es fácil conseguir quien los monte.
Cuando elegí los componentes pensaba hacerlo todo en 0603 pero viendo las simulaciones de hyperlinx me convencieron de pasarme a lo recomendado por el fabricante que es 0402 en la mayoría de los capacitores de desacople. Posiblemente podriamos intentar una segunda versión volviendo a 0603 pero ya con los capacitores del otro lado de la placa (aquí el plus en el diseño era hacerlo montable en una sola pasada)

Te animo a que pruebes 0402 en tu P&P. Con un poco de maña sale bien.

Citar
Lo del boot no lo he mirado todavía, en mi prototipo de momento he puesto los mismos DIP switches que en la placa de evaluación de NXP, aunque creo que todo eso se puede eliminar programando los fuses internos para que el boot sea fijo, por ejemplo siempre desde QSPI.

¿ Que funciones tiene el jumper de tu boot ?.

El boot en si es simple. Hay tres modos seleccionables con BOOT0(A0) y BOOT1(A1) (si... no se a quien se le puede ocurrir poner pines de bootstrap en señales rápidas):


El modo 10 es bastante dificil de entender pero en resumidas cuentas, lee los pines de A2 hasta A10 para determinar el boot. Esto es una molestia porque obliga a streappear todas las lineas con dipswitchs. Tambien es inutil porque esa misma configuracion puede hacere una vez en el startup de la placa grabando los eFUSEs correctamente. Entre otras opciones lo que controla es el boot device que, la unica cosa interesante que tiene es poder bootear desde SD (en modo RAW... nada de fatFS ni cosas raras)

Desestime por completo toda la funcionalidad de poder elegir esas cosas y me quede con el boot por QSPI y el rom bootloader, que es lo que elige el jumper. Cuando esta puesto fuerza a 1 el pin A0 (BOOT0) mientras que A1 (boot1) esta streapeado con una resistencia de 10K a masa bien cerca de la terminación de la SDRAM para que no moleste.

Citar
¿ Sobre el conector de programación, no has pensado en cambiarlo por uno tipo TC2050?, este no necesita conector en el PCB, solo la huella para que enganche el conector TC2050. Yo ya no pongo conector de programación en ninguno de mis nuevos diseños, solo la huella para el conector TC2050, que compré en Digikey junto al adaptador JTAG para el Jlink de SEGGER.

Los he mirado con ganas durante mucho tiempo pero esta totalmente afuera de mi presupuesto... considera que mi hora laborable esta en los 3usd en este momento en mi país  :5] :5] :5] :5] :5]

PD: Respondo las consultas sobre ruteo de planos de masa en el otro hilo
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 19 de Septiembre de 2018, 08:20:05
En si, uno nunca debe bajar de 0402 para producción que no sea de alta presición. He hecho algunas cosas con 0201 e incluso con 01002 pero no es fácil conseguir quien los monte.

Yo terminé hace poco un diseño con 0201 para un cliente, pero él se lo monta, yo solo les hago el diseño. Les pregunté si la empresa que les monta las placas podían con los 0201, y me confirmaron que sí.

Citar
Te animo a que pruebes 0402 en tu P&P. Con un poco de maña sale bien.

En teoría la Neoden4, puede con los 0402, pero aún no lo he probado. Suelo usar para pasivos lo más grande que puedo, normalmente 1206, aunque si que he llegado a bajar hasta 0603 en algunos diseños montados a mano, y no hubo ningún problema posicionando a microscopio (cuando no tenía la Pick and Place).

Citar
Entre otras opciones lo que controla es el boot device que, la unica cosa interesante que tiene es poder bootear desde SD (en modo RAW... nada de fatFS ni cosas raras)

No tengo claro todavía, si usaré la SD como arranque, creo que me decantaré por la QSPI. De todas formas, hablas de arranque con la SD en RAW, sin ningún formato tipo FAT32 o similar, en ese caso, si luego en la aplicación quisieramos usar la SD con FATFS, ¿ no se podría ?.

Una de las cosas que aún no se como hacer es el sistema de actualizaciones de firmware para el cliente, en un producto comercial. Con los Kinetis, tengo un bootloader encriptado, que va de fábula. Para los RT, si el arranque fuera desde SD, entiendo que podría dar un archivo imagen para que el cliente lo grabe en su SD con algún programa como los que se usan para crear imágenes para la SD en las Raspberry. El problema es que perdería la funcionalidad de la SD como almacenamiento de archivos de configuración para mis aplicativos, usado FATFS y tarjetas en FAT32.

Otra opción, es que la placa tenga un micro USB, y el cliente tenga que conectar al ordenador, y con el utilitario de NXP, grabe el firmware a la QSPI usando las MFG Tool, esta es la opción que menos me gusta, prefiero actualizaciones por SD, aunque al menos derjaría libre la SD para almacenamiento de archivos de trabajo con el aplicativo con FATFS.

Y la última opcion que se me ocurre, es tratar de hacer un bootloader, pero no tengo información de como podría hacerlo leyendo el nuevo firmare desde la SD y grabándolo en la QSPI. Tendría que crear un bootloader, que quedaría grabado de manera permanente en la QSPI, y al arrancar iría a buscar en la SD algún archivo de actualización, si lo encuentra lo lee y graba el firmware en la QSPI y luego arranca.

Lo que si que tengo claro, es que quiero usar la SDRAM, para que mis programas se ejecuten desde ahí. Ya ví en MCUXpresso como se compila para que arranque desde QSPI o SD, y automáticamente el objeto se copie a la SDRAM y se ejecute. Pero para eso necesito el LQFP144, que aún no está comercializado, estoy por sacar uno de las placas de evaluación de NXP que tengo, y montar mi propio prototipo con SDRAM, y ya puestos con el mismo sistema de boot con un solo jumper que tú has puesto.


Citar
Desestime por completo toda la funcionalidad de poder elegir esas cosas y me quede con el boot por QSPI y el rom bootloader, que es lo que elige el jumper. Cuando esta puesto fuerza a 1 el pin A0 (BOOT0) mientras que A1 (boot1) esta streapeado con una resistencia de 10K a masa bien cerca de la terminación de la SDRAM para que no moleste.

¿ El modo rom bootloader, es el Serial Downloader para cargar firmware con las MFG Tool por USB ?.
Yo en la placa de evaluación para pruebas, he puesto dip switches a todos las lineas, como en la placa de evaluación, pero en mis diseños finales no habrá nada de eso, estará todo programado con los fuses.

¿ Sabes si los pines conectados con dip switches, una vez arrancado el firmware se pueden usar como puertos ?

El tema fuses aún no lo he mirado. ¿ Se pueden reprogramar todas las veces que se quieran, o una vez programados ya no hay manera de cambiarlos ?. Leí en los foros de Teensy, sobre el nuevo 4.0, que montará el RT1050, y algo de los fuses comentaban, sobre que una vez programado, ya era irreversible.


Citar
¿ Sobre el conector de programación, no has pensado en cambiarlo por uno tipo TC2050?, este no necesita conector en el PCB, solo la huella para que enganche el conector TC2050. Yo ya no pongo conector de programación en ninguno de mis nuevos diseños, solo la huella para el conector TC2050, que compré en Digikey junto al adaptador JTAG para el Jlink de SEGGER.
Citar
Los he mirado con ganas durante mucho tiempo pero esta totalmente afuera de mi presupuesto... considera que mi hora laborable esta en los 3usd en este momento en mi país  :5] :5] :5] :5] :5]

Juer, pues si que está mal la cosa por ahí. A mi en general me va bastante bien, no me puedo quejar, además buena parte de lo que fabrico se va fuera de España, principalmente a Francia, Alemania, Italia, Reino Unido y Estados Unidos. Aparte recibo encargos de productos a medida, también de fuera de España, acabo de terminar un encargo para una empresa americana, y todo sin problemas.
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: rusotech en 21 de Septiembre de 2018, 21:10:22
Citar
Yo terminé hace poco un diseño con 0201 para un cliente, pero él se lo monta, yo solo les hago el diseño. Les pregunté si la empresa que les monta las placas podían con los 0201, y me confirmaron que sí.

Es bastante normal en china contar con maquinas "baratas" (para el mercado) que permiten incluso montar 01002 sin mucho esfuerzo. De todas formas son maquinas que requieren ajustes constantes y un personal especializado. Para uso comun tu Neoden4 deberia andar perfecto con 0402.

Citar
No tengo claro todavía, si usaré la SD como arranque, creo que me decantaré por la QSPI. De todas formas, hablas de arranque con la SD en RAW, sin ningún formato tipo FAT32 o similar, en ese caso, si luego en la aplicación quisieramos usar la SD con FATFS, ¿ no se podría ?.

Segun entiendo del datasheet, la imagen dentro de la FLASH tiene un offset especifico que no entra dentro de los 512 bytes del MBR (que define la tabla de particiones) asi que no habria problema en en dejar una porcion de la SD en RAW y montar el resto de la/las particiones mas arriba.

Citar
Una de las cosas que aún no se como hacer es el sistema de actualizaciones de firmware para el cliente, en un producto comercial. Con los Kinetis, tengo un bootloader encriptado, que va de fábula. Para los RT, si el arranque fuera desde SD, entiendo que podría dar un archivo imagen para que el cliente lo grabe en su SD con algún programa como los que se usan para crear imágenes para la SD en las Raspberry. El problema es que perdería la funcionalidad de la SD como almacenamiento de archivos de configuración para mis aplicativos, usado FATFS y tarjetas en FAT32.

Yo las veces que lo he hecho para distintos lugares donde trabajé, usaba un bootloader propio desde la FLASH interna... solo una vez toco hacer algo en flash externa en la que usaba un zynq Z7010 que booteaba desde una QSPI. Por suerte, el micro soportaba grabar una clave AES en PROM para encriptar el bootloader QSPI que luego permitia cargar un u-boot encriptado desde SD (no habia forma de bootear desde SD con el romBOOT en ese pinout)

Lo que yo haria (y de hecho si tengo tiempo haré) para este micro, es armar un bootloader secundario (fuera del serial bootloader que se accede con las MFG Tools) que este encriptado (requiere grabar clave AES en eFUSEs) que pueda leer archivos en FAT (o exFAT que para eso Elm Chan le dio soporte!)

En si, es un lindo proyecto que seria interesante encarar. Si te resulta util, podemos armar algo en github y avanzar desde ahi.

Citar
Lo que si que tengo claro, es que quiero usar la SDRAM, para que mis programas se ejecuten desde ahí. Ya ví en MCUXpresso como se compila para que arranque desde QSPI o SD, y automáticamente el objeto se copie a la SDRAM y se ejecute. Pero para eso necesito el LQFP144, que aún no está comercializado, estoy por sacar uno de las placas de evaluación de NXP que tengo, y montar mi propio prototipo con SDRAM, y ya puestos con el mismo sistema de boot con un solo jumper que tú has puesto.

Estaria de lujo que nos cuentes como va con eso... aunque de digikey me dijeron que, aunque no tienen fechas de entrega, estiman que el fabricante va a cumplir los plazos esperados para octubre (que era la fecha estimada desde hace casi medio año)

Citar
¿ El modo rom bootloader, es el Serial Downloader para cargar firmware con las MFG Tool por USB ?.
Yo en la placa de evaluación para pruebas, he puesto dip switches a todos las lineas, como en la placa de evaluación, pero en mis diseños finales no habrá nada de eso, estará todo programado con los fuses.

Correcto, colocando el jumper el micro esperaria comandos del MFG Tool por usb y/o serial. Los dipswitch serian ignorados siempre que uses BOOT1 en 0.

Citar
¿ Sabes si los pines conectados con dip switches, una vez arrancado el firmware se pueden usar como puertos ?

Es correcto, como todos los pines de bootstrap, el rom boot lee los estados al arranque y luego los deja libres para operar. Esto es particularmente molesto porque estan en pines "rapidos" como A0 a A11 de la SDRAM, lo que obliga a ponerlos debajo del PCB (como en la placa de desarrollo de nxp) o usar los eFUSES (como en mi caso)

Citar
El tema fuses aún no lo he mirado. ¿ Se pueden reprogramar todas las veces que se quieran, o una vez programados ya no hay manera de cambiarlos ?. Leí en los foros de Teensy, sobre el nuevo 4.0, que montará el RT1050, y algo de los fuses comentaban, sobre que una vez programado, ya era irreversible.

Entiendo que los eFUSEs son PROM y no FLASH asi que no seria buena idea programarlos de forma despreocupada. Eso si, se puede enmascarar algunos de los pines de bootstrap. Es decir, poner solo los necesarios a pines y los otros desde eFUSEs. Tengo que estudiar mas el asunto... ni bien lo tenga claro lo posteo en este foro  ;-)

Citar
Juer, pues si que está mal la cosa por ahí. A mi en general me va bastante bien, no me puedo quejar, además buena parte de lo que fabrico se va fuera de España, principalmente a Francia, Alemania, Italia, Reino Unido y Estados Unidos. Aparte recibo encargos de productos a medida, también de fuera de España, acabo de terminar un encargo para una empresa americana, y todo sin problemas.

Pessss... Argentina es un mundo aparte... entiendo que en España no son Alemania ni Suecia pero no llegan al nivel de mi pais (las cosas basicas funcionan y la moneda es estable)
El unico lugar que esta peor que argentina es Venezuela y allí el problema ya no es trabajar sino directamente comer...

Una buena cosa que tiene estar en España es que existen en el radar mundial... Fui a china en 2016 y la mitad de la gente con la que me tope no podia ubicar en el mapa mi pais... creian que estaba cerca de italia o algo asi...  :lol: :lol: :lol: :lol:

Supongo que si las cosas se complican mas, tendre que emprender el camino inverso a mis bisabuelos de hace 100 años  :(
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 21 de Septiembre de 2018, 22:30:23
Segun entiendo del datasheet, la imagen dentro de la FLASH tiene un offset especifico que no entra dentro de los 512 bytes del MBR (que define la tabla de particiones) asi que no habria problema en en dejar una porcion de la SD en RAW y montar el resto de la/las particiones mas arriba.

Eso estaría bien, así podría arrancar desde SD y usar desde mi firmware la tarjeta para almacenar archivos de datos y configuración.

El caso es poderle dar al usuario las actualizaciones de firmware para carga desde SD, es lo que uso con los Kinetis por medio de un bootloader encriptado, lo prefiero a usar USB y tener que conectar a un PC.


Citar
Lo que yo haria (y de hecho si tengo tiempo haré) para este micro, es armar un bootloader secundario (fuera del serial bootloader que se accede con las MFG Tools) que este encriptado (requiere grabar clave AES en eFUSEs) que pueda leer archivos en FAT (o exFAT que para eso Elm Chan le dio soporte!)

En si, es un lindo proyecto que seria interesante encarar. Si te resulta util, podemos armar algo en github y avanzar desde ahi.

Si, sería muy interesante, para mi lo primordial es disponer de un bootloader encriptado, imprescindible para poder dar actualizaciones a los clientes. Es lo primero que miro y desarrollo cuando empiezo a trabajar con una nueva familia de microcontroladores.

Supongo que lo único a estudiar, es como grabar en la QSPI, si la usamos como sistema de arranque, metiendo ahí un pequeño bootloader encriptado que lea desde la SD y grabe a partir de cierta página (si es que la QSPI también va por páginas, y se graba como la flash).

Mi duda, de todas formas, es como se puede combinar eso con el arranque desde QSPI, con copia automática a SDRAM para que se ejecute todo desde la SDRAM. Porque si se compila para arranque desde QSPI con copia a SDRAM, lo que se transfiere a la SDRAM es solo el bootloader, no la aplicacion de usuario.


Citar
Lo que si que tengo claro, es que quiero usar la SDRAM, para que mis programas se ejecuten desde ahí. Ya ví en MCUXpresso como se compila para que arranque desde QSPI o SD, y automáticamente el objeto se copie a la SDRAM y se ejecute. Pero para eso necesito el LQFP144, que aún no está comercializado, estoy por sacar uno de las placas de evaluación de NXP que tengo, y montar mi propio prototipo con SDRAM, y ya puestos con el mismo sistema de boot con un solo jumper que tú has puesto.
Citar
Estaria de lujo que nos cuentes como va con eso... aunque de digikey me dijeron que, aunque no tienen fechas de entrega, estiman que el fabricante va a cumplir los plazos esperados para octubre (que era la fecha estimada desde hace casi medio año)

El sistema de actualizaciones y esto de ejecutar desde la SDRAM es lo que más me interesa, porque necesito mucha velocidad y cargar tablas bastante gordas en la SDRAM para un acceso muy rápido. Compré varias SDRAM de 256Mbit y 512Mbit, para montar un prototipo con un LQFP144, sacando el micro de una de las placas de evaluación que tengo, o también se puede probar en la propia placa de evaluación de NXP.
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 22 de Septiembre de 2018, 17:24:19
 
He abierto un proyecto en mi cuenta de Gitlab, si quieres podemos ir colgando ahí lo que vayamos creando para los RT, empezando por un sistema de bootloader encriptado.

Hay muchas más cosas interesantes que se pueden ir colgando, yo en cuanto profundice con el DMA, puedo colgar proyectos para MCUXpresso totalmente funcionales, y cualquier otra cosa que vaya surgiendo.

Este es el enlace a mi cuenta de Gitlab para colgar y ver cosas, en el apartado que he creado para los RT. Desde que Microsoft compró Github, prefiero usar Gitlab, como muchos otros usuarios.

https://gitlab.com/pinballsp/proyectos-nxp-i.mx-rt-series

Ahora mismo, precisamente, tengo unas cuantas placas que montar de varios prototipos que he diseñado, tengo dos con el RT1020.
Título: Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
Publicado por: planeta9999 en 03 de Octubre de 2018, 16:12:23
 
Ya monté mis placas. Una con un RT1020 LQFP100, y la otra es una placa de expansión para pincharla en la placa de evaluación de NXP, con un conector tipo Arduino.

La ventaja de la placa de expansión, es que puedo usar el LQFP144 con la SDRAM que instala NXP, porque de momento los LQFP144 no están disponibles, aunque queda ya muy poco, según NXP para Diciembre los tenemos.


(https://i.imgur.com/ZelwuNo.jpg)

(https://i.imgur.com/PMa0ClA.jpg)

(https://i.imgur.com/fgJuzUF.jpg)

(https://i.imgur.com/kV5X9DW.jpg)