j'ai sous la main un Palm Z22. Il tourne apparemment sous PalmOS 5.4. Si
je veux le programmer, je peux fabriquer un binaire pour processeurs
m68k, et l'envoyer sur le Palm qui le fera tourner dans un émulateur de
processeur 68000. Je peux aussi fabriquer du code ARM et l'invoquer
depuis le code 68000, moyennant quelques restrictions parce que je ne
peux pas prévoir à quelle adresse le code ARM sera chargé, et que l'OS
ne fournit pas de linker dynamique pour ce chargement (je pourrais
écrire ce linker, mais pour le moment ce n'est pas fait).
Je souhaiterais allouer de la RAM tranquillement, par morceaux assez
gros au besoin. Le Z22 dispose d'une quantité non négligeable de
méga-octets. PalmOS a une limite traditionnelle de 64 Ko (en fait un peu
moins) par bloc alloué (avec MemPtrNew()), ce que je trouve un peu
bas...
J'ai essayé et je peux allouer au plus 65505 octets d'un coup avec
MemPtrNew() sur mon Z22. Mais la documentation (le "Palm OS Companion")
dit à quelques endroits que cette limitation à 64 Ko pourrait être
supprimée dans une future version. Ma question principale est donc :
est-ce que le PalmOS 5.4 que j'ai sous la main a toujours,
intrinsèquement, cette limitation, ou est-ce qu'il y a moyen d'avoir un
gros bloc de mémoire dans lequel je pourrais taper librement ? C'est
pour un accès depuis le code ARM et la compatibilité avec d'autres
modèles m'indiffère.
Évidemment, sous réserve qu'il n'y ait pas de MMU active, je pourrais
toujours taper directement dans la RAM à la sauvage, mais ce serait
mieux si je pouvais faire en sorte que l'allocateur mémoire standard
évite la zone que je m'attribue.
En bref, quelqu'un a-t-il de la documentation un peu précise sur le
sujet ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LTH
Patrick V a écrit :
Je souhaiterais allouer de la RAM tranquillement, par morceaux assez gros au besoin. Le Z22 dispose d'une quantité non négligeable de méga-octets. PalmOS a une limite traditionnelle de 64 Ko (en fait un peu moins) par bloc alloué (avec MemPtrNew()), ce que je trouve un peu bas...
C'est bas.
et c'est vieux, non ? c'est plutot MemHandleNew voire même plutôt ce qui il ya dans la gluelib
Patrick V a écrit :
Je souhaiterais allouer de la RAM tranquillement, par morceaux assez
gros au besoin. Le Z22 dispose d'une quantité non négligeable de
méga-octets. PalmOS a une limite traditionnelle de 64 Ko (en fait un peu
moins) par bloc alloué (avec MemPtrNew()), ce que je trouve un peu
bas...
C'est bas.
et c'est vieux, non ? c'est plutot MemHandleNew voire même plutôt ce qui
il ya dans la gluelib
Je souhaiterais allouer de la RAM tranquillement, par morceaux assez gros au besoin. Le Z22 dispose d'une quantité non négligeable de méga-octets. PalmOS a une limite traditionnelle de 64 Ko (en fait un peu moins) par bloc alloué (avec MemPtrNew()), ce que je trouve un peu bas...
C'est bas.
et c'est vieux, non ? c'est plutot MemHandleNew voire même plutôt ce qui il ya dans la gluelib
LTH
Patrick V a écrit :
LTH a écrit, le 03/06/2007 15:42 :
et c'est vieux, non ? c'est plutot MemHandleNew
Bah, MemHandleNew() permet des blocs mouvants, mais ça obliger à locker.
voire même plutôt ce qui il ya dans la gluelib
Y'a des trucs dans la glue qu'il n'y aurait pas en 5.4 ???
ben... je sais pas.. je lis la doc... peut être que la doc AUSSI est foireuse ;-)
MemGluePtrNew Function Purpose
Allocate a new nonmovable chunk in the dynamic heap. Unlike MemPtrNew(), this function lets you request chunks larger than 64KB. Declared In MemGlue.h Prototype
MemPtr MemGluePtrNew ( UInt32 size )
Parameters
? size The desired size of the chunk.
Returns
Returns a pointer to the new chunk, or NULL if unsuccessful. Comments
On versions of Palm OS prior to 3.5, this function acts exactly like MemPtrNew() and won't allocate chunks larger than 64K.
Patrick V a écrit :
LTH a écrit, le 03/06/2007 15:42 :
et c'est vieux, non ? c'est plutot MemHandleNew
Bah, MemHandleNew() permet des blocs mouvants, mais ça obliger à locker.
voire même plutôt ce qui il ya dans la gluelib
Y'a des trucs dans la glue qu'il n'y aurait pas en 5.4 ???
ben... je sais pas.. je lis la doc... peut être que la doc AUSSI est
foireuse ;-)
MemGluePtrNew Function
Purpose
Allocate a new nonmovable chunk in the dynamic heap. Unlike MemPtrNew(),
this function lets you request chunks larger than 64KB.
Declared In
MemGlue.h
Prototype
MemPtr MemGluePtrNew (
UInt32 size
)
Parameters
? size
The desired size of the chunk.
Returns
Returns a pointer to the new chunk, or NULL if unsuccessful.
Comments
On versions of Palm OS prior to 3.5, this function acts exactly like
MemPtrNew() and won't allocate chunks larger than 64K.
Bah, MemHandleNew() permet des blocs mouvants, mais ça obliger à locker.
voire même plutôt ce qui il ya dans la gluelib
Y'a des trucs dans la glue qu'il n'y aurait pas en 5.4 ???
ben... je sais pas.. je lis la doc... peut être que la doc AUSSI est foireuse ;-)
MemGluePtrNew Function Purpose
Allocate a new nonmovable chunk in the dynamic heap. Unlike MemPtrNew(), this function lets you request chunks larger than 64KB. Declared In MemGlue.h Prototype
MemPtr MemGluePtrNew ( UInt32 size )
Parameters
? size The desired size of the chunk.
Returns
Returns a pointer to the new chunk, or NULL if unsuccessful. Comments
On versions of Palm OS prior to 3.5, this function acts exactly like MemPtrNew() and won't allocate chunks larger than 64K.
Thomas Pornin
According to LTH :
ben... je sais pas.. je lis la doc... peut être que la doc AUSSI est foireuse ;-)
MemGluePtrNew Function Purpose
Allocate a new nonmovable chunk in the dynamic heap. Unlike MemPtrNew(), this function lets you request chunks larger than 64KB.
Ça marche chez moi. Je peux allouer 2 Mo d'un coup sur mon Z22 avec cette fonction. Un peu de google me dit que MemPtrNew() et MemGluePtrNew() reposent sur la même primitive du système, avec des flags différents.
Merci !
--Thomas Pornin
According to LTH <lth@nospam.com>:
ben... je sais pas.. je lis la doc... peut être que la doc AUSSI est
foireuse ;-)
MemGluePtrNew Function
Purpose
Allocate a new nonmovable chunk in the dynamic heap. Unlike MemPtrNew(),
this function lets you request chunks larger than 64KB.
Ça marche chez moi. Je peux allouer 2 Mo d'un coup sur mon Z22 avec
cette fonction. Un peu de google me dit que MemPtrNew() et MemGluePtrNew()
reposent sur la même primitive du système, avec des flags différents.
ben... je sais pas.. je lis la doc... peut être que la doc AUSSI est foireuse ;-)
MemGluePtrNew Function Purpose
Allocate a new nonmovable chunk in the dynamic heap. Unlike MemPtrNew(), this function lets you request chunks larger than 64KB.
Ça marche chez moi. Je peux allouer 2 Mo d'un coup sur mon Z22 avec cette fonction. Un peu de google me dit que MemPtrNew() et MemGluePtrNew() reposent sur la même primitive du système, avec des flags différents.