lundi 28 octobre 2019

nucleo-8s208rb et sdcc: frapper un noeud.

J'ai commencé à adapter eForth sur stm8 par C.H. Ting lorsque j'ai réalisé qu'il y avait un problème d'adressage avec ce modèle Forth pour les STM8S haute densité. En effet tel qu'elle est conçue cette machine virtuelle Forth ne peut adresser que les premier 32Ko de mémoire FLASH alors que le STM8S208RB en contient 128Ko. Comme la majorité des Forth sur cpu 8 bits elle utilise un modèle de données de 16 bits. C'est à dire qu'elle est conçu pour travailler avec des entiers de 16 bits et des adresses de 16 bits. Ce qui permet d'adresser 64Ko mais comme la mémoire FLASH des stm8s débute à l'adresse 0x8000 les programmes Forth ne dispose dans les faits que de 32Ko d'espace 0x8000-0xffff soit seulement le quart de la mémoire disponible sur le STM8S208RB. J'ai commencé à réfléchir à la façon dont je pourrais modifier le modèle. Par exemple je pourrais le transformer en un modèle 24 bits au lieu de 16 bits. Je consulte la documentation de SDAS pour voir quelles sont les directives permettant de traiter des données de 3 octets et je trouve les directives .3byte ou .triple dans la table des matières mais elles ne sont pas documentées dans le texte. Malgré tout je fais un test avec l'assembleur mais celui-ci ne reconnais pas la directive dans aucune des deux formes proposées. C'est ce qu'on appelle par chez-nous frapper un noeud. En fait j'en ai frapper deux.

Du même coup je prends conscience que MONA version 0.1 a le même problème puisque lui aussi accède la mémoire avec des adresses de 16 bits. Je suspends donc l'adaptation de eForth et retourne travailler sur MONA vesrion 0.2 pour corriger cette limitation.

Aucun commentaire:

Publier un commentaire

Remarque : Seuls les membres de ce blogue sont autorisés à publier des commentaires.