Affichage des articles dont le libellé est Eddystone. Afficher tous les articles
Affichage des articles dont le libellé est Eddystone. Afficher tous les articles

samedi 28 octobre 2023

Eddystone 6200: Option RTC

Le récepteur Eddystone 6200 pouvait être commandé avec plusieurs options. Une analyse du firmware m'a permis de déterminer le codage de ces options dans celui-ci. 


Une étude du fonctionnement de l'option RTC (Horloge temps réel) dans le code montre que celle-ci dépend simplement de la mise en place d'une mémoire NVRAM intégrant une horloge - DS1642 ou équivalent -  à la place de celle qui est installée par défaut.


Et de fait, la mise en place d'une MK42T12 et l'activation de l'option dans le firmware permet d'accéder à la fonction horloge du récepteur. Une modification simple et rapide.
Deux filtres ont été définitivement installés: un  filtre 1.5kHz (Cathodeon BP-4596) plus adapté à certain type de modulation et un filtre 150Hz (Cathodeon BP-4593) rendant l'écoute de la CW très confortable. 


Ici la réception d'une transmission CW sur 20 mètres avec beaucoup de QRM en 6kHz, 2.4kHz, 1.5Khz et 150Hz.

dimanche 22 octobre 2023

Eddystone 6200: Ajout de filtres

Le récepteur HF Eddystone 6200 pouvait être commandé avec de multiples options nécessitant l'ajout de cartes supplémentaires (ISB, FSK, ...) ou de filtres 1.4Mhz. Livré avec un filtre 6KHz pour l'AM (en fait, le filtre d'entrée dit de 'roofing') et un filtre 2.4Khz pour la SSB, deux slots supplémentaires peuvent être équipés pour tous les modes hors la SSB.


Le simple ajout de filtres ad'hoc dans ces emplacements ne suffit cependant pas à modifier la configuration contrairement à certains récepteurs qui détectent la configuration lors de leur auto-test. Aucun cavalier n'est présent, aucune option n'est accessible depuis le panneau avant. Tout semble indiquer que la configuration se trouve dans le firmware installé sur une EPROM 27C256.

Quelques dizaines d'heures plus tard, avec l'aide de Ghidra, et d'un émulateur 6809 modifié, la structure générale du firmware est comprise en notant que celui-ci ne fonctionne pas sous interruption, les vecteurs associés étant utilisés pour stocker la version du firmware ! 

Le mécanisme de gestion des options est très rapidement identifié: la présence d'une option est indiquée par le passage à 0 d'un octet située en fin de mémoire, ici 0x7F01 pour l'option filtre #1, 0x7F02 pour l'option filtre #2.


        
          
Le codage de la bande passante est effectué sur les octets 0x7F10 et 0x7F11 en décimal.
Dans le cas présent: 15 pour 1.5KHz et 02 pour 200Hz. L'identifiant de la configuration du matériel est codé dans le LSB de l'octet 7FFD avec 0 pour l'option A, 1 pour l'option B, et ainsi de suite.

Aucune vérification de la checksum n'est effectuée sur le firmware, celui-ci étant sans grande optimisation, et comme indiqué précédemment sans aucune utilisation d'interruptions matérielles ou logiciels, facilitée pourtant gérée par la CPU 6309.

Une très grosse déception pour un équipement en provenance d'un fournisseur réputé des années 90.

L'utilisation d'un émulateur a été nécessaire au regard de la complexité de l'écriture du code. 
Développé en RUST, l'émulateur disponible ici a dû être modifié pour y intégrer la possibilité de modifier les registres en mode 'debug'.