[Butia-devel-list] Firmware Butiá

Alan Jhonn Aguiar Schwyn alanjas en hotmail.com
Vie Mar 4 13:18:56 -03 2022


Buenas,

Ayer estuve haciendo unas pequeñas modificaciones al firmware de Butiá, para hacer unas pruebas. Me encontré con un problema que venía pasando en los últimos tiempos que compilamos el firmware y nunca lo resolvimos: la obsolescencia del firmware.

Actualmente el firmware necesita ser compilado con el compilador C18, el cual ya es obsoleto. Para poder usarlo, hay que tener un sistema 32 bits, cosa que también ya es obsoleta (desde Ubuntu 17, ya no se distribuye en 32 bits). El nuevo MPLAB también es para sistemas 64 bits, para usar el C18 hay que bajar una versión vieja del Mplab.
Esto lo descubrí por la vía larga: ayer tuve que dar montones de vueltas hasta lograr hacerlo andar:

En mi computadora tengo Ubuntu 21.10, de 64 bits. Bajé el MPLAB versión 6.0 para editar el código del firmware. Después encontré el "toolchain/compilador" C18 para compilar el firmware. cuando intenté instalarlo, no me dejaba porque esa última versión (que tiene como 8 años) es para sistemas de 32 bits.
Así que busqué cuál era el último Ubuntu que se compiló en 32 bits y resulta que es el 17.10, que ya no tiene soporte. Así que hice una máquina virtual con el 16.04 que, aunque no tenga soporte, lo tuvo hasta 2021. Después de instalarlo, bajé nuevamente el MPLAB pero la versión 6.0 solo funciona en 64 bits, así que tuve que buscar una versión vieja que anduviera en 32 bits. Encontré la 5.30 que tenía compatibilidad y lo instalé. Luego, finalmente, pude instalar el C18 para compilar el firmware.

Por suerte el código sigue estable, cloné el repositorio de Usb4all, abrí el proyecto en MPLAB y compila de una, sin problemas (ni warnings).

Pero todo esto no es lo ideal, si el firmware no se actualiza a una nueva versión, va a quedar totalmente obsoleto. Sin posibilidad de corregir algún error que encontremos o agregar/modificar cosas que sirvan a futuro.

El compilador C18 hace mucho que está obsoleto. El nuevo compilador XC8 (y XC16, XC32) es ahora el usado en todos los proyectos con PICs de 8 bits (y 16 y 32).

Estuve viendo a grandes rasgos y la mayoría del código no varía entre uno y otro, pero hay cambios debido al lenguaje C que pasa de una versión vieja a una más nueva.
Algo que se saca son las declaraciones "rom/ram" y aquello de "near/far" que se usa para alojar punteros a memoria del espacio de programa o de la ram.

¿Hay alguien con ganas de trabajar en esto? Mis conocimientos de C y de PIC son muy básicos. Sólo me va a llevar demasiado tiempo.

Saludos

Alan
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://www.fing.edu.uy/pipermail/butia-devel-l/attachments/20220304/d657ddf3/attachment.html>


Más información sobre la lista de distribución Butia-devel-l