Architecture des palm
Description du palm Vx

Hardware

Systeme d'exploitation : Palm OS

Architecture mémoire

        13-11-01 : Article Palm OS Memory Architecture

        Apercu du hardware :

Toute la mémoire du palm OS est considérée comme  faisant partie d'une carte (card). A ce jour, les cartes sur tout les machines palm OS peuvent être enlevées pour faciliter les mises à jour. Ram et Rom coexiste sur la meme carte.  L' OS peut suporter plusieurs cartes sur une meme machine, théoriquement 256 cartes, mais à ce jour aucune machine n'a plus d'un slot pour les cartes (sauf peut-être les nouveaux m500 et m505).

ROM : contient le systeme d'exploitation, les applications livrées avec et les databases standard. La taille de la ROM peut varier de 512K à 2M. Sur certaines cartes, la ROM est une mémoire FLASH qui peut etre réécrite avec certains outils.

RAM : contient les applications que l'utilisateur ajoute, les préférences du système, les données utilisateurs et les données liées à l'execution. La taille de la RAM varie de 128K à 8M. Palm OS supporte jusqu'à 12M de RAM (voir plus pour Palm OS 4.0).

Le hardware utilise un acces 8bit pour les cartes RAM de 128K et 512K, et un acces 16 bit pour les cartes plus grandes. Ce qui entraine, les acces bus sont reduit sur la grandes cartes et donc un acces plus rapide à la mémoire. Les états d'attente varie entre les ROM et les RAM, et entre les différentes machines, dépendant du type de mémoire et de la version de l'OS.  Aujourd'huit, 1-4 cycles d'attente (wait cycle) additionnels sont utilisée par bus, ce qui donne un total de 5-8 cycles CPU pour une lecture ou une écriture en mémoire. Toute les cartes mémoires partagent le même espace d'adressage physique, qui est (théoriquement) limité à 4G au total.

        Persistence
La mémoire est maintenue alimentée par différents moyen, meme quand la machine est "off". Pendant les opérations normales, la mémoire est alimentée par les batteries du systeme. Quand les batteries sont enlevées, un super condensateur alimente la mémoire pendant 1 minutes. La mémoire est effacée si l'alimentation est perdu plus de 1 minute ou quand on effectue un hard reset.
        Cartes mémoire
 
    L'unité de mémoire physique (card)  correspond directement au plus haut niveau conceptuel de l'unité de mémoire. Sur les machines actuelles, il existe une seule carte de numéro 0. Une carte mémoire peut inclure RAM ou ROM ou les deux. Chaque carte correspond en mémoire à une adresse multiple de 0x10000000. L'adresse de base de la carte 0 est 0x10000000, meme si les machines basée sur les processeur EZ (comme le palm Vx) ont la mémoire de la carte 0 qui commence en 0x00000000.

    Ram et Rom peuvent être parsemé l'une l'autre sur une carte, toute la mémoire de chaque type n'a pas besoin d'etre dans un a bloc continu. Toutes les machines actuelles ont juste one pool each of RAM and ROM (FLASH).

    Chaque cartequi inclut de la ROM a un header avec le nom du fabriquant, une signature de 4 byte, une version et une liste de la taille et de l'offset de chaque block de RAM ou ROM sur la carte.

    La carte sur le slot 0 qui inclut la RAM doit avoir au moins 32K disponible à l'adresse 0 de la carte pour utiliser comme mémoire global basse (low memory globals) et heap dynamique pendant le processus de démarrage. La plupart des cartes ont plus que cela, avec le reste réservé pour le stockage à long terme.
 

    Toute la RAM est considérée comme un stockage (store), et la ROM comme un autre, et l'OS autorise un maximum de 2 stockages (store) par carte. Un "store" est une abstraction invisble qui est simplement un conteneur pour une liste d'indentifiant de "heap" et un répertoire de database.

    Le "store header" aide à déterminer la validité de la RAM sur une carte donnée. Si le "store header" ne peut pas etre trouvé, ou si les données dedans sont corompues, alors la carte de mémoire est considérée comme blanche et peut etre reformatée. Typiquement, le "header" peut seulement devenir corompu quand l'alimentation est interrompue suffisament longtemps pour que le rafraichissement de la RAM ne puissent s'effectuer correctement. Bien qu'une corruption Software est aussi possible, bien que cette mémoire est protégée.

        Partitionnement de la mémoire

 
La RAM et la ROM sont séparée en "heaps", avc une petite quantité de RAM qui n'est dans aucun heap réservé pour les "low memory globals", "store header". Une partie de l'espace ROM disponible peut ne pas etre assigné au "ROM heap", contenant des valeurs indéfinies.

Low Memory Globals

    Ces variables sont décrites dans Globals.h, celles-ci varies très fort de machines en machines et en fonctions des différentes versions de l'OS. La mémoire est utilisée pour différents sous-systèmes de l'OS et contient aussi la "trap dispatch table". Les applications ne devraient pas lire ou écrire directement ces  mémoires. Elle ne sont pas protégée, et le contenu peut changé de signification et de location. Palm OS fournit une API pour accéder à ces valeurs.

Remarque de programmation 

   Les Palm OS Emulateur peuvent explicitement vérifier pour les acces invalide à la mémoire.
 
 
 

    Manager de mémoire (Memory Manager)
Le sous-systeme qui est responsable de la gestion des allocations d'un heap est appelé le "memory manager". Tous les 3 heap : "dynamic", "storage", et ROM, sont controllé par le meme "memory manager". Les structures du "memory manager" sont décrites dans MemoryPrvNew.h . Bien que, les applications utilise seulement l'API du "memory manager" directement pour acceder au "heap" dynamique. L'API du "Data Manager" fournit un haut niveau pour acceder au donnée du "storage heap ", et le "ROM heap" n'est normalement pas utilisé directement par une application.

Heap Structure :

Les "Heaps" contienent les éléments suivants :
 
 
 

 
 
 
 

Prise en main du sytème