Projets PCI
31 Juillet 2005. Rodolphe Czuba a lancé le projet d'extension PCI pour la CT60, une carte qui utilise un pont PCI PLX 9054 compatible avec le PLX 9080 du MILAN.
Parceque en 2005 le TOS est une sorte d'open firmware graphique, le TOS doit booter avec les principaux périphériques PCI
(comme l'écran, la souris et le clavier).
Aussi j'ai planifié deux principaux drivers dans le TOS CT60 PCI :
26 Janvier 2006. Il y a pas mal de travail pour ajouter le support PCI (PCI BIOS, drivers, etc...) dans le TOS, néanmoins depuis quelques mois j'attend apès la CTPCI pour tester le driver Radeon (le principal driver).
Le (X)BIOS PCI est terminée depuis Aout 2005 mais non testé.
Il manque juste le mapping des registres CTPCI (configuration et interruptions en provenance des slots) pour terminer cette partie.
Quelques appels spécifiques XBIOS pour le PLX (comme dma_setbuffer, dma_buffoper, read_mailbox
et write_mailbox) sont ajoutés aux fonctions originales du (X)BIOS PCI.
Le PLX est aussi le premier périphérique du (X)BIOS PCI aussi il est possible d'installer et d'utiliser
ses interruptions et pas seulement les slots PCI.
L'écriture du driver Radeon est terminée depuis Octobre 2005 mais non testée.
En Novembre 2005, une solution fut trouvé pour tester et debugger la partie fVDI et les appels TOS,
la version alpha courante fonctionne avec un écran Videl en 65K x 640 x 480 !
Le driver fVDI est dans le TOS mais peut aussi être appelé par la dernière version de fVDI installée dans
le dossier AUTO (radeon.sys).
L'implémentation de fVDI dans le TOS est réduite à la taille minimale, les appels TOS sont réecrits pour utiliser
toujours les variables et structures originales du TOS. Ainsi par exemple les fontes true type ne sont pas implémentés.
Les fonctions accélérés par le hard sont pour l'instant la souris, les copies d'écran, les lignes, les remplissages, et l'écran virtuel.
Les fonctions XBIOS installés seulement por le driver TOS mettent à jour les fonctions écran (comme Physbase, Vsetscreen, Vsetmode, Montype,
Vgetsize, et Vsetrgb) et le nouveau CT60CONF.CPX peut configurer le choix de l'écran au boot avec 256 ou 65K couleurs en :
Le driver USB est en progression, mais en pause actuellement parcequ'il est préférable d'attendre le hard et de terminer le premier driver.
Nous avons besoin d'espace libre pour installer au maximum les 3 cartes PCI (4 maintenant).
Personnellement j'ai planifié d'utiliser ces 3 cartes :
Les cartes attendent la CTPCI...
Bien avant que la carte mère soit déplacée...
3 mois sans rien faire faute de hard, et puis Mark Duckworth début Avril me propose cette carte d'évaluation Coldfire, la M5484LITE :-). Elle contient :
Il y a pas mal de travail pour faire tourner le TOS sur un Coldfire, mais c'est l'occasion pour moi d'avancer pour essayer le bios PCI et le driver pour la Radeon. La deuxième raison est bien sur de faire avancer la communautée Atari sur le Projet Coldfire Atari.
Pour le clavier, il fut facile de modifier Eiffel pour l'adapter sur un bus CAN au lieu d'un port série, pour cela j'ai installé sur le FALCON un PIC18F242 (16 bits) à la place du PIC16F876 (14 bits), la version CAN n'éxistant que sur la famille 18F, j'ai utilisé un PIC18F258 pour la M5484LITE.
Pour le TOS, j'ai réécrit le XBIOS pour gérer le port série, l'IKBD via CAN, le MFP via les timers GPT et SLT du Coldfire, la flash pour les paramètres, etc...
La CF68KLIB utilisée est celle d'un 68030, la MMU du Coldfire sert surtout a protéger le TOS copié en SDRAM. Comme sur la CT60 on retrouve de la pseudo STRAM avec le cache en writethrough,
et la SDRAM avec le cache en copyback.
3 Juin 2006. Le TOS fonctionne jusqu'au démarrage du GEM, la CompactFlash est détectée mais l'écriture dans ses registres ne fonctionne pas, le bios PCI fonctionne en configuration,
le VDI est inutilisable puisqu'il utilise le blitter, il faut donc que la Radeon soit utilisée via fVDI, pour cela il faut une alimentation ATX.
Il y a deux cibles maintenant, le ct60tos.bin et le firetos.hex.
Le debug sur la carte M5484LITE et Eiffel 2.0 version CAN...
28 Juin 2006. Après avoir ajouté X86EMU pour initialiser la carte Sapphire correctement sur le PCI via son VGA Bios, le (X)BIOS fonctionne sur la carte avec une résolution
sélectionnée de 1024 x 768 x 65K couleurs et aussi en 256 couleurs.
La prochaine étape consiste a essayer le VDI inclus avec le TOS, la CompactFlash ne fonctionnant toujours pas.
Le boot sur la Sapphire (Radeon 7500) en 1024 x 768 x 65K avec la carte M5484LITE...
18 Aout 2006. Après avoir ajouté un ram-disque de 2 Mo, un chargement TFTP via une liste dans TFTP.INF, ayant pas mal de problèmes avec le GEMDOS sur le Coldfire, j'ai finalement utilisé et utilisé BDOS (en provenance de Emutos). Le desktop fonctionne ci-dessous en 1280 x 1024 x 65K couleurs, il y a encore quelques bugs (par exemple l'état SELECTED dans les menus, des modes graphiques transparents non accélérés, mais cela fonctionne assez bien. J'ai même lancé Aniplayer (sans le son ;-) ). Les modes 256 couleurs fonctionnent également. Pour l'instant je n'ai pas encore essayé fVDI et RADEON.SYS dans le dossier AUTO. Le fVDI utilisé ici est celui inclus au TOS et utilisant ses variables.
![]() |
![]() |
![]() |
![]() |
10 Septembre 2006. Passage du ram-disque à 8 Mo. Réecriture des fonctions textes de fVDI en instructions Coldfire. Modification du TOS pour qu'il fonctionne en 16M de couleurs, les icônes couleurs sont affichés en monochrome. CT60CONF.CPX permet de sélectionner les modes vidéo en 256 / 65K / 16M de couleurs pour le boot et/ou le fichier NEWDESK.INF. Kronos et Vdibench donnent de bon résultats pour les textes en 1280 x 1024 x 16M couleurs.
![]() |
![]() |
6 Octobre 2006. Ecriture d'un accessoire jpegsnap.acc (aucun ne fonctionnait). Ajout d'un repertoire tftpsend sur le bureau pour envoyer des fichiers vers le serveur TFTP. Petite augmentation des performances SDRAM. Essai de MiNT avec succès (les modifications se trouvent dans le fichier M5484LITE.readme).
8 Décembre 2006. La CompactFlash fonctionne enfin, le driver intégré au TOS peut gérer 14 partitions sur la CompactFlash.
Une émulation IDE est en cours. Les protocoles XHDI et SCSIDRV sont intégrés au TOS.
Modification du modecode vidéo du XBIOS pour obtenir des fréquences différentes (56, 60, 70, 85 Hz). Ecriture d'un CPX
pour tester toutes les résolutions vidéo.
Accélération du driver Radeon et du VDI du TOS (basé sur fVDI).
La prochaine étape consiste à écrire un driver Ethernet pour MiNT, essayer NFS, mais surtout intégrer DRM au driver Radeon
afin d'avoir l'accélération hardware pour OpenGL.
Pour des informations actualisés chaque semaine, vous pouvez consuler le blog d'Olivier Landemarre :
Categorie Coldfire
28 Décembre 2006. Maintenant j'ai une deuxième carte graphique, une Sapphire Radeon 9250 128 Mo - 64 bits.
Les fonctions VDI textes (v_gtext, v_justified), lignes (v_pline, v_bar), remplissages (v_bar, v_recfl), et copies (vrt_cpyfm, vro_cpyfm) sont maintenant à la vitesse maximale :-).
Le TOS appelle directement les fonctions accélérés sans passer par fVDI.
Le driver reste compatible avec fVDI sous réserve que la compatibilitée ascendante soit respecté ce qui ne semble plus être le cas depuis fVDI 1.14 (vwk structure).
Les motifs de remplissages utilisateur en couleurs fonctionnent également (vsf_updat), et les rotations de texte aussi (vst_rotation) comme le TOS d'origine. Cela n'est pas supporté actuellement dans fVDI.
Voici un comparatif sous Kronos :
Kronos test | Radeon 7500 | Radeon 9250 |
---|---|---|
VDI_CIRCLE | 3943.662 (op/sec) | 3943.662 (op/sec) |
VDI_ARC | 27164.179 (op/sec) | 27164.179 (op/sec) |
VDI_BAR | 44250.000 (op/sec) | 44250.000 (op/sec) |
VDI_ELLARC | 25200.000 (op/sec) | 25200.000 (op/sec) |
VDI_ELLIPSE | 3582.090 (op/sec) | 3582.090 (op/sec) |
VDI_ELLPIE | 637.168 (op/sec) | 637.168 (op/sec) |
VDI_PIESLICE | 800.000 (op/sec) | 802.974 (op/sec) |
VDI_RBOX | 19085.714 (op/sec) | 19085.714 (op/sec) |
VDI_PLINE | 100756.219 (op/sec) | 96280.000 (op/sec) |
VDI_FILLAREA | 1390.909 (op/sec) | 1390.909 (op/sec) |
VDI_GTEXT | 15000.000 (op/sec) | 15020.000 (op/sec) |
VDI_JUSTIFIED | 5914.191 (op/sec) | 5973.333 (op/sec) |
VDI_BLITTING | 80881.188 (op/sec) | 44346.000 (op/sec) |
Il y a peu de différences de vitesse entre la CT60-100 et la M5484LITE, aussi je pense obtenir des résultats similaires sur la CTPCI.
24 Janvier 2007. Integration dans le TOS de VIDIX avec quelques nouvelles fonctions XBIOS entre 400 et 417 :
Février 2007. Suspendu les développements sur la Radeon. Les développements sur la Sapphire All-In-Wonder VE sont-ils encore utiles avec l'arrivée de la TNT ?
Etude de l'intégration d'un OS temps réel et d'une couche TCP/IP afin d'apporter des nouveaux outils sur la carte Coldfire.
Le choix se porte sur FreeRTOS et lwIP.
Mars 2007. Ajout d'un serveur HTTP, les pages sont en mémoire flash.
Passage de la partie PCI du TOS en flash au format compressé LZ. A la décompression le TOS occupe maintenant deux parties :
Avril 2007. Ajout de serveurs TFTP et FTP utilisant le ram-disque de 8 Mo.
Ajout interpréteur de commandes via le port série (terminal) ou un serveur Telnet.
Juin 2007. Le Coldfire ne disposant pas d'un vrai bus error (ou Access Fault) comme le MC68060, protection des zones inutilisés via la MMU.
Utilisation des deux piles du Coldfire V4e (Superviseur et Utlisateur), modification de la CF68KLIB pour la faire tourner en mode superviseur et les tâches de FreeRTOS (le TOS lui-même est une tâche) en mode utilisateur.
Cela doit permettre de faire fonctionner plus de programmes sous la CF68KLIB.
Juillet 2007. Etude de l'ajout d'un codec AC97 sur le PSC2 du Coldfire.
A suivre...
Octobre 2007. Ajout via GlueStick (socket BSD via lwIP) du cookie et les fonctions STiK.
Il est possible d'appeler directement les fonctions de la couche TCP/IP via un cookie 'SOCK' :
Décembre 2007. Essai d'ajouter un serveur VNC.
Janvier 2008. Ajout de la cible M54455EVB, le makefile peut maintenant créer trois cibles :
Mai 2008. Correction de bugs dans la couche TCP/IP.
Juin 2008. Ajout commande pour tracer les instructions émulés par la CF68KLIB afin de trouver plus facilement pourquoi certains programmes ne l'aime pas.
Correction timeout arbitreur (interrution créant artificiellement un Access Fault).
Juillet 2008. Passage de toutes les tâches de FreeRTOS en code natif excepté la tâche TOS tournant sous la CF68KLIB.
Ajout gestion des points d'arrêt dans la tâche TOS de FreeRTOS.
En cas de plantage répété du TOS, il est tué pour faciliter le débuggage via l'interprêteur de commandes de FreeRTOS.
Ajout commande pour tracer les traps appelant le TOS.
Aout 2008. Essai d'un doubleur PCI sur la M5484LITE, malheureusement il est prévu pour un BUS PCI en 5V sur ses deux connecteurs.
Isolation des pistes I/O pour contourner le problème mais il n'y a plus de sécurité., car le Coldfire ne tolére que du 3V3.
Certaines cartes PCI n'ont pas de détrompeur mais leurs buffers PCI sont en 5V, pour vérifier la compatibilité de la carte il suffit de la placer dans le
slot unique de la M5484LITE car l'alimentation ATX se met en sécurité si la carte PCI à ses buffers en 5V (pins I/O).
Ajout d'une carte Ethernet Realtek RTL8139D PCI en plus de la carte Radeon, essai sans succés du driver rtl8139 sous MiNT.
Septembre 2008. Correction bug Ethernet dans le driver FEC du MCF548X.
Ajout affichage graphique des tâches de FreeRTOS dans le serveur HTTP.
Si l'URL n'est pas trouvée dans les pages prédéfinies en mémoire flash, le serveur HTTP cherche le fichier en c:\html\.
Ajout de l'USB Mass Storage sur l'USB device du MCF548X, il utilise le ram-disque de 8 Mo.
Bien que le Coldfire v4e soit buggé, cela fonctionne parfaitement sur iMac, Mac-Mini et un adaptateur TNT Visiosat TVT 250 USB.
Bonne nouvelle, Rodolphe a enfin repris le routage de la CTPCI !
Octobre 2008. Boot possible sur le ram-disque à partir d'un changement de celui-ci via l'USB Mass Storage, la procédure est la suivante :
Mai 2009. Mathias Wittau depuis le début de l'année me relance sur le nouveau projet ACP.
Bien que les choix techniques ne m'interressent pas vraiment (base FPGA trop chère émulant le vieux hardware Atari, Videl préféré à une carte graphique, un seul port ethernet alors que le Coldfire utilisé en a deux, pas de CAN...),
et qu'il reste à finir mon travail sur la CTPCI, j'ai proposé mon aide. Après tout il est possible que ce soit le seul Atari Coldfire (d'où son nom COLDARI).
Mon premier objectif étant d'ajouter le son AC97 au Coldfire.
Ajout de la cible COLDARI, le makefile peut maintenant créer quatre cibles :
Juin 2009.
Début du debug sur la CTPCI ! Le prototype étant terminé les essais peuvent commencer.
Le big endian et le little endian sont inversés dans le PLX9054.
Correction des sélections de 'device' du PLX9054 (pour chaque slot), il faut ajouter 11, currieux... Ce 'bridge' n'est pas réellement compatible avec les spécifications PCI.
Fredi Aschwanden m'a envoyé un CS4299 comme codec audio pour l'AC97 !
Ecriture du driver AC97 basé sur Linux pour les codecs, toutefois il faut écrire intégralement la partie Coldfire. Le PSC du Coldfire dispose d'un mode AC97 mais visiblement personne sur le net ne l'a déjà utilisé !
Seule la partie XBIOS du driver AC97 est facile à écrire, ayant déjà écrit un driver audio pour MagiC MAC et Aranym.
Le DMA du Coldfire pourra être utilisé pour transférer les trames AC97 mais dans un premier temps ce sera le CPU et les interruptions sachant que chaque PSC du Coldfire dispose d'une fifo de 512 octets sur TX et RX.
Une trame AC97 contenant 256 bits (13 slots) soit 13 mots dans la fifo (52 octets).
Juillet 2009.
Les essais CTPCI sont laborieux, il y a des erreurs sur les transferts.
Création de tests pour Rodolphe Czuba utilisant le PCI BIOS.
Correction du device dans X86EMU, seul le slot 3 pouvait fontionner ! Ce qui ne posait pas de problème sur la M5484LITE avec son unique slot. Avec cette modification X86EMU ne met plus que deux secondes pour initialiser la Radeon avec son BIOS.
Sur la M5484LITE, installation du codec audio AC97 CS4299, comme on voit sur cette photo :
Aout 2009.
Rodolphe a corrigé un gros problème d'horloge sur la CTPCI. Après avoir modifié ABE et SDR, il a fait fonctionné l'ensemble CTPCI + CT60 à 105 MHz !
Essai de l'instruction move16 sur la CTPCI et débuts des essai DMA du PLX9054. Avec le DMA les essais n'avancent plus très vite.
Séparation en deux zones prefetch ou non dans la zone MEM PCI.
Correction et amélioration des transferts DMA du PLX9054, mise en place du chainage de blocs DMA si le bloc n'est pas contigue.
Sur la M5484LITE, utilisation du Comm Bus pour les transferts DMA <=> PCI, plus de 100 Mo/S en écriture.
Début des essais du driver audio AC97, la lecture des registres fonctionne mais l'écriture n'est pas fiable.
Si l'on lance la lecture sonore, cela ne fonctionne pas, on voit (via une commande 'acpr' ajoutée en debug) que certains registres ont été réinitialisés comme la fréquence d'échantillonnage !
Septembre 2009. Le PLX9054 ayant des limitations sur ses zones locales PCI MEM et I/O qui doivent être de la même taille et alignés suivant la taille, le TOS CT60 a maintenant 3 cibles :
Octobre 2009. Mark Duckworth ayant a présent une M5485EVB, réorganisation du driver Radeon pour devenir multicible, la M5485EVB ayant un module FireEngine plus complet que la M5484LITE : le LynxEM+. Trois parties sont maintenant présentes :
Novembre 2009.
Réintégration du driver PCI USB ohci/ehci basé cette fois sur les sources de u-BOOT.
L'essai sur la M5484LITE se fait avec la carte USB NEC utilisant un D720101 qui attend la CTPCI depuis 4 ans.
Le bus PCI de la M5484LITE est à 50 MHz et le NEC donné pour un bus PCI à 33 MHz mais ca fonctionne !
Le driver, suivant les périphériques détectés gère :
Janvier 2010. Commencé le remplacement de l'AES par MyAES (merci Olivier Landemarre !), ajout sélecteur de fichiers et boites de dialogue internes.
Mars 2010.
Incroyable, j'ai reçu la CTPCI !
Avril 2010.
ABE7 est-il fiable ? Par 3 fois des problèmes de disque dur sont survenus (dont 2 fois perte d'une partition, la 1ère avant l'installation de la Radeon).
Le bridge PLX9054 étant beaucoup plus lent que le Coldfire V4e, ajout d'une détection du reset à froid pour ne lancer que dans ce cas le VGA BIOS X86.
Activation détection moniteurs sur la Radeon.
Correction boîte de dialogue changement de résolutions sous le bureau du TOS.
Inversion des bits d'autorisaton des interruptions dans le PCI BIOS (suite au changement du hard par Rodolphe).
Les interruptions locales du PLX9054 ne peuvent pas fonctionner (bug hard sans solution).
Réduction usage de Malloc.
Ajout piles locales pour les routines VBL, VDI, Souris, et Bconout 2/5.
Correction bug icônes jaunes (vq_color, merci à Olivier Landemarre).
Correction blocage aléatoire fifo Radeon sur certaines fonctions du VDI (v_gtext et vrt_cpyfm).
Essai du DMA (PLX9054), après mise à jour de ABE, les écritures vers la zone PCI fonctionnent (Kronos affiche 1500 Mo/S), mais les lectures bloquent la machine. Dévalidation des lectures pour l'instant (bug hard).
Essai des interruptions sur carte réseau RTL8139D + driver Milan sous MiNT sans succès (merci à Patrice Mandin, bug hard).
Modification de la carte USB2 en 3V3, merci Rodolphe.
Essai du 'bus matering' via la carte générique USB2 NEC en STRAM et via la RAM de la carte graphique Radeon sans succès (bugs hard).
Mai 2010.
Démontage de la carte USB et de la carte réseau qui ont fini par créer des erreurs de parité et même la disparition de la Radeon puis la reconnaissance de la CTPCI lors du scan PCI !
Voici un comparatif du TOS VDI sous Kronos :
Kronos test | Radeon 9250 / CTPCI PCI 33 MHz / CPU 95 MHz | Radeon 9250 / M5484LITE PCI 50MHz / CPU 200MHz |
---|---|---|
VDI_CIRCLE | 2352.941 (op/sec) | 3943.662 (op/sec) |
VDI_ARC | 19900.990 (op/sec) | 27164.179 (op/sec) |
VDI_BAR | 64477.612 (op/sec) | 44250.000 (op/sec) |
VDI_ELLARC | 17700.000 (op/sec) | 25200.000 (op/sec) |
VDI_ELLIPSE | 2142.857 (op/sec) | 3582.090 (op/sec) |
VDI_ELLPIE | 455.696 (op/sec) | 637.168 (op/sec) |
VDI_PIESLICE | 535.316 (op/sec) | 802.974 (op/sec) |
VDI_RBOX | 15879.024 (op/sec) | 19085.714 (op/sec) |
VDI_PLINE | 76866.995 (op/sec) | 96280.000 (op/sec) |
VDI_FILLAREA | 823.318 (op/sec) | 1390.909 (op/sec) |
VDI_GTEXT | 8840.000 (op/sec) | 15020.000 (op/sec) |
VDI_JUSTIFIED | 8827.586 (op/sec) | 5973.333 (op/sec) |
VDI_BLITTING | 39285.149 (op/sec) | 44346.000 (op/sec) |
Kronos test | Radeon 9250 / CTPCI PCI 33 MHz / CPU 95 MHz TOS VDI | Radeon 9250 / CTPCI PCI 33 MHz / CPU 95 MHz fVDI |
---|---|---|
VDI_CIRCLE | 2352.941 (op/sec) | 1682.243 (op/sec) |
VDI_ARC | 19900.990 (op/sec) | 10500.000 (op/sec) |
VDI_BAR | 64477.612 (op/sec) | 56898.000 (op/sec) |
VDI_ELLARC | 17700.000 (op/sec) | 9411.765 (op/sec) |
VDI_ELLIPSE | 2142.857 (op/sec) | 1565.217 (op/sec) |
VDI_ELLPIE | 455.696 (op/sec) | 390.244 (op/sec) |
VDI_PIESLICE | 535.316 (op/sec) | 466.019 (op/sec) |
VDI_RBOX | 15879.024 (op/sec) | 7375.610 (op/sec) |
VDI_PLINE | 76866.995 (op/sec) | 69980.392 (op/sec) |
VDI_FILLAREA | 823.318 (op/sec) | 703.448 (op/sec) |
VDI_GTEXT | 8840.000 (op/sec) | 7880.000 (op/sec) |
VDI_JUSTIFIED | 8827.586 (op/sec) | 9142.857 (op/sec) |
VDI_BLITTING | 39285.149 (op/sec) | 37571.707 (op/sec) |
Juin 2010.
Passage du boot à la version 2.0. Maintenant les patches ne se font plus à la compilation (idée originale de Xavier Joubert) mais lors du lancement du boot.
Le TOS404 patché tourne toujours en SDRAM protégé en écriture par la PMMU, le TOS404 original se trouvant en flash.
Le principe de fonctionnement est similaire à l'Hades. Ce système résoud mieux le problème des licences.
Il est possible de charger séparément le TOS404, le boot et les drivers PCI :
Juillet 2010.
Accès direct aux registres de la Radeon.
Ajout paramètre diviseur horloge utilisateur de 2 à 6 pour la CTCM, voici un comparatif avec Kronos :
Kronos test | Radeon 9250 / CTPCI PCI 31.66 MHz / CPU 95 MHz (/3) TOS VDI | Radeon 9250 / CTPCI PCI 47.5 MHz / CPU 95 MHz (/2) TOS VDI | Radeon 7500 / M5484LITE PCI 50 MHz / CPU 200 MHz TOS VDI |
---|---|---|---|
VDI_CIRCLE | 2469.136 (op/sec) | 2469.136 (op/sec) | 3750.000 (op/sec) |
VDI_ARC | 18916.256 (op/sec) | 18916.256 (op/sec) | 28656.716 (op/sec) |
VDI_BAR | 47304.000 (op/sec) | 47477.228 (op/sec) | 66882.000 (op/sec) |
VDI_ELLARC | 17227.723 (op/sec) | 17227.723 (op/sec) | 26100.000 (op/sec) |
VDI_ELLIPSE | 2253.521 (op/sec) | 2253.521 (op/sec) | 3396.226 (op/sec) |
VDI_ELLPIE | 472.131 (op/sec) | 478.405 (op/sec) | 620.690 (op/sec) |
VDI_PIESLICE | 566.929 (op/sec) | 569.170 (op/sec) | 779.783 (op/sec) |
VDI_RBOX | 16114.851 (op/sec) | 16114.851 (op/sec) | 16563.184 (op/sec) |
VDI_PLINE | 72676.617 (op/sec) | 72676.617 (op/sec) | 134460.000 (op/sec) |
VDI_FILLAREA | 900.000 (op/sec) | 900.000 (op/sec) | 1291.139 (op/sec) |
VDI_GTEXT | 8500.000 (op/sec) | 8540.000 (op/sec) | 15860.000 (op/sec) |
VDI_JUSTIFIED | 8296.296 (op/sec) | 8334.884 (op/sec) | 7255.061 (op/sec) |
VDI_BLITTING | 36611.765 (op/sec) | 36611.765 (op/sec) | 100362.000 (op/sec) |
STRAM_READ | 7.833 (Mo/sec) | 7.813 (Mo/sec) | 64.807 (Mo/sec) |
STRAM_WRITE | 12.660 (Mo/sec) | 12.660 (Mo/sec) | 74.954 (Mo/sec) |
STRAM_MOVE | 4.851 (Mo/sec) | 4.851 (Mo/sec) | 34.766 (Mo/sec) |
VIDEO_READ | 5.870 (Mo/sec) | 7.078 (Mo/sec) | 37.038 (Mo/sec) |
VIDEO_WRITE | 1530.998 (Mo/sec) | 1524.441 (Mo/sec) | 95.326 (Mo/sec) |
VIDEO_MOVE | 1122.387 (Mo/sec) | 1122.387 (Mo/sec) | 2394.818 (Mo/sec) |
Aout 2010.
Réécriture de CHGRES.PRG pour MagiC.
SpeedoGDOS fonctionne mais n'est pas vraiment stable (avec/sans CTPCI/Radeon il y a des problèmes de cache, par exemple QED plante aléatoirement).
Pour le lancer du dossier AUTO, il faut couper les caches and les remettre ensuite. Ajout du test dans le TOS.
Maintenant le TOS via la fonction Vsetscreen contrôle si le driver Radeon driver installe rééllement la résolution sélectionnée par le modecode, sinon il met à jour le modecode.
On peut voir le résultat avec le bouton 'Test' dans VIDEOCNF.CPX.
Septembre 2010.
NVDI 5.03 fonctionne avec l'écran du boot. Il faut renommer les fichiers NVDIDR*.SYS dans le répertoire de NVDI (merci à Claude Labelle).
Ajout d'un patch XBIOS pour NVDI, maintenant le TOS écrase le XBIOS de NVDI en installant le XBRA '_PCI' en tête de liste quand NVDI est trouvé.
Le résultat : NVDI 5.01 fonctionne et il est possible de changer la résolution et d'avoir la liste des résolutions avec Vsetscreen !
Correction du TOS pour que NVDI fonctionne avec MagiC et le nouveau CHGRES.PRG.
Ajout d'un paramètre en flash et d'une option dans CT60CONF.CPX pour ajouter une sortie debug dans video.log.
Ajout d'un second test de la CTPCI avant d'appeler les patches et de copier le TOS en SDRAM parceque plus loin la CTPCI est toujours détectée par le PCI BIOS ???
Correction de bugs dans le VDI dans les fonctions v_fillarea (line), v_rfbox (user pattern), et v_locator (merci à Claude Labelle).
Correction de la fonction VDI v_contourfill utilisée par beaucoup d'applications graphiques (remarque : Cette fonction n'est pas implémentée dans fVDI).
Octobre 2010.
Correction division par zéro dans la routine de clipping.
Correction de la fonction VDI vrt_cpyfm en 65K couleurs.
Test for obtenir le fonctionnement de MagiC 6.20 avec NVDI.
Maintenant il ne reste plus qu'à attendre la correction des problèmes hardware pour le fonctionnement des cartes PCI USB/Ethernet.
![]() |
![]() |
Octobre 2010.
J'ai contacté Fredi pour continuer mon travail sur la 4ème cible, le Firebee (ancien nom du projet Coldari) suspendu depuis Janvier.
N'ayant pas de PC, l'idée est de travailler comme la M5484LITE, et utiliser dBUG pour charger le TOS. Ainsi la première étape est de recompiler dBUG pour le FIREBEE :
Novembre 2010.
Réécriture de la routine de remplissage par défaut de fVDI par du code natif Coldfire, maintenant c'est plus rapide. La détection du moniteur fonctionne via le port I2C.
Fabrication d'un bus PCI passif avec le riser PCI et le 4ème slot initilisé de la CTPCI, beaucoup de fils à souder...
La carte Radeon 9200 connectée au Firebee...
Décembre 2010.
Essai du Floppy sur le Firebee, la lecture fonctionne mais pas l'écriture, le FPGA n'émulant pas le contrôleur AJAX du FALCON.
Ajout du driver SD-Card à partir des sources de Fredi.
Essai de l'USB Mass Storage avec les contrôleurs OHCI et EHCI du NEC PCI sur le Firebee. Mais les clefs USB fonctionnent seulement quand la Radeon charge le BUS PCI sinon j'obtiens des timeouts et des erreurs PCI non réccupérables comme la M5484LITE.
Quelques changements ajoutés à BDOS pour corriger un bug avec les clusters de 32Ko (partitions de 2Go).
Si le BAS est installé, maintenant il est possible d'utiliser ethernet sans dBUG avec quelques limitations (3 paramètres utilisés) :
Janvier-Février 2011.
Nous sommes en 2011, et il n'y a aucune nouvelle au sujet de la correction des problèmes hard sur la CTPCI :-(
Supression des sources Linux AC97. Réécriture et essai du driver AC97 Coldfire sur le Firebee (activé aussi sur la M5484LITE) :
Mars 2011.
Correction lecture MP2 et MPEG sur Aniplayer pour le Coldfire.
Essai de la fonction XBIOS Vsetscreen testée dans tous les nouveaux modes pour la carte Radeon. Ajout et essai des commandes CMD_FILLMEM, CMD_COPYMEM, CMD_TEXTUREMEM et CMD_GETVERSION pour une accélération XBIOS.
Ajout de la fonction XBIOS Vsync pour la carte Radeon.
Ajout rejet des modes pour horloges au delà de 135 MHz qui ont des problèmes de température avec la sortie DVI sur RV100 (cartes Radeon 7000).
VIDEOCNF.CPX, ajout du fichier de configuration video.cnf pour XAAES.
Cible Firebee :
Avril 2011.
Ajout des sous fonctions accelérées CMD_LINEMEM, CMD_CLIPMEM, et CMD_SYNCMEM au Vsetscreen du XBIOS (Radeon).
Sur les cibles Coldfire ajout du support 'plug and play' pour l'USB utilisant une tache de FreeRTOS. Mais il y a des problèmes quand on connecte la souris ou le clavier une seconde
fois, le résultat est 'Device Not Responding' avant de démarrer à nouveau le driver souris/clavier.
Ajout d'une correction qui fonctionne avec la souris mais semble ne pas fonctionner avec mon clavier. La couche USB utilise les sources de U-Boot, c'est plus facile à utiliser que Linux mais il y a quelques limitations.
Correction de beaucoup de bugs dans les drivers XHDI (boot IDE et drivers SD-CARD/USB).
Mai 2011. Cible Firebee :
Juin 2011.
Correction d'un affreux bug avec la fonction VDI vst_rotation sur toutes les cibles.
Ajout de la sous fonction CMD_BLANK au XBIOS Vsetscreen (Radeon), cela fonctionne aussi sur le Firebee avec le FPGA et les modes Videl ACP.
Ajout d'un autre menu de boot et possibilitée de secours sur la cible Firebee :
Index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
MFP | 19200 | 9600 | 4800 | 3600 | 2400 | 2000 | 1800 | 1200 | 600 | 300 | 200 | 150 | 134 | 110 | 75 | 50 |
PSC0 | 19200 | 9600 | 4800 | 3600 | 2400 | 2000 | 1800 | 1200 | 600 | 300 | 230400 | 115200 | 57600 | 38400 | 153600 | 76800 |
Juillet 2011.
Essai de correction des problèmes de boot avec la flash de la CT60 en lisant jusqu'a 4 fois le TOS en flash si le CRC est mauvais avant d'appliquer les patches en SDRAM.
Si le Supervidel est trouvé, le TOS utilise la routine Bconout par défaut qui utilise le blitter.
Cibles Coldfire :
Aout 2011.
Correction de offscreen_free.
Correction de la détection du changement sur le port 5 du contrôleur USB EHCI.
Ajout message d'alerte USB.
Sur les cibles Coldfire V4e, ajout du cookie 'DMAC' pour un usage externe du DMA.
Lancement du driver AC97 driver une seconde fois (second reset à chaud) en cas d'erreur (Firebee).
Ajout d'un patch pour MiNT et sa routine d'interruption IKBD TOS < 2.0 pour obtenir la compatibilité avec le TOS 4.04 pour l'USB2 utilisant Kbdvbase().
Sur la cible Firebee et le TOS démarré à partir du choix du menu de boot 'TOS404 for MiNT', le driver FEC est stoppé et sa tâche tuée quand le cookie 'MiNT' est détecté.
Sur M5484LITE/FIREBEE autorisation de l'interruption XLB PCI.
Dans la CF68KLIB, supprimé fix_predecrement/fix_postincrement quand 'address error' survient avec MOVE.B/W/L (An)+,
Sur la cible Firebee, ajout de la désélection des 8 périphériques SCSI et des 4 périphériques IDE via le CPX.
Sur la cible Firebee, modification pour le 'Device Errata 26', maintenant USB Mass Storage fonctionne bien (PCI <=> Flexbus).
Sur la cible Firebee, activation de l'interruption XLB PCI, maintenant l'abort crée une interruption de niveau 7 redirigée sur 'access fault'. Ainsi maintenant les accès sur les espaces inutilisés du bus PCI sur IO et MEM créent un 'access fault'.
Septembre 2011. Ajout du support de bus multiple dans le PCI BIOS, maintenent les limites sont :
L'adapateur PCI/PCIe et la carte USB2 PCIe connectées sur le Firebee...
Octobre-Novembre 2011.
Corrigé le possible appel IDE invalide (mauvais périphérique) dans la routine de boot après la détection des périphériques SCSI (par exemple avec la touche ALT cela plantait).
Ce bug est très vieux, mais depuis la CTPCI, la routine IDE est prête pour un second port et ce second port n'est pas implémenté dans le hardware actuel aussi il est possible d'obtenir un plantage (accès invalide sur le second port IDE de la CTPCI).
Sur toutes les cibles, ajout des lecteurs ATAPI à SCSIDRV. Le FIREBEE et le FALCON avec la CT60/CTPCI ont IDE et IDE2 (IDE pas compatible).
Cookie SCSI ajouté avant le lancement de la séquence de boot du driver du disque dur.
Ajout d'un driver CD SCSI pour booter avec les CD-backups d'Extendos et un driver CD ISO9660 pour les restaurations via un popup menu durant le boot quand un CD/DVD est trouvé.
Ajout d'un encodeur/décodeur LZMA pour une meilleure compression des drivers.
Décembre 2011.
Sur la cible Firebee, ajout du cookie 'PEXE', cette valeur est un pointeur qui utilise la basepage comme paramètre sur la pile pour essayer de patcher les programmes Pure C avec un OS externe.
Février 2012.
Depuis Janvier, Rodolphe travaille de nouveau sur la CTPCI :-)
Ajout de FreeRTOS sur la cible CT60/CTPCI et la tâche HUB USB.
Sur CTPCI correction du test inversé des bits du registre PEND, et finallement supprimé ce test qui occasionne des boucles dans la routine d'interruption PCI.
Essai à nouveau, avec le dernier fichier jedec pour la CTPCI (CTPCI_1L), de l'adaptateur PCI/PCIe et de la carte USB2 PCIe.
C'est beaucoup mieux, les interruptions fonctionnent et le driver ethernet RTL8139 d'OZK tourne, mais il y a des blocages total du système avec ethernet et aussi USB Mass Storage (la plupart du temps quand le DMA écrit dans la RAM locale).
Ajouter des boucles d'attente semble réduire les problèmes mais dégrade la vitesse des transferts, par example sur l'USB vous devez remplacer la temporisation de 1uS entre deux lectures du registre d'état par une temporisation de 10 mS,
et pour ethernet j'ai utilisé (juste pour tester) une tâche d'interruption avec le driver RTL8139 d'OZK qui ajoute un délais après après l'interruption.
Ceci d'est pas une solution viable pour une version finale (car trop dépendant du matériel).
Mars 2012. Cible CT60/CTPCI:
Avril 2012.
Sur la cible CT60/CTPCI, ajout d'une solution de contournement pour les blocages (il semble que c'est un 'deadlock') avec une nouvelle fonction XBIOS ctpci_dma_lock (du PCI BIOS) pour une solution de contournement hardware (pas prête, Rodolphe est occupé par son travail).
La nouvelle fonction est vide parceque j'ai besoin d'informations de Rodolphe (un nouveau registre CTPCI).
Mai 2012.
Sur la cible CT60/CTPCI le driver FEC driver est stoppé et sa tâche tuée quand le cookie 'MiNT' est détecté.
Ecriture des drivers RTL8139, XIF for MiNT et STX pour Sting (le TOS peut utiliser le driver interne LwIP).
Réécriture des routines conout en C pour le Videl ou carte graphique (avec ou sans plans, avec ou sans routines d'accélération à partir des drivers).
Utilisation des tables en 0xE13268 des routines VT52 du TOS404, ces routines utilisent le registre A4 comme pointeur Line A.
Pas utilisé sur les cibles Coldfire, il y a un plantage lors du changement de résolution.
Sur la cible Firebee, ajout d'un compteur de 5 tentatives pour le test du clavier IKBD, ceci doit corriger les problèmes d'interruption inhibée
(souvenez vous qu'il faut inhiber les interruptions IKBD quand le RJ11 n'est pas connecté pour supprimer les interruptions avec les caractères reçus nuls qui augmentent la charge CPU).
Correction serveur telnet, et ajout sur la cible CT60/CTPCI.
Juin 2012.
Ajout support IDE LBA 48 (réduit à 32 bits pour le XBIOS) sur toutes les cibles excepté la M5484LITE parceque les équations bugguées dans le CPLD on besoin d'accès 16 bits sur les registres IDE).
Juillet-Aout 2012.
Trouvé une nouvelle solution pour un serveur VNC (l'idée date de Décembre 2007 !), mais cette fois pas intégrée au TOS (faute de place).
Son nom est aVNCServ, voici les caractéristiques :
Septembre 2012.
Sur la cible CT60/CTPCI, ajout d'une option pour inhiber XHDI et SCSIDRV installés par le TOS (via les réglages CPX et les paramètres en flash de la CTPCI).
Novembre 2012. Améliorations sur la cible Firebee :
Décembre 2012.
Dans lwIP, remplacement du sémaphore utilisé par select() par un masquage des interruptions (plus rapide).
Ajout du serveur HTTP de base à la cible CT60, l'idée étant de mettre à jour la flash avec le TOS comme le Firebee. Changement du port utilisé à 8080.
Correction du bug avec le clavier USB US (et non français ou allemand), où les tables shift_table et altgr_table sont nulles.
Janvier 2013. Cible Firebee :
Février 2013. Sur la cible Firebee, à nouveau quelques corrections pour utiliser Emutos à partir du boot du TOS:
Mai 2013.
Rodolphe actuellement n'a plus le temps de continuer sur la CTPCI.
Juin 2013.
Publication de la version officielle de Aniplayer 2.23 pour le décodage MP3 sur le Firebee utilisant les instructions MAC du V4e et aussi pour utiliser l'interface VIDIX et lire les formats videos donnant du YUV en plein écran sur la Radeon.
Janvier 2014.
Je constate que je n'ai pas allumé beaucoup mon Falcon l'année dernière faute de temps principalement.
Correction IDE, le mode LBA48 était utilisé à partir de 8 Go au lieu de 128 Go.
Sur les cibles Coldfire, correction plantage de la tâche HUB USB sur un accès XHDI de MiNT.
Correction période système sur le Firebee (horloge à 132 Mhz et non 133).
Pas de nouvelles de la CTPCI, heureusement qu'il y a toujours de l'activité sur le Firebee pour poursuivre les développements. Après bientôt 9 ans depuis le lancement de l'idée du projet (2005), Rodolphe devrait peut-être diffuser ses sources à ceux qui utilisent encore la carte. Ou alors faut-il attendre sa retraite pour utiliser normalement ethernet et l'USB sur la CTPCI ?
Archive | Version | Taille | Ordinateur | |
---|---|---|---|---|
TOS drivers | tos_drivers.lzh | 1.01 27 Juillet 2011 | 2756 Ko | CTPCI/FIREBEE![]() |