contiki sobre la programación de aire
flash shell (2)
Para que funcione la over the air (OTA) Programming
, su propia base de código necesita trabajar en la parte superior de otra capa (por lo tanto, otros usuarios que mencionen también pueden ver los ejemplos de shell).
Es comparable al kernel de Windows que ejecuta un ejecutable y necesita actualizarse.
1: Kernel descarga foo y lo guarda en su sistema de archivos.
2: El kernel finaliza el antiguo programa foo e inicia el nuevo programa foo después de la validación de algunos archivos requeridos.
3: Si todo está bien, el antiguo programa foo se elimina.
Ahora, como puede ver, al momento de la actualización, su programa debe estar dos veces en el mismo dispositivo (el anterior y el nuevo).
Espero que esto brinde más información sobre cómo funciona la programación de OTA.
Así que trataré de responder sus preguntas una por una ahora:
1) Para distribuir los archivos a todos los otros nodos, se usa diluvio. Ahora usar diluvio es bastante difícil de usar. La siguiente publicación en la lista de correo de contiki da una idea básica de lo que hace el ejemplo del código para el cielo. http://permalink.gmane.org/gmane.os.contiki.devel/4884 .
2) Cada mote necesita un caparazón que necesita ejecutarse para ejecutar la aplicación del diluvio. Y un nodo receptor (el que transmite el archivo más nuevo) necesita llamar a la función deluge_dessiminate () para distribuir (dessiminar) el nuevo programa.
3) El código se almacenará en el sistema de archivos de café. Deluge automáticamente (detrás de las escenas de deluge_dessiminate y la aplicación del diluvio en su nodo del cielo) guarda el nuevo archivo en el flash del nodo del cielo. Una vez hecho esto, debe ejecutar este programa utilizando el cargador ELF. Ya que necesita que su programa sea un archivo compilado de ELF para ser ejecutado por el ELF_LOADER de contiki.
4) ¿Creo que te refieres a ROM? Pero sí, necesita código adicional para admitir la programación OTA y necesita el doble del espacio del tamaño de su aplicación. Todos los módulos que dices que necesitas probablemente necesites programarte en el lado de la carcasa. la verificación del archivo puede ser realizada por CRC verificando su archivo.
De hecho, esto es mucho trabajo y sugiero que esto sea pequeños pasos.
1: ejecuta un programa usando el cargador ELF que está guardado en el sistema de archivos de café.
2: dessiminate (diluir) su propio archivo (aleatorio) desde un nodo receptor a los otros nodos
3: dessiminate un archivo ELF.
4: ejecute un archivo diluido_deslinado usando el cargador ELF.
y 5: ¡Crea un tutorial para los otros chicos y comparte el conocimiento!
Espero que esto te ayude de cualquier manera.
Estoy comenzando con contiki en el cielo mote a través de un proyecto. Estoy tratando de superar la programación de aire para trabajar ahora mismo.
He estado buscando ejemplos / sky-shell-exec y apps / shell /. Siento que necesito alguna combinación de la funcionalidad que se proporciona a través de sky-shell-exec y posiblemente test-deluge o codeprop. Sin embargo, leer el código me ha llevado a algunos bloqueos conceptuales con respecto a qué código debe implementarse y qué código ya se proporciona con el fin de obtener algo de la funcionalidad de programación de aire (soy muy nuevo en esto y no he tenido mucho exposición a sistemas integrados en absoluto). Me disculpo porque mis preguntas son a veces vagas y poco claras, pero esto se debe a mi confusión general y realmente no sé cómo proceder mejor. Principalmente estoy buscando algo pequeño (programa de ejemplo) que funcione ahora mismo, que simplemente pueda enviar código a una mota y luego reprogramarlo utilizando el código enviado (por ejemplo, el código enviado puede ser simplemente hello-world).
1) ¿Cómo simplemente envío el código a la mote en el aire? Siento que el diluvio de prueba es la parte de transmisión "inalámbrica" del problema de la programación inalámbrica, pero no lo entiendo del todo.
2) ¿Qué código debería ejecutarse en una mota para recibir el código de aire?
3) ¿Cómo sé dónde se almacena este código y luego sé cómo cargarlo? Siento que este paso es el sky-shell-exec más o menos, pero de nuevo no lo entiendo del código.
4) Estoy leyendo muchas cosas en la web que dicen que la programación en el aire es difícil si la base de código es grande ya que el RAM es limitado. ¿Dónde, en general, estoy almacenando mi código cuando se transmite de forma inalámbrica y cómo sé / verifico que está allí? Además, ¿cómo puedo saber simplemente si tendré problemas de almacenamiento de memoria debido al tamaño del código (eventualmente para el proyecto será necesario transmitir una gran base de código y no solo módulos individuales)?
Pido disculpas de nuevo por cualquier ignorancia injustificada y me doy cuenta de que hay otro hilo similar a este, pero he descubierto que necesito una explicación más detallada de cada componente que se menciona allí (el hilo es: Programación de Air para Contiki ).
Gracias
No puedo decirte cuántas veces volví a este post mientras trataba de implementar OTA en Contiki. Sé que esta es una vieja pregunta, pero para cualquiera que esté buscando un ejemplo funcional, implementé OTA a través de CoAP (originalmente HTTP) para el CC2650, con el servidor en NodeJS.
Podría ser más prolijo, pero puedes leer el tutorial: http://marksolters.com/programming/2016/06/07/contiki-ota.html
Analiza la arquitectura de la imagen, el mecanismo de transporte y la validación de la descarga de forma abstracta, por lo que la información no está realmente vinculada al CC2650 de forma exclusiva.
No utilicé enlaces dinámicos. Conecté de forma estática mis binarios y desarrollé un gestor de arranque que los escribe en una dirección flash conocida. Nunca he visto trabajar elfloader en Contiki.
- Aquí está la fuente de ejemplo de Contiki: https://github.com/msolters/contiki/tree/master/examples/cc26xx-ota-bootloader
- Aquí está el origen del servidor OTA: https://github.com/msolters/ota-server
¡Espero que esto ayude!