¿Qué es el Kermit?

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, dark_sasuke, m0skit0, LnD, ka69, zacky06, DrNefarious

Responder
Avatar de Usuario
Kravenbcn
Administrador
Administrador
Mensajes: 16291
Registrado: 01 Sep 2009, 21:27
PSN ID: Kravenbcn
Twitter: Kravenbcn
Ubicación: Barcelona
Contactar:

¿Qué es el Kermit?

Mensaje por Kravenbcn »

Davee, quien consiguió ejecutar un de HEN PSP en PS Vita con la ayuda de desarrolladores Some1 y Proxima, se encuentra estudiando el funcionamiento interno del emulador de PSP en la Vita. En particular, está buscando en una librería llamada sceKermit, específica para Vita, que tiene a su cargo, entre otras cosas, permitir la comunicación entre el emulador y hardware de PS Vita.

Al parecer Kermit es responsable de este hardware:

Tarjeta de memoria
Sistema de archivos flash
DMA
LCD
GE
IDStorage
Audio
Cámara
Control de Potencia
USB
OSK
WLAN
RTC
Más ...

Interesantemente, la comunicación kermit no se utiliza para auriculares o entradas del controlador remoto.

Para entender cómo funciona el kermit, es importante explorar el uso de la API:

Código: Seleccionar todo

int sceKermit_driver_4F75AA05(KermitPacket *packet, u32 cmd_mode, u32 cmd, u32 argc, u32 allow_callback, u64 *resp)


Esta función es la función de envío de comandos. Se acepta un paquete kermit inicializado a mínimos de 64 bytes (no hay argumentos hay que rellenar) un modo de comandos que describe el conjunto de comandos cmd: la orden real, el número de argumentos después de la cabecera del paquete de 16 bytes. También permite pasar un valor booleano para permitir que las devoluciones de llamada cuando se espera para la finalización y una respuesta de 64 bits.

Lo que es importante tener en cuenta es que los argumentos de paquetes son de 64 bits de ancho (no 32) y "little endian" codificado. Hay un máximo de 13 argumentos que se pueden pasar a la máquina.

A veces, es necesario enviar más de los 13 argumentos valor de los datos. Aquí es donde kermit proporciona una API para la memoria. Se muestra a continuación:

Código: Seleccionar todo

void sceKermitMemory_driver_AAF047AC(KermitPacket *packet, u32 argc, u8 *buffer, u32 buffer_size, u32 io_mode);
void sceKermitMemory_driver_80E1240A(u8 *data, u32 len);
void sceKermitMemory_driver_90B662D0(u8 *data, u32 data_size);


Estas funciones proporcionan los fundamentos para la transmisión de datos al host. sceKermitMemory_driver_AAF047AC es el comando básico. Se acepta un paquete antes de la transmisión para albergar a la cantidad de argumentos, un puntero al buffer de entrada/salida y un indicador para el modo. Esto permite al kermit recibir el buffer de datos al procesar el comando, o tener un lugar para la salida de los datos.

sceKermitMemory_driver_80E1240A y sceKermitMemory_driver_90B662D0 son los opuestos el uno del otro, proporcionando de entrada y salida respetivamente. Esta API es increíblemente simple y se utiliza para enviar múltiples buffers de kermit antes y después de un comando.

Más información y código fuente: https://github.com/DaveeFTW/vita_kermitç

Fuente
No te pierdas nada, sigue a DaXHordes en Twitter, Facebook, Google+ y Youtube

Imagen
¿Quieres formar parte del equipo de DaXHordes.org? Esta es tu oportunidad.
PS3 · PS Vita · PSP

Avatar de Usuario
Ryone
Mascota del foro
Mascota del foro
Mensajes: 2243
Registrado: 10 Jul 2010, 16:30
PSN ID: RazorPlay3
Steam ID: Ryonetheonly
Twitter: Ryoneunleashed
Ubicación: Granada, España.
Contactar:

Re: ¿Qué es el Kermit?

Mensaje por Ryone »

No he entendido absolutamente nada pero me ha parecido muy interesante.

Avatar de Usuario
gokuhs
Experto
Experto
Mensajes: 1142
Registrado: 23 Sep 2009, 15:16
PSN ID: gokuhs
Steam ID: gokuhss
Twitter: gokuhss
Ubicación: Alicante
Contactar:

Re: ¿Qué es el Kermit?

Mensaje por gokuhs »

Hace bastante que Davee lo liberó. ¿Alguien sabe si se ha investigado algo mas sobre esto?

Responder