Bien pensado, booboo. No se me había ocurrido mirar lo del ILI9325.
En el SVN de rockbox hay una aplicación para analizar los DL:
HOW TO disassemble (Ex: VX767_V1.0.dl)
STEP 1:
./dl_analyser VX767_V1.0.dl
=======================HEADER=====================
File magic: CCDL
File Type : 0x00010000
Offset : 0x00020001
Size : 0x00000004
BuildDate : 2008/03/26 09:59:19
PaddindSum: 0x0
=====================IMPT HEADER==================
Header magic : IMPT
Header Type : 0x00000008
Offset : 0x000000a0
Size : 0x0000007c
PaddindSum : 0x0
=====================EXPT HEADER==================
Header magic : EXPT
Header Type : 0x00000009
Offset : 0x00000120
Size : 0x00000108
PaddindSum : 0x0
=====================RAWD HEADER==================
Header magic : RAWD
Header Type : 0x00000001
Offset : 0x00000230
Size : 0x000058a0
Paddind1 : 0x0
BSS Clear Code : 0x80f82714 start at file 0x2944
mem_place_start : 0x80f80000 start at file 0x230
memsize : 0x5a58
mem_end(BSS end): 0x80f85a58
Paddind2Sum : 0x0
=====================IMPORT SYMBOL==================
number symbols : 0x4
PaddindSum : 0x0
Sym[00] offset 0x0000 padding 0x0 flag 0x20000 address 0x80f82750 name: printf
Sym[01] offset 0x0008 padding 0x0 flag 0x20000 address 0x80f82758 name: udelay
Sym[02] offset 0x0010 padding 0x0 flag 0x20000 address 0x80f82760 name: delay_ms
Sym[03] offset 0x001c padding 0x0 flag 0x20000 address 0x80f82768 name: get_rgb_lcd_buf
=====================EXPORT SYMBOL==================
number symbols : 0x7
PaddindSum : 0x0
Sym[00] offset 0x0000 padding 0x0 flag 0x20000 address 0x80f826dc name: init_lcd_register
Sym[01] offset 0x0014 padding 0x0 flag 0x20000 address 0x80f80160 name: get_ccpmp_config
Sym[02] offset 0x0028 padding 0x0 flag 0x20000 address 0x80f82690 name: get_bklight_config
Sym[03] offset 0x003c padding 0x0 flag 0x20000 address 0x80f81120 name: init_lcd_gpio
Sym[04] offset 0x004c padding 0x0 flag 0x20000 address 0x80f804d0 name: rgb_user_init
Sym[05] offset 0x005c padding 0x0 flag 0x20000 address 0x80f806a4 name: get_rgb_frame_buf
Sym[06] offset 0x0070 padding 0x0 flag 0x20000 address 0x80f8269c name: lcd_set_direction_mode
STEP 2:
mips-linux-objdump -bbinary -mmips -D VX767_V1.0.dl > 767.as
STEP 3:
for function lcd_set_direction_mode(address 0x80f8269c)
we translate that address into 'file address'
file address = 0x80f8269c - 0x80f80000 + 0x230 = 0x28CC
STEP 4:
Find code in 767.as use this 'file address'< - >En una página china he encontrado un ejemplo en C para inicializar el ILI9325
Última edición por A600; 20/04/2009 a las 16:29 Razón: Edición automática anti doble-post.
Para completar algo más sobre el tema, ya que A600 ha empezado hablando sobre el analizador de DLs de RockBox y el ejemplo en forma de código fuente para iniciar el LCM Ilitek ILI9325, pongo más info y documentación técnica sobre este CI/IC:
- Página web: Ilitek ILI9325
- Documentación: Ilitek ILI9325 Datasheet
- Ejemplo de inicialización: Blog ChinaUnix
Que emoción, qué intriga los sceners parace que disfrutáis más descubriendo cosas que cuadno os lo dan todo mascado
He contactado con Sofía de Dingoo y me ha confirmado que ellos no pueden proporcionar absolutamente ninguna información sobre el hardware.
Esto es lo que he identificado a partir de una foto de la placa:
* CPU: Ingenic JZ4732 (presuntamente un JZ4740 destinado a exportación).
* Flash: Samsung K9GAG08U0M-PCB00 (2G x 8 bit NAND).
* RAM: Elpida μPD45128163 (128Mbit SDRAM). Dos chips, o sea 256Mbits = 32MBytes.
* Salida TV: Chrontel CH7024.
* Receptor FM: RDA microelectronics RDA5800C.
Los datasheets están disponibles en la web de cada fabricante, a excepción de la flash NAND que me he vuelto loco para encontrar. Si alguien no encuentra este último que lo diga.
En cuanto a hardware no hay mucho más que rascar, a excepción del LCD, gestión de energía y GPIO. El CH7024 probablemente se controle con el bus I2C, mientras que es seguro en el caso del RDA5800C.
El LCD ya comenté que podría ser un ILI9325, pero hay que confirmarlo.
En cuanto a la gestión de energía, investigaré un poco más cuando tenga la mía y la destripe, Creo que lo único que habrá que averiguar es cómo se controla la retroiluminación del LCD y la carga de la batería. Para esto último seguramente habrá un chip que se encargue de esto de forma independiente y la CPU se limite a leer si la carga está en curso y el voltaje de la batería.
Averiguar la configuración y función de las entradas/salidas genéricas de la CPU (GPIO) tampoco debería ser demasiado complicado. Lo más sencillo para empezar es, usando el SDK, hacer un programa que lea la configuración para averiguar qué es salida y qué es entrada. Luego se observan las entradas ante todo tipo de eventos (pulsaciones de botones, conexión cacble USB, conexión salida TV, conexión de alimentación externa, fin de la carga de la batería, etc) y se deduce a qué corresponde cada cosa. Con las salidas hay que ir cambiándolas a ver qué pasa y es algo más laborioso.
Por supuesto siempre está la posibilidad de desensamblar e interpretar el firmware original, pero es una tarea titánica. Seguramente sería más sencillo empezar por el .DL que viene con la aplicación de unbricking.
Como ya he comentado, creo que de cara a portar aplicaciones y emuladores probablemente sea más productivo portar linux que portar las aplicaciones una a una. Sólo veo algunos inconvenientes que podríamos debatir: por lo que sé los códecs de vídeo que vienen de fábrica funcionan muy bien y deben estar optimizados para este procesador (MIPS+XBurst) o por lo menos para esta arquitectura (MIPS). Reinventar esta rueda no es un asunto trivial.
Da gusto leer a alguien que controla tanto de hardware
Desde el punto de vista del usuario final linux es, sin duda, el camino a seguir. La versión del mplayer para linux que hay en el ftp de Ingenic, por lo que he podido ver con un vistazo rápido, hace uso del Ingenic Media Extension Instruction Set, al igual que la versión para ucos.Como ya he comentado, creo que de cara a portar aplicaciones y emuladores probablemente sea más productivo portar linux que portar las aplicaciones una a una. Sólo veo algunos inconvenientes que podríamos debatir: por lo que sé los códecs de vídeo que vienen de fábrica funcionan muy bien y deben estar optimizados para este procesador (MIPS+XBurst) o por lo menos para esta arquitectura (MIPS). Reinventar esta rueda no es un asunto trivial.
Cierto, no lo había comprobado.
En todo caso antes de meterse a desarrollar un firmware basado en linux hay que valorar bien las opciones. En mi opinión la facilidad para portar software sólo compensa si el nuevo firmware ofrece un nivel de funcionalidad por lo menos similar al original en todos los aspectos. Me preocupa sobre todo el tema de las optimizaciones XBurst como ya he dicho, porque no hay documentación al respecto. Si el MPlayer que proporciona Ingenic sirve, perfecto, una cosa menos. Faltaría ver si los emuladores actuales están también optimizados, que lo dudo.
Hoy ha llegado mi A320. A ver si en los próximos días tengo un rato para desmontarla y documentar adecuadamente el hardware. Lo primero que hay que hacer es encontrar las señales RX/TX de la UART para tener acceso a una consola independiente del display y poder depurar el proceso de arranque del bootloader y del kernel de linux.
Respecto al hardware de la Dingoo, me he llevado una sorpresa al abrir la mia hoy, resulta que no tengo los mismos chips de RAM ni de NAND Flash MLC, es más de NAND Flash solo tengo un solo chip, de 4 GB, pero no 2 de 2 GB como se ven en las fotos del blog de Scene-Dingoo, es Samsung también pero no es el mismo. Los modulos de RAM, si, tengo 2 pero son de otro fabricante y después de contrastar las caracteristicas del Elpida me ha resultado intrigante... verás:
Memoria RAM:
- Cantidad total: 32 MiB
- Modulos: 2x 16 MiB
- Fabricante: Hynix
- Modelo (Part Number): HY57V281620FTP-6
- Características (Organización): 128 Mbit (4 Bank x 2M Word x 16 bits Synchronous DRAM)
- Interfaz: LVTTL
- Frecuencia de reloj máxima: 166 MHz
- Info General: Databook, Device Operation Documentation, etc.
- Info Tecnica: Datasheet
Memoria NAND Flash:
- Cantidad total: 4.13 GB / 3.84 GiB
- Modulos: 1x
- Fabricante: Samsung
- Modelo (Part Number): K9LBG08U0M-PCB00 NAND Flash MLC
- Info General: Samsung K9LBG08U0M
La diferencia técnica entre según los datasheets entre los modulos de RAM que salen en las fotos de Scene-Dingoo, Elpida µPD45128163G5-A75-9JF y los de mi Dingoo A320, Hynix HY57V281620FTP-6, es que la frecuencia de reloj máxima del Elpida es de 133 MHz, mientras que el del Hynix es de 166 MHz máximo.
Del chip de NAND Flash de Samsung que lleva mi A320 tampoco he encontrado información tecnica detallada, como un datasheet, simplemente la información escueta que da Samsung en su web.
Respecto a la pantalla LCD y al posible driver IC ILI925 que usa, al desmontar la Dingoo me he fijado el número del modelo de LCD que viene serigrafiado FTP280P04N-01, no he conseguido mucha info sobre esto salvo en la web del fabricante chino de LCDs Shengbite, concretamente en una hoja Excel que se puede descargar con su catalogo de LCDs en el cual vienen las características de cada LCD que fabrica.
Catalogo Shengbite de LCDs
Concretamente el modelo FTP280P04N si viene, pero no como FTP280P04N-01 su FPC, unicamente el FTP280P04N-00 (registro 523), pero por las características parece coincidir en todo lo demás, incluido el ILI9325 como CI controlador del LCD.
Estos son los datos extraidos y traducidos (en parte gracias a Google Language Tools):
Pantalla LCD:
- Modelo: FTP280P04N
- Modelo FPC (Flexible Printed Circuit): FPC-FTP280P04N-01
- Longitud del pliege FPC: 27.80
- Driver IC: ILI9325
- Cristal TFT: PVI P4928QC1-1.0
- Tamaño de pantalla: 2.8"
- Retroiluminación (Backlight): Blanca, 4 LED chips en paralelo
- Descripción: En la base de 280C05 para IC y LCD
- Numero de pixels: 240RGBx320
- Numero de Pines: 37
- Tipo de Interfaz (?): 16
- Definición del Pin Nº 1: DB0
- Modo y colores de pantalla (display): 262K TFT/Transmissive
- Perspectiva de la dirección: 12:00
- Dimensiones: 69.2 x 50.0 x 2.75
- Area Activa: 57.6 x 43.2
Como digo no tiene porque ser correcto, y más los detalles (como lo del tipo de interfaz = 16, no se a que se refiere), pero parece coincidir bastante. Tengo fotos hechas, las subiré luego a mi cuenta de Mediafire para quien quiera ver el hardware de una Dingoo A320 distinto al de Scene-Dingoo.
Booboo, si mañana desmontas tu Dingoo ya nos contaras si se parece el interior a la mia o a la de Scene-Dingoo (o a ninguna de las dos xD).
Actualización:
Subidas las fotos del hardware de la Dingoo A320, para quienes tengais curiosidad podeis descargar el "pack" de 48 MiB con 40 fotos desde aquí.
Última edición por Uncanny; 22/04/2009 a las 03:20
A mí en particular, me haría mucho más feliz un port de las SDL para usar con el firmware actual que un linux.
De eso no te quepa la menor dudaFaltaría ver si los emuladores actuales están también optimizados, que lo dudo.
Yo espero portar el XRick este fin de semana si tengo tiempo libre que tengo ganas de viciarme al Rick Dangerous
El FTP de ingenic esta bastante bien, a parte del mplayer, tienen los fuentes del GTK, tinyx, qtopia y cpufreqd.
Desde el desconocimiento, no sé si esto te ayudaria booboo:
ftp://ftp.ingenic.cn/4hw/Jz4740_Boar...20Guide_EN.pdf
Ahi estan las especificaciones necesaria spara hacer una placa en la que montar el JZ4740.
Y aqui algo de una placa de desarrollo con muchos esquemas que no entiendo:
ftp://ftp.ingenic.cn/4hw/01_DEV_boar...0_leo_v1.1.pdf
Y mas informacion sobre la plataforma PAVO que llaman ellos:
ftp://ftp.ingenic.cn/4hw/02_RDK/RD4740_Pavo/
Espero que te sirva de algo :P
Es normal que los chips sean diferentes pero equivalentes. La frecuencia de trabajo especificada por el fabricante es la máxima, por lo que si el diseño de la Dingoo contempla el funcionamiento a, digamos, 133MHz, servirían tanto los chips de 133MHz como los de 166MHz.La diferencia técnica entre según los datasheets entre los modulos de RAM que salen en las fotos de Scene-Dingoo, Elpida µPD45128163G5-A75-9JF y los de mi Dingoo A320, Hynix HY57V281620FTP-6, es que la frecuencia de reloj máxima del Elpida es de 133 MHz, mientras que el del Hynix es de 166 MHz máximo.
Algo no me cuadra. En la información que das primero indicas que sólo hay un chip y que es de 4G pero luego dices que el modelo es K9LBG08U0M-PCB00 de 2GB.Del chip de NAND Flash de Samsung que lleva mi A320 tampoco he encontrado información tecnica detallada, como un datasheet, simplemente la información escueta que da Samsung en su web.
Creo que esto, junto con lo que yo comenté del fichero .DL son indicios suficientes como para asumir que el controlador es un ILI9325. Una cosa menos.Respecto a la pantalla LCD...
- Driver IC: ILI9325
De todas formas, echando un vistazo al datasheet del ILI9325 uno se da cuenta de que el controlador es muy sencillo y que se ocupa simplemente del refresco del LCD. Se trata de saber simplemente el modo de interfaz en el que está configurado en el hardware de la A320.
Sí, por favor. Yo haré lo mismo y así podremos comparar.Como digo no tiene porque ser correcto, y más los detalles (como lo del tipo de interfaz = 16, no se a que se refiere), pero parece coincidir bastante. Tengo fotos hechas, las subiré luego a mi cuenta de Mediafire para quien quiera ver el hardware de una Dingoo A320 distinto al de Scene-Dingoo.
Es posible que tarde unos días, ando un poco liado esta semana.Booboo, si mañana desmontas tu Dingoo ya nos contaras si se parece el interior a la mia o a la de Scene-Dingoo (o a ninguna de las dos xD).
< - >La cuestión es que seguramente sea más sencillo portar linux (partiendo de lo que proporciona Ingenic, por supuesto) y luego las SDL sobre linux que la SDL directamente sobre el firmware actual (o directamente hardware). En fin... todo es cuestión de ponerse. Yo voy a empezar a trastear este fin de semana a ver cómo se ve la cosa de complicada.
< - >Sí, lo primero que hice fué hacerme un mirror completo del FTP de Ingenic. Les eché un vistazo a los esquemáticos mientras intentaba identificar el chip FM.
La verdad es que en estos casos en que la CPU está pensada para una aplicación tan específica (PMP) y el fabricante proporciona un "diseño de referencia" y una placa de evaluación, los diseños finales no suelen apartarse mucho, con lo cual si uno sabe dónde mirar, aunque los diseños no sean idénticos se pueden deducir muchas cosas.
Última edición por booboo; 22/04/2009 a las 01:12 Razón: Edición automática anti doble-post.
Eso me suponía, pero me ha parecido curioso
Fallo mio al escribir lo de 2 GiB en los detalles (gracias, corregido), de hecho eso no viene en la web de Samsung, es algo que he escrito porque estoy seguro que la NAND Flash de mi Dingoo es de 4 GB, más que nada porque cuando la conecto me aparece como el tamaño total de disco, pero solo tiene un chip (ya verás en las fotos el hueco que hay en el circuito impreso) así que tiene que ser de 4 GB.
Bueno es saberlo, documentarse del hardware de la A320 y su funcionamiento no es ta siendo sencillo (y menos viendo que los de Dingoo Digital no acceden a dar dicha info). Lo del GPIO sería interesante conocerlo y documentarlo, se que el usbtool permite ver los valores de GPIO para entrada como las pulsaciones de los botones, el pad direccional o incluso el boton de ON/OFF, es más, lo he probado, visto y anotado los valores por curiosidad. Se podria modificar o basarse en la parte de GPIO en el código de USBTool de RockBox para conseguir todos los valores posibles y a ser posible no solo los de entrada, es una idea nada más
Estoy subiendo las fotos, en cuando termine de subirse todo el paquete (son casi 50 MiB en 40 fotos a una resolución alta) pondré el enlace en el post de antes sobre las características de la RAM, NAND Flash y LCD.
Uncanny, tu dingillo es de la remesa con la caja negra ? , es mas que nada por curiosidad para saber si el cambio de hardware coincidió con el de embalaje ...
La mía es de la caja blanca y con las mismas especificaciones que puso booboo.
Ram: ELPIDA D45128163G5 A75-9JF 0824XEB0C x 2
Flash: Samsung 901 K9GAG08U0M-PCB0 x 2
Y como modelo/serie en la caja aparece: A320WH9083980
Que va, Dingoo blanca como la nieve, con su caja también blanca, da las que le gustaría a Chicho Terremoto vamos xD.
Si con el número de modelo/serie te refieres a eso que viene en el minicodigo de barras pues es A320WH9084252. Es más, tengo otra Dingoo A320 (si, otra más xD), sin abrir la caja aun, del mismo tipo parece, la compré una semana después así y el número tampoco coincide ni con la que uso ni con la tuya y es A320WH9084224.
Por si de alguna forma sirviera de referencia, la batería tiene la fecha 20081211, mientras que por ejemplo la de Scene-Dingoo es 20090208.
Marcadores