Fr:Facts about the ARM940T processor

From wiki.gp2x.org

Contents

Généralités

  • Le CPU ARM940T est un processeurs à tout faire, indépendant de l'ARM920.
  • Il n'a pas de MMU, mais une PU (Protection Unit) à la place. La PU ne peut pas traduire d'adresses virtuelles , mais possède des fonctions similaires au MMU comme la définition de zones mémoire pour la mise en cache.
  • L'ARM940T est utilisé par l'implémentation de GPH de Linux pour controler la lecture vidéo. Utiliser le 940T sous Linux pour d'autres tâches que la vidéo est difficile mais possible. Il est plus facile d'utiliser les deux processeurs en accédant directement au matériel.

Voir Docs and Papers pour plus de détails.

Comment les CPUs accèdent à la mémoire

Le schéma suivant donne une idée générale de comment chacun des deux CPU ARM peut accéder à toute la mémoire et aux ports de la GP2X.

                                ----------    -------------
                               | 64MB     |  | On-chip     |
                               | SDRAM    |  | Peripherals |
                                ----------    -------------
                                        |      |
  -----------                           |      |                            ----------
 | 16kB Inst.|    ------     -----     ------------     -----     ------   | 4kB Inst.|
 | Cache     |---|      |   |     |   | Controlleur|   |     |   |      |--| Cache    |
  -----------    | 920T |---| MMU |---| mémoire    |---| PU  |---| 940T |   ----------
  -----------    | Core |   |     |   |            |   |     |   | Core |   ----------
 | 16kB Data |---|      |    -----     ------------     -----    |      |--| 4kb Data |
 | Cache     |    ------                 |                        ------   | Cache    |
  -----------                            |                                  ----------
                                   ------------
                                  | Static RAM |
                                  | Bus        |
                                   ------------

Chaque coeur appelle le controlleur mémoire pour obtenir des données de la RAM. S'ils accèdent à la RAM simultanément, l'un devra attendre (pendant un très court instant) pour ses données. Cependant, chaaque coeur possède son propre cache ce qui signifie qu'ils n'ont pas toujours besoin de récupérer leur données ou instructions dans la RAM. De plus, si un coeur accède aux périphériques on-chip (ie. les zones mémoires qui contrôlent le hardware on-chip), alors il n'empèche pas l'autre coeur d'accéder à la RAM. Il y a un autre accesseur au données, appelé le "Static RAM bus", indépendant des autres. Seul le contrôleur USB y est pour l'instant connecté.

En utilisant le sdk2x (aussi appelé HH), la programmation directe du hardware GP2X, coeur 940T inclu, ne sera pas plus difficile que d'écrire du code pour la GP32. Et même si seul un pourcentage très faible de programmeurs choisiront d'utiliser cette possibilité, des choses très intéressantes vont arriver !

Décoder en utilisant le 940

Dzz released the source to the port of the tremor library running on the 940.

It is available here.

To test it, copy test.gpe, code940.bin, and test.ogg to the gp2x, then run test.gpe

Controls in the test app:

START: exit
A: pause and unpause the music playback
B: reset the music back to the beginning
X: reload the music (demonstrates loading a new music clip from a file)

940 GPU

Have a look at this project by rixed: http://gna.org/projects/gpu940/

With the Code Alone demo as an early example on how the project can be applied.

Personal tools