Ver la versión completa : [Duda] Sobre el segundo procesador de GP2X
Hola, he empezado a estudiar un poco sobre programación concurrente y un día leeyendo por el foro vi que alguien dijo que el segundo procesador de GP2X había muy pocas aplicaciones que lo utilizaran porque era muy difícil programar para que se aprovechara.
La duda que tengo es cuando se dice que es dificil, ¿quiere decir que es difícil hacer programas multihilos o es que hay que hacer programas de una determinada forma para que se utilice el segundo micro?
Saludos.
al principio creo que era porque no habia SDK ni librerias para el, luego creo que salio algo. Y luego supongo que sera porque ... ten en cuenta que la mayoria de las cosas que tiene la gp2x son ports de emuladores que ya estan programados, y reprogramarlos para que por ejemplo el audio lo ejecute el 2 procesador pues es un coñazo.
Supongo que si se hace un programa/emulador de cero, no deberia ser demasiado dificil usar el segundo micro.
Aiken
Aparte de lo que dice Aiken, que tiene toda la razón (es más difícil reprogramar los programas que ya están hechos para PC que simplemente portarlos), lo "difícil" del segundo núcleo es comunicarlo con el primero. Y eso es porque su acceso a memoria es muy especial. Pero si quieres hacer algo en el segundo núcleo plenamente algorítmico que requiera poca o ninguna comunicación con el primer núcleo (por ejemplo, que suene un MP3 mientras el programa principal está en la otra CPU), es relativamente fácil de hacer.
Las funciones de la librerías "minimal", picodrive y algún reproductor mp3 para el segundo núcleo tienen el código fuente publicado para que puedes inspeccionarlo. Básicamente consiste en hacer una función autocontenida que quieras ejecutar en el segundo núcleo y poner la dirección de esa función en algún sitio de la memoria. La librería "minimal" tiene una función para cargar y ejecutar estas funciones en el segundo núcleo, si me has seguido hasta aquí :)
masteries
02/10/2008, 16:17
Generalmente en todas las arquitecturas con varios procesadores, se utiliza un procesador como cpu principal y el resto como auxiliares, por ejemplo se puede dejar que toda la reproducción del audio(MP3, wav y ogg) sea una tarea para el segundo micro; liberando carga de la cpu principal(a ver si Puck se anima a hacer esto en el Ultimate Fénix).
Hay otras arquitectureas(no sé si es el caso de la gp2x) en las que el acceso a memoria RAM es compartido entre todos los procesadores, en uno de estos casos tomé la decisión de repartir la frecuencia del uso de la RAM, lo explico:
La cpu principal(era un ARM9) podía acceder a la RAM 3 de cada 4 ciclos de reloj, y la cpu secundaria(era un ARM7) podía acceder a la RAM 1 de cada 4 ciclos de reloj, la tarea del ARM7 era recopilar los datos de un buffer circular, enpaquetarlos y enviarlos por usb. Esto resultó ser más eficaz que utilizar el puerto usb por interrupciones manejado sólo por el ARM9.
El emu de megadrive iva de pm con los 2 procesadores activados.Lastima que no se le saquen provecho al segundo procesador,en mas aplicaciones.
NoobLuck
06/10/2008, 21:23
Para meterle código al segundo procesa hay que hacerlo en ensamblador, lo cual cansa mucho, ya que es parecido a escalar el K3.
Puck2099
06/10/2008, 21:39
Para meterle código al segundo procesa hay que hacerlo en ensamblador, lo cual cansa mucho, ya que es parecido a escalar el K3.
No hace falta, solo una pequeña porción con la tabla de los vectores de interrupción y poco más, el resto en C.
NoobLuck
06/10/2008, 22:14
Pos puck donde puedo leer algo para aprender la magia esta. En su dia me empolle el ensamblador del ARM y to pensando que no había otra manera.
Tal vez se pueda hacer un driver del kernel o algo en un futuro en el que no tenga que trabajar y estudiar a la vez.
Puck2099
06/10/2008, 22:19
Pos puck donde puedo leer algo para aprender la magia esta. En su dia me empolle el ensamblador del ARM y to pensando que no había otra manera.
Tal vez se pueda hacer un driver del kernel o algo en un futuro en el que no tenga que trabajar y estudiar a la vez.
Desde las minilib se podía cargar código en el segundo core, de todos modos te recomendaría el código que se publicó del reproductor de ogg en el segundo core (del autor de Vektar, no recuerdo su nombre), ahí fue donde vi yo como iba y me permitió hacer algunos programas de prueba.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.