Usando Arduino como un Host del cargador de arranque incorporado (ISP) I2C PSOC

0

Estoy trabajando en un proyecto que implica usar un Arduino junto con varios chips PSOC-049-42xxx.

Quiero poder actualizar el firmware en los PSOC simplemente actualizando el archivo hex en Arduino y haciendo que empuje un nuevo archivo hexadecimal a cada PSOC.

He estado leyendo esto, pero realmente no me ha ayudado mucho. Tal vez alguien aquí podría darme algunos consejos? enlace

Enlace de DropBox al proyecto arduino < < Hasta ahora tengo las funciones API proporcionadas por Cypress y mi entendimiento es que necesito producir las funciones de la capa de comunicación.

Sin embargo, parece que recibo MUCHOS errores con estas funciones de la API, y realmente no estoy muy seguro de cómo portarlos. La ayuda sería muy apreciada.

Tal como está, tengo un proyecto de gestor de arranque preparado para el PSOC, con I2C habilitado y un método para permitir que el dispositivo obtenga su propia dirección mediante la lectura de tres bits de los pines externos. Tengo un bus I2C activo que sé que funciona, ya que lo he estado utilizando para hacer ping de bytes de un lado a otro para otros proyectos. Donde estoy atascado es implementar un host de gestor de arranque dentro del Arduino que analizará un archivo hexadecimal o cyacd que se carga en el Arduino en el momento de la programación, y lo pasa a cada PSOC a su vez sobre I2C.

Actualmente estoy tratando de dar un masaje a estas funciones de la API para simplemente dejar de hacer que cometan un montón de errores antes de que pueda siquiera pensar en cómo manejar las comunicaciones

    
pregunta GigaJoules

1 respuesta

3

Mirando la complejidad involucrada, no continuaría con su plan como lo es ahora, es decir, pasar de "nada" directamente a "Arduino como PSOC I2C Bootloader Host". Esto se debe a que, como está descubriendo, su nota de aplicación asume que su PSOC Bootloader Host es otro PSOC.

He estado en (y visto a otras personas en) situaciones similares varias veces, es decir, la documentación sobre cómo hacer que X asume el hardware A y la cadena de herramientas B, pero su proyecto utiliza el hardware C y la cadena de herramientas D. Ya que ya tiene elementos C y amp ; D, crees que ahorrarás tiempo y dinero directamente a C & D y evitando A & B (que son los descritos en la documentación).

Sin embargo, sin ser capaz de utilizar gran parte de la documentación, puede ser una lucha mucho más importante que ir directamente a C & D de lo que aparece al principio. En cambio, la ruta aparentemente "más larga" de obtener A & B (como se documenta y se sabe que funciona) la configuración primero, y luego se migra a C & D (su configuración final de destino) puede ser mucho más rápido al final.

Por lo tanto, por experiencia, recomiendo un enfoque como este:

  • Siga la nota de la aplicación, compre los kits de PSOC recomendados (para Host y Target del gestor de arranque) como se describe en esa documentación, para que pueda seguir la documentación exactamente .

  • Haz que funcione. Si tiene algún problema, puede hacer preguntas a los canales de soporte normales del fabricante & foros, etc., ya que está siguiendo exactamente su nota de aplicación en esta etapa.

  • Use un analizador lógico para registrar, revisar y comprender las transferencias de datos I2C que se usan durante el proceso de arranque exitoso.

  • Solo después de hacer eso, luego comienzas a portar el código Host del cargador de arranque en el Arduino. Ahora tiene la ventaja de tener un dispositivo de destino de gestor de arranque conocido y las grabaciones de las transferencias de datos I2C correctas por el uso de un host de cargador de arranque PSOC, que debe coincidir con su código de host del cargador de arranque Arduino. Si tiene problemas, puede comparar el comportamiento exacto entre el Host del gestor de arranque PSOC (que primero funcionó, como se explicó anteriormente) y el Host del gestor de arranque Arduino.

respondido por el SamGibson

Lea otras preguntas en las etiquetas