Hola a tod@s!
Tengo algunas novedades sobre la cross compilación del driver ACX bajo arquitectura ARM. Al final conseguí una versión más moderna de los fuentes (incluidos con la distrubución Ubuntu 8.1) que compilan en arquitectura x86 sobre Linux 2.6.27.
El tema era ver si estos drivers se pueden cross compilar para ARM. Pues SI! La verdad es que tras integrar los fuentes, modificar las opciones de compilación y enlazar el Makefile con la base de Linux 2.6.27 para ARM conseguí compilar y linkar los drivers en el kernel htc-msm-2.6.27. Además, he conseguido correr el núcleo (junto a Android) en mi Diamond y ver que el driver se carga en memoria y empieza a hacer su trabajo.
Pero claro está, no todo son buenas noticias. Para hacer la prueba de concepto he compilado el driver en modo USB, es decir, que el núcleo espera un dispositivo TNETW1250 (o ACXnnn) en un puerto USB, y no como tarjeta interna.
Las opciones de compilación del driver ofrecen dos opciones, o bien se compila para dispositivos USB o para tarjetas PCI. La arquitectura de la HTC Diamond soporta el puerto USB pero no el bus PCI, con lo que aquí Huston tenemos un problema. He de investigar un poco más sobre la arquitectura de la HTC Diamond, pero creo que el acceso a los dispositivos internos se hace a través de un puerto I2C serie interno a través de una interrupción (que tengo localizada en uno de los fuentes de núcleo) Si esto se confirma, he de adaptar los drivers para que acepten como interfaz el bus I2C (al igual que lo hacen con USB y PCI)
Y es aquí donde estoy ahora trabajando. Para los nostálgicos, os voy a poner aquí abajo el log de arranque del núcleo en mi HTC Diamond donde se ve claramente que el driver arranca:
<5>[ 0.000000] Linux version 2.6.27-00679-g1a4d3e8-dirty (vissi@vissi-laptop) (gcc version 4.2.3 (Sourcery G++ Lite 2008q1-126)) #8 PREEMPT Wed Jul 1 15:23:19 CEST 2009
<4>[ 0.000000] CPU: ARMv6-compatible processor [4117b362] revision 2 (ARMv6TEJ), cr=00c5387f
<4>[ 0.000000] Machine: HTC Diamond GSM phone (aka HTC Touch Diamond)
...
<6>[ 0.410000] htcraphael: WiFi device enable
...
<4>[ 1.704555] acx: this driver is still EXPERIMENTAL
<4>[ 1.704555] acx: reading README file and/or Craig's HOWTO is recommended, visit http://acx100.sf.net in case of further questions/discussion
<4>[ 1.721981] USB module v0.3.37 initialized, probing for devices...
<6>[ 1.730861] usbcore: registered new interface driver acx_usb
<6>[ 1.743099] usb_probe() io=c5006000, irq=47, dma=ffc01000(146fc000)
<6>[ 1.752773] usb_function_register() 'adb'
<6>[ 1.757625] usb_function_register() 'diag'
<6>[ 1.762416] usb_ether_setup()
<6>[ 1.767696] usb_function_register() 'ether'
...
<6>[ 1.776241] usb_bind_func() 'ether'
...
Bueno, todo esto es esperanzador. Esto ha sido trabajo 'facil'. A partir de ahora viene lo complejo.
Saludos,
Vissi