Hola,
Estoy haciendo pruebas con webUSB[1] que permite acceder a los dispositivos USB desde el navegador. En principio desde cualquier plataforma, incluidos los teléfonos móviles
Estoy empezando por lo más básico: acceder al chip FTDI de la Alhambra-II para hacer cosas sencillas como resetear la placa o leer un byte de su memoria flash
El acceso al FTDI lo estoy implementando directamente desde javascript. Sé que hay proyectos [2] que han portado el openFPGALoader, y otras herramientas a webassembly lo usan también desde navegadores. Yo lo estoy haciendo "a pelo" en javascript para aprender bien webusb y así poder hacer rápidamente aplicaciones web sencillitas
Esta es una de las primeras pruebas. Lo estoy probando desde un móvil:
Es necesario conectar al móvil un cable OTG, luego se encufa la Alhambra-II directamente
En este vídeo he hecho una primera demo con los resultados. El reset de la FPGA ya funciona y también la lectura del identificador de la memoria flash y la lectura de un byte de cualquier dirección
La webapp de pruebas está accesible desde este enlace
Esto abre muchas posibilidades. La que tengo en la cabeza es la de grabar directamente bitstreams en la FPGA desde nuestras webs, para que sea muy fácil y rápido hacer pruebas. Por ejemplo, se podría crear una página donde se carguen los diferentes diseños de ordenadores retro que tenemos: zx-spectrum, amstrad, defender, space invaders... De hecho en un repo de github se pude meter el código fuente y que automáticamente se generen los bitstream que luego aparecen en la webapp
También para hacer pruebas de la placa y comprobar si funciona bien: la conectas al movil, accedes a la webapp, grabas el bitstream de pruebas y compruebas si todo funciona (así detectas si los leds funcionan, los botones, etc... sin tener que instalar ningún software para sintetizar. Todo desde la webapp)
Como es una webapp, también se puede utilziar desde cualquier ordenador. PERO, aquí habrá que ir refinando y añadiendo instruciones específicas
* El navegador tiene que soportar webusb. Desgraciadamente firefox no lo tiene de momento, por lo que no se puede usar
* Yo lo he probado con Chrome, pero en princpio cualquier otro navegador que lo soporte valdría (no lo he probado con edge, ni con ninguna máquina windows)
* Con Chromium no he conseguido tampoco que funcione de momento. Tiene webnusb, pero no consigo darle los permisos para acceder al usb... (ni idea de por qué no va...)
* El movil que uso es un Android, con el chrome. Aquí funciona sin tener que hacer nada adicional. NO lo he probado con los iphones
* Desde un Chrome/Edge en Windows tampoco lo he probado. Debería funcionar, pero hay que probarlo y tal vez el usuario deba hacer algúna configuración previa (como por ejemplo tener los drivers instalados previamente)
* Desde Linux con Chrome funciona. PERO al conectar la Alhambra se carga automáticamente el módulo del kernel que controla el FTDI, por lo que se apodera de él y la webapp no puede abrirlo. Previamente hay que desinstalar el módulo con el comando "sudo modprobe -r ftdi_sio". Luego la webapp ya sí que puede acceder al hardware
Os iré comentando las pruebas. Cuando tenga una biblioteca javascript de acceso al hardware más madura lo meteré en un repositorio de FPGAwars. De momento voy a hacer el desarrollo (en abierto por supuesto) en mi cuenta de github
Saludos, Obijuan