Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - megamarc

#1
Veo que vais un poco perdidos spor aquí (sobretodo el amigo _Enko). Llevo 5 años desarrollando proyectos con Windows CE adaptándolo a electrónica hecha a medida. Lo que quiero compartir aquí nace de la experiencia diaria y su conocimiento interno, no de la ingeniería inversa.

Windows CE es un SO de tiempo real para diferentes arquitecturas (x86, ARM, MIPS y SH). Windows Mobile lo toma como base y construye una capa nueva por encima, de la misma forma que Android está basado en Linux, pero no es Linux en sí mismo sino algo que se ha construido por encima. No sólo es utiliado por OEMs chinos sino por fabricantes de todo el mundo. Por si os interesa aquí tenéis la base de conocimiento en MSDN:
http://msdn.microsoft.com/en-US/library/ee504812%28v=winembedded.60%29.aspx

Tampoco es algo genérico que pueda personalizarse si se quiere, sino que debe hacerse. Consta de una parte que sí es común y genérica (aunque puede adaptarse no suele hacerse nunca), pero toda la parte específica de la plataforma hardware (el llamado BSP, Board Suport Package) que consta de bootloader + OAL (OEM Adaptation Layer) + drivers, debe adaptarla el fabricante del hardware. Una vez más, es el mismo caso que Android, que tiene una parte común que mantiene Google, y luego cada fabricante (Samsung, HTC, Sony, etc) debe adaptar a su plataforma
http://msdn.microsoft.com/en-us/library/ee478409%28v=winembedded.60%29.aspx

Por último la aplicación final, que es la que ve el usuario del dispositivo, también está personalizada. La práctica habitual es que ni siquiera se incluyan los componentes de escritorio, sino que una vez han arrancado los servicios básicos, se lanza la aplicación final. No es un windows de escritorio, sino algo pensado para hacer dispositivos embebidos y/o portables.

Las herramientas NKBINTOOLS que habéis encontrado forman parte del Platform Builder, que es el entorno de desarrollo para crear adaptaciones de Windows CE. Os paso el enlace:
http://msdn.microsoft.com/en-us/library/aa448635.aspx

Los ficheros BIN y NB0 que comentáis no son ejecutables camuflados, sino la imagen completa del SO una vez se ha generado. Este archivo es el que luego se graba en la ROM (o Flash) del dispositivo. ambos contienen lo mismo, la diferencia es que un NB0 es un volcado en bruto de la ROM sin formato interno, pensado para grabadores genéricos, un BIN define las zonas que realmente se utilizan y permite "saltarse" los huecos internos. Así por ejemplo si la zona ROM de un dispositivo mide 64 Mb pero el SO final sólamente necesita 11 Mb, el archivo NB0 medirá los 64 Mb enteros, mientras que el BIN medirá sólo los 11 Mb efectivos. Aquí tenéis la referencia (los .abx en realidad son los .nb0)
http://msdn.microsoft.com/en-us/library/ms924925.aspx

Uno de los archivos que hay en cualquier BIN se llama default.fdf y contiene el registro en formato binario. Platform Builder contiene las herramientas necesarias para convertir entre formatos, pero no sé si se pueden utilizar desde fuera: pasar de fdf -> reg se hace mediante una vista integrada en el IDE, y de reg -> fdf con una herramienta de línea de comando llamada regcomp.exe. Más documentación:
http://msdn.microsoft.com/en-us/library/aa448687.aspx

Finalmente, el ensamblado final lo hacen otra serie de herramientas de línea de comando que se comentan en el enlace que he puesto antes. Pero dudo mucho que pueda reensamblarse una imagen simplemente a partir de los ficheros que se han extraido. Mi experiencia con WinCE no es modificando binarios de terceros, sino adaptando y generando desde el entorno de desarrollo. El proceso de generación es muy complejo y se basa en una ingente cantidad de scripts de configuración que se encuentran esparcidos por todo el el proyecto fuente. El mayor problema es que un BIN (o NB0) no es una simple colección de archivos como si fuera un zip, sino que los "archivos" en realidad son regiones físicas de memoria con unos atributos determinados. Durante la generación de crea un fichero llamado Ce.bib que contiene toda esa información, pero los registros finales hacen referencia a los archivos tal como se encuentran en el PC de desarrollo.

Así que hasta donde yo sé, no se puede "descomprimir" un archivo bin, modificar los archivos y volverlo a "comprimir".

Espero haber arrojado algo de luz en el tema. La verdad es que Windows CE es un poco oscuro y hay poca gente que lo domine. Sin ir más lejos yo tuve que ir a hacer el curso de iniciación a Italia (totalmente imposible abordarlo uno por su cuenta en plan amateur), que impartía Adeneo Embedded en unas instalaciones de Microsoft, ya que en toda España no había nadie que hiciera la formación.

Si puedo ayudaros en algo más, aquí estoy.