@subject "Documentation" @author "Didier MEQUIGNON" @database "Documentation of the FIREBEE - FIRETOS" @$VER: Version Boot 2.01, Drivers 1.01 (July 25, 2011) @node "Title" @{U}Title FIREBEE - FIRETOS@{u} @autorefoff Documentation of the @limage G:\tos060\doc\firebee\english\..\img\firebee.img 31 Version Boot 2.01, Drivers 1.01 July 25, 2011 by Didier MEQUIGNON aniplay@@wanadoo.fr @autorefon Contents @endnode @node Main "Contents" @symbol "Contents" @toc "Title" @{U}Contents FIREBEE - FIRETOS@{u} 1 Presentation 1.1 Coldfire V4e 1.2 TOS 4.04 2 TOS in Flash 2.1 Start TOS 2.2 Drivers 2.3 Technical (boot) 2.4 Boot menu 2.4.1 Original boot menu (TOS started) 2.4.2 Firebee boot menu (after board init) 3 Flash Tool 3.1 Use Flash Tool 4 Configuration 4.1 Introduction 4.2 Average load 4.3 Temperature 4.4 Memory / uP 4.5 Boot 4.6 Stop/Misc 4.7 Langage 4.8 Video 4.9 CT60TEMP.APP 4.10 BubbleGEM 5 Cache 5.1 The Coldfire's V4e caches 5.2 GENERAL6.CPX 5.3 XCONTROL, ZCONTROL, COPS, and SDRAM in copyback 5.4 PARX.SYS modules and the copyback 5.5 TSR programs who crashes in the AUTO folder 5.6 Programs packed by Ice 6 Compatibility 6.1 Crashes 6.1.1 Crashes with the Coldfire 6.1.2 Crashes with caches 6.2 Solutions 7 Annexes 7.1 TOS Keyboard shortcuts 7.2 Load TOS with dBUG 7.3 DBUG task 7.4 Firebee MMU mapping 7.5 LWIP socket cookie 'SOCK' 8 Contacts @endnode @node "Presentation" @toc "Main" @{U}1 Presentation FIREBEE - FIRETOS@{u} The Firebee use a Coldfire V4e at 266 MHz (MCF5475) and an FPGA for emulate obsolete Atari devices and add new features (DSP ?) in the future. Today for new FPGA feature, there are just a DVI-I port connected to him (Videl ACP extended modes without hardware acceleration). @limage G:\tos060\doc\firebee\english\..\img\schema.img 1 Some new devices are connected to the Coldfire : ù USB controller on his PCI bus. ù AC97 audio codec on his AC-LINK interface. ù EDID from monitor to his I2C interface. ù Ethernet 10/100. 1.1 Coldfire V4e 1.2 TOS 4.04 @endnode @node "Coldfire V4e" @toc "Presentation" @{U}1.1 Coldfire V4e FIREBEE - FIRETOS@{u} This coldfire like all the members of his familly is a microcontroller, there are : ù Two Fast Ethernet Controllers (FEC 10/100), but only the first is used on the Firebee. ù Four Programmable Serial Controllers (PSC), the first port is the highspeed serial port, the third port is for the AC97 audio codec. ù A PCI controller connnected to an USB host controller, the PCI configured at 33MHz on the Firebee. ù An USB slave device not used on the Firebee. ù A Flexbus connected to the FPGA and 8 MB of Flash memory (multiplexd bus, same frequency than the PCI). ù A Memory Controller connected to 512MB of SDRAM memory. ù An I2C interface connected to the DVI-I port. ù An DSPI interface connected to the SD-Card socket. ù A multichannel DMA (used for example for the AC97). ù 6 Timers. @limage G:\tos060\doc\firebee\english\..\img\v4e.img 1 @endnode @node "TOS 4.04" @toc "Presentation" @{U}1.2 TOS 4.04 FIREBEE - FIRETOS@{u} The TOS404 for FIREBEE use the CF68KLIB (68060 emulation) and use : ù Timers and MFP (FPGA emulation). ù Serial ports (MFP FPGA emulation and PSC0 from Coldfire). ù Serial port for IKBD with Eiffel. ù ACIA for original IKBD (FPGA emulation). ù ACIA for MIDI (FPGA emulation). ù Ethernet 10/100. ù PCI: USB / Radeon (USB support mouse & keyboard, and mass storage) with plug & play feature. ù CompactFlash (FPGA emulation). ù SD-Card (using DSPI). ù Atari Falcon IDE / SCSI (FPGA emulation, SCSI not implemented). ù Coldfire DMA. ù MMU. ù PSG (YAMAHA - FPGA emulation) ù Atari Floppy (FPGA emulation, only reading works) ù RTC (PIC & FPGA emulation) ù Videl ACP extended modes with EDID probing (monitor detection) ù AC97 Sound. The TOS has four parts : ù The original TOS 4.04. ù The boot who can start from reset, initialize the board, start the CF68KLIB, apply the patches to the TOS, add some XBIOS and boot disk parts rewrited, and start the PCI BIOS. ù The CF68KLIB for a 68060 emulation. ù The driver part (AC97, Radeon, DMA, USB, Video ACP, rewrited VDI, TCP/IP stack, etc ...). @endnode @node "TOS in Flash" @toc "Main" @{U}2 TOS in Flash FIREBEE - FIRETOS@{u} 2.1 Start TOS 2.2 Drivers 2.3 Technical (boot) 2.4 Boot menu 2.4.1 Original boot menu (TOS started) 2.4.2 Firebee boot menu (after board init) @endnode @node "Start TOS" @toc "TOS in Flash" @{U}2.1 Start TOS FIREBEE - FIRETOS@{u} The TOS located at 0xE0400000 need an FPGA init before start. There are 3 solutions for start the TOS from reset (from 0xE0000000) : ù dBUG who has Ethernet support (TOS easy to update without risk, see 'Load TOS with dBUG') ù BAS the original solution of Fredi (but sound not works under TOS). ù The TOS himself with the rescue TOS who initialize the FPGA. NOTE: Only the 2 latest solutions can also start EMUTOS. @endnode @node "Drivers" @toc "TOS in Flash" @{U}2.2 Drivers FIREBEE - FIRETOS@{u} The drivers part on the Firebee add features to TOS : ù AC97 driver. ù Videl ACP externded modes driver (256 /65K / 16M colors) with EDID monitor detection. ù USB driver. ù SD-Card driver (thanks to Fredi). ù DMA driver. ù Flash driver. ù Fast Ethernet Controller (FEC) driver. ù Ethernet PHY driver (tranceiver). ù VDI/fVDI replacement. ù X86 emulator (for a graphic card initialization). ù ATI Radeon driver. ù XBIOS GSXB driver. ù BDOS (GEMDOS replacement). ù TCP/IP stack (LwIP/FreeRTOS) with TFTP, FTP, Telnet, HTTP servers (you can see screen like a VNC server). ù GlueSTiK and socket interfaces (from cookies 'STiK' and 'SOCK'). ù Real time OS (FreeRTOS) with DBUG task. ù 68K/Coldfire disassembler. @endnode @node "Technical (boot)" @toc "TOS in Flash" @{U}2.3 Technical (boot) FIREBEE - FIRETOS@{u} This is a TOS 4.04 patched by the boot (2.0+), in this order there are : ù Board initialization (Coldfire and ACP registers). ù The copy of the TOS in SDRAM after apply the patches. ù The initialization of the MMU. All the ST-RAM is in writethrough and the SDRAM declaration in copyback. ù Start the CF68KLIB, TOS is a task for FreeRTOS (driver part). ù The installation of the cookies '_CPU', '_FPU', '_CF_'. ù The patchs for cache, MMU, address in 0x00FFxxxx, and the instructions movep replaced. ù The bombs inside exceptions displayed with texts in clear of a crash. ù The XBIOS function 0xC60A to 0xC60D (temperature, parameters in Flash, cache...), and the DSP (functions with handshake). ù The needful patchs for the blitter, the system fonts and the Atari logo copied at the top of the ST-RAM. ù The replacement of the XBIOS Bconout routine (display texts). ù Check and fix the modecode get from NVM. ù Start the PCI BIOS and the drivers. ù The display of the V4e's type (revision, mask and frequency). ù The declaration of the SDRAM to the TOS. ù The initialization of the SDRAM, and the MB/s during writing displayed. ù The fastram buffer created and his cookie '_FRB'. ù The extended fastram buffer created and his cookie 'XFRB'. ù The patch for the boot order of the drives IDE and SCSI (8 choices). ù Extra boot features : - Add SCSIDRV and XHDI protocols. - Add identify device procedure for SCSI and IDE drives, the boot wait if a removable drive is not ready. - Add IDE slave support. - Add CompactFlash support. - Add combined MSDOS/TOS root and partition support, this feature support byte swapping needed by MSDOS format and search a *.SYS for load the disk driver. - Add speed test for bootables devices. - Start internal hard disk driver if no bootable disk as an external driver. ù The patch for the boot menu. ù The displays redirection of the AUTO programs to a file boot.log. ù The patch for the Pexec function for the copyback (cpush after the relocation). ù The blitter patchs of the VDI functions, vro_cpyfm, vr_trnfm, and vrt_cpyfm for work in SDRAM (an intermediate buffer inside ST-RAM is used). ù The AES patchs for change the Newdesk buffer of 4 KB to 32 KB. ù Scan-codes used with the Eiffel card : - PAGE UP/DOWN. - PRINT SCREEN. - POWER (set 2 only, Eiffel 1.0.5). - VOLUME UP/DOWN (set 2 only, Eiffel 1.0.5). @endnode @node "Boot menu" @toc "TOS in Flash" @{U}2.4 Boot menu FIREBEE - FIRETOS@{u} There are two boot menu on the Firebee : ù The original use the NVRAM OS setting, the TOS is started. ù The second can start EMUTOS in native mode or a TOS to test after board initialization. Switches or TOS source area (normal or rescue) change the content of this menu. 2.4.1 Original boot menu (TOS started) 2.4.2 Firebee boot menu (after board init) @endnode @node "Original boot menu (TOS started)" @toc "Boot menu" @{U}2.4.1 Original boot menu (TOS started) FIREBEE - FIRETOS@{u} The TOS can replace magxboot (MagiC) in the AUTO folder for a fast boot (no programs inside the AUTO folder to start). You can enable a boot menu with the configuration CPX. This menu arrives if the entry of the favourite OS inside is <> '-'. You can select TOS, or MagiC, value is stored inside the NVM. With MagiC, the TOS try to found MAGIC.RAM inside the main directory of the boot folder. Sure you can always use MAGXBOOT.PRG or ATABOOT.PRG inside the AUTO folder. @{B} IMPORTANT MOTE : In the current status of emulation, MagiC can't run on Firebee. @{b} @endnode @node "Firebee boot menu (after board init)" @toc "Boot menu" @{U}2.4.2 Firebee boot menu (after board init) FIREBEE - FIRETOS@{u} Boot menu and rescue features context is the result of the switches. SW6 and SW5 are inside the cookie '_SWI': ù B7: (1) SW6 DOWN, (0) SW6 UP. ù B6: (1) SW5 DOWN, (0) SW5 UP. ù B0: (1) rescue TOS started from 0xE0000000 (replace BAS or dBUG). SW6 up is the normal usage. SW6 down allows to TOS to start FTP (build option), HTTP, TFTP servers and create a Ram-Disk actually in B (this feature is also possible with dBUG at 0xE0000000). SW5 up is the normal usage for start the TOS at 0xE0400000 (same usage inside BAS or dBUG at 0xE0000000) and a boot menu has 2 choices TOS or EMUTOS (TOS by default). SW5 down is the rescue mode, TOS at 0xE0000000 continue to run and a boot menu displays 3 choices : ù TOS404 (at 0xE0000000 - boot) => TOS rescue (default choice) ù EMUTOS (at 0xE0600000) ù TOS404 (at 0xE0400000 - normal) => TOS to test @{B} IT'S IMPORTANT TO FLASH ONLY AT 0xE0000000 AN OFFICIAL STABLE RELEASE OF THE TOS (rescuetos.hex) OR CONTINUE TO USE DBUG OR BAS AT 0xE0000000. @{b} NOTES : ù If BAS used for start the TOS, SW5 and SW6 must be up, else you start EMUTOS or nothing. ù If dBUG used for start the TOS, SW5 must be up, else you must use the command 'go E0400000'. @endnode @node "Flash Tool" @toc "Main" @{U}3 Flash Tool FIREBEE - FIRETOS@{u} 3.1 Use Flash Tool @endnode @node "Use Flash Tool" @toc "Flash Tool" @{U}3.1 Use Flash Tool FIREBEE - FIRETOS@{u} @limage G:\tos060\doc\firebee\english\..\img\flash1.img 18 The main task of this program is to put TOS binary (.BIN) or Srecord files (.HEX) inside the flash. Since the BOOT v2.0, it's possible to load separate files for the TOS404, the BOOT and the PCI drivers: ù FIRETOS.HEX: contains BOOT + TOS404 + Atari Diagnostics (must disappear). ù BOOT_FIREBEE.HEX: contains the BOOT (must arrive). ù DRIVERS_FIREBEE.HEX: contains the PCI drivers (GPL licence, not in this archive). ù TOS404.BIN (not in the archive): just for put the TOS in flash, in the case of FIRETOS.HEX isn't used. NOTE : A binary file (.BIN) has a target address fixed at 0xE0400000. @endnode @node "Configuration" @toc "Main" @{U}4 Configuration FIREBEE - FIRETOS@{u} 4.1 Introduction 4.2 Average load 4.3 Temperature 4.4 Memory / uP 4.5 Boot 4.6 Stop/Misc 4.7 Langage 4.8 Video 4.9 CT60TEMP.APP 4.10 BubbleGEM @endnode @node "Introduction" @toc "Configuration" @{U}4.1 Introduction FIREBEE - FIRETOS@{u} The Firebee's configuration is set with a CPX, used normally with XCONTROL, ZCONTROL, or COPS. This CPX allows to : ù Configure the Non Volatile Memory. ù Configure the boot in Flash Eprom. ù Measure MIPS. ù See the load of the system (MiNT or MagiC only). ù See the Firebee temperature (need and Eiffel card inside the same box). ù Blank the monitor after a delay. @limage G:\tos060\doc\firebee\english\..\img\cpx3.img 20 There are five common buttons on this CPX : ù Save : Button for save adjustments on the disk. ù Load : Button for load adjustments saved on the disk. ù OK : Button for validate the values changed into the non volatile ram and the flash parameters. ù Cancel : Button for not change values to the configuration. ù i : Button for display informations (authors). For check get a CPU average load, blank the screen, or get the temperature (with Eiffel) the CPX : ù Under TOS create a desk-accessory CT60TEMP.ACC (sorry for the name ;-) ) and ask to reboot. ù Under MiNT create the program CT60TEMP.APP and start this program. ù Under MagiC start a thread. @endnode @node "Average load" @toc "Configuration" @{U}4.2 Average load FIREBEE - FIRETOS@{u} @limage G:\tos060\doc\firebee\english\..\img\cpx1.img 19 At this page you can see for MiNT and MagiC : ù The current value of CPU average load. ù The level of CPU average load. ù The curve of CPU average load during the last hour. Without MiNT 1.11 or more, this curve is very approximate. @endnode @node "Temperature" @toc "Configuration" @{U}4.3 Temperature FIREBEE - FIRETOS@{u} @limage G:\tos060\doc\firebee\english\..\img\cpx2.img 20 At this page you can see the Firebee's temperature during the last hour if you have an Eiffel card (with the cookie 'Temp'). This curve is normally in blue and change to magenta if the fan works (set to on by the Effeil card). The green curve, the 68060 temperature value, and the trigger level are not used because there are no sensor on the Coldfire (it's a 68060 feature). @endnode @node "Memory / uP" @toc "Configuration" @{U}4.4 Memory / uP FIREBEE - FIRETOS@{u} @limage G:\tos060\doc\firebee\english\..\img\cpx3.img 20 At this page you can : ù See the total capacity of the ST-Ram. ù See the total capacity of the Fast-Ram. ù See the number of free bytes for the ST-Ram. ù See the number of free bytes for the Fast-Ram. ù See the number of millions instructions by second worked out by the microprocessor (BogoMips). ù Select with/without FPU. @endnode @node "Boot" @toc "Configuration" @{U}4.5 Boot FIREBEE - FIRETOS@{u} @limage G:\tos060\doc\firebee\english\..\img\cpx4.img 20 At this page you can : - Select the boot order on the IDE and SCSI drives (8 choices). - Select at boot the operating system by default. - Select at boot the SCSI arbitration. - Select at boot the SCSI identificator (0 to 7). - Set the delay at boot in seconds (used for timeout with the boot menu). - Set the default speed of the highspeed serial port used also for debug. - Under TOS, remove the caches during 5 seconds when a program is started or remove the copyback alert box. - Redirect displays of the AUTO folder's programs to a file boot.log. - Get a debug file video.log. - Swap the two IDE ports (CompactFlash and IDE). NOTES : - Theses settings are writed inside the NVRAM or flash parameters with the 'OK' button. - If you use the CompactFlash as drive or want use the internal driver, please use only new boot (the old boot is the original boot of the TOS 4.04). @endnode @node "Stop/Misc" @toc "Configuration" @{U}4.6 Stop/Misc FIREBEE - FIRETOS@{u} @limage G:\tos060\doc\firebee\english\..\img\cpx5.img 20 At this page you can : - Set a delay for blank monitor (disabled if set to 0). - Set 3 last bytes of MAC address, begin is 00:CF:54. - Set board IP address. - Set host IP address (for TFTP). NOTES : - The delay is saved inside the CPX with the 'Save' button (and not in NVRAM or flash parameters). It's CT60TEMP.ACC/APP features. - The ethernet parameters are writed in the flash parameters with the 'OK' button. If the valuse are 255/FF or 0, dBUG setting are used. - The default gateway address is 0.0.0.0. - The default path/filename for TFTP is /home/firebee.hex. @endnode @node "Langage" @toc "Configuration" @{U}4.7 Langage FIREBEE - FIRETOS@{u} @limage G:\tos060\doc\firebee\english\..\img\cpx6.img 20 At this page you can : - Select at boot the language by default. - Select at boot the keyboard type. - Select at boot the date format. - Select at boot the time format 12 or 24 hours. - Select at boot the date separator. NOTE : Theses settings are writed inside the NVRAM with the 'OK' button. @endnode @node "Video" @toc "Configuration" @{U}4.8 Video FIREBEE - FIRETOS@{u} @limage G:\tos060\doc\firebee\english\..\img\cpx7.img 19 With the default TOS404 (Videl/Blitter) modes you can : - Select at boot the monitor type. - Select at boot the display's mode : NTSC = 60 Hz, PAL = 50 Hz. - Select at boot the screen resolution. - Select at boot the numbers of colors. - Select at boot the ST compatibility mode. - Select at boot the overscan mode on TV. - Replace the NVRAM reading by TOS values saved in the Flash and use the IKBD clock instead of the RTC. This feature is for fix NVM problems caused by a battery failure. NOTES : - Theses settings are writed inside the NVRAM with the 'OK' button - Because there are no blitter actually inside the FPGA emulation you can't see/use theses settings. @limage G:\tos060\doc\firebee\english\..\img\cpx7_acp.img 20 If the video display use the Radeon or extended ACP modes (screen above 0x01000000) you can : - Select at boot the screen resolution, if the prefered video mode is found on the monitor, the mode added to the list. - Select at boot the numbers of colors (256/65K/16M). - Select at boot the monitor layout on the Radeon board (MON.1,MON.2) : * DEFAULT (automatic mode) * CRT,NONE * CRT,CRT * CRT,TMDS * TMDS,CRT * TMDS,TMDS - Select using DMA for boost display (this feature is used only for the Radeon board, because the Flexbus has troubles sometimes with ACP video). - Replace the NVRAM reading by TOS values saved in the Flash and use the IKBD clock instead of the RTC. NOTE : The Radeon/ACP mode not overwrite the Videl mode, the mode is writed inside a flash parameter with the 'OK' button. @endnode @node "CT60TEMP.APP" @toc "Configuration" @{U}4.9 CT60TEMP.APP FIREBEE - FIRETOS@{u} This program is created by the CPX. For get a CPU average load, blank the screen, or get the temperature (with Eiffel) the CPX : - Under TOS create a desk-accessory CT60TEMP.ACC and ask to reboot. - Under MiNT create the program CT60TEMP.APP and start this program. - Under MagiC start a thread. Some is the solution used (thead, accessory or application), it's possible to use the multimedia keys features of the Eiffel PS/2 interface (http://eiffel3.atari.org), especially with the set number 2 PS/2. The @{B} POWER @{b} key start a stop after a shutdown procedure. If CT60TEMP.APP is used under MagiC or MiNT (for MagiC boot under TOS and copy CT60TEMP.ACC to CT60TEMP.APP), by using environment variables, it's possible to use others multimedia keys of the Eiffel PS/2 interface : - @{B} WWW HOME : @{b} Start the internet navigator with the environment variable BROWSER. - @{B} E-MAIL : @{b} Start the email program with the environment variable MAILER. - @{B} WWW SEARCH : @{b} Start the internet navigator with the environment variable BROWSER with the home page of Google. - @{B} MY COMPUTER : @{b} Start the hypertexte viewer with the environment variable HELPVIEWER with the documentation of the CT60. You must install the program E_TEMP.PRG inside the AUTO folder (the 'Eiff' cookie is used). @endnode @node "BubbleGEM" @toc "Configuration" @{U}4.10 BubbleGEM FIREBEE - FIRETOS@{u} Under a multitasking operating system (for example MagiC, MultiTOS, Geneva etc) BubbleGEM can be placed in the auto start folder where it will be automatically started as a GEM program on booting the system. Under single TOS BubbleGEM can be run as a desk accessory by renaming BUBBLE.APP to BUBBLE.ACC and copying it to the root directory of your boot partition, then rebooting. BubbleGEM-aware programs send a message and pass a character string to BubbleGEM if the user clicks with the right mouse button on an icon, button or window area. BubbleGEM then displays the character string, formatted in a cute speech bubble which remains displayed until the user moves the mouse pointer to another window area, or until the user clicks again to burst the bubble. Optionally bubbles can be displayed by clicking and holding down the right mouse button; in this case the bubble bursts as soon as the button is released again. While a bubble is open two keyboard shortcuts are active: : The content of the bubble is copied to the clipboard and the bubble remains open. : The content of the bubble is copied to the clipboard and the bubble is closed. The author of BubbleGEM is Thomas Much; his email address is: Thomas.Much@@stud.uni-karlsruhe.de @endnode @node "Cache" @toc "Main" @{U}5 Cache FIREBEE - FIRETOS@{u} 5.1 The Coldfire's V4e caches 5.2 GENERAL6.CPX 5.3 XCONTROL, ZCONTROL, COPS, and SDRAM in copyback 5.4 PARX.SYS modules and the copyback 5.5 TSR programs who crashes in the AUTO folder 5.6 Programs packed by Ice @endnode @node "The Coldfire's V4e caches" @toc "Cache" @{U}5.1 The Coldfire's V4e caches FIREBEE - FIRETOS@{u} There are two caches of 32KB inside the Coldfire V4e, data and instruction. The ST-RAM is in writethrough, at each time than the Coldfire write to the RAM, he write in the same time than the data cache. The TT-RAM is in copyback, the Coldfire write always inside his data cache, he write in the memory the old data of his cache for found some place for the new data. The Coldfire has also an instruction cache, witch the direct link with the data cache is only the memory. The result is than it's possible to obtain incoherency between the data cache and the instruction cache. The example is the excecution of a relocated program, without precaution and without system call this is a crash. @endnode @node "GENERAL6.CPX" @toc "Cache" @{U}5.2 GENERAL6.CPX FIREBEE - FIRETOS@{u} This CPX is a patched version of the Falcon GENERAL.CPX for the TOS 060. The cache on/off selection now uses XBIOS calls. @endnode @node "XCONTROL, ZCONTROL, COPS, and SDRAM in copyback" @toc "Cache" @{U}5.3 XCONTROL, ZCONTROL, COPS, and SDRAM in copyback FIREBEE - FIRETOS@{u} - COPS only flush caches after load the CPX and works fine. - ZCONTROL works under MiNT 1.16/Xaaes. - XCONTROL crashes. - The rebuilded XCONTROL.ACC fix this problem. @endnode @node "PARX.SYS modules and the copyback" @toc "Cache" @{U}5.4 PARX.SYS modules and the copyback FIREBEE - FIRETOS@{u} If a program who use PARX.SYS crashes at start, you can try to remove the caches with GENERAL6.CPX, load the program and set to on the caches after. For example PICCOLO works with this method. A global solution is to remove the caches during 5 seconds when a program is started under TOS with the Boot menu inside the configuration CPX, but this method penalize all programs. @endnode @node "TSR programs who crashes in the AUTO folder" @toc "Cache" @{U}5.5 TSR programs who crashes in the AUTO folder FIREBEE - FIRETOS@{u} Like CPX, the programs who not uses the Pexec function for load modules crashes with the SDRAM in copyback, so the best way is to load the program in ST-RAM (cache in writethrough). You can use FILEINFO.CPX for change the flags. For example you must remove TT-ram flags of METAXBS.PRG (Metados) because when the OVL modules are loaded there are no flush after relocation, it's not compatible with the SDRAM and the CPU cache in copyback. A global solution is to remove the caches during 5 seconds when a program is started under TOS with the Boot menu inside the configuration CPX, but this method penalize all programs. @endnode @node "Programs packed by Ice" @toc "Cache" @{U}5.6 Programs packed by Ice FIREBEE - FIRETOS@{u} The TOS test the programs packed by Ice, there are a patch for flush caches (inside the Pexec function). Without this patch, programs packed by Ice crashes with the copyback cache (SDRAM). This problem is not solved under MagiC or MiNT. @endnode @node "Compatibility" @toc "Main" @{U}6 Compatibility FIREBEE - FIRETOS@{u} 6.1 Crashes 6.1.1 Crashes with the Coldfire 6.1.2 Crashes with caches 6.2 Solutions @endnode @node "Crashes" @toc "Compatibility" @{U}6.1 Crashes FIREBEE - FIRETOS@{u} 6.1.1 Crashes with the Coldfire 6.1.2 Crashes with caches @endnode @node "Crashes with the Coldfire" @toc "Crashes" @{U}6.1.1 Crashes with the Coldfire FIREBEE - FIRETOS@{u} The TOS use the CF68KLIB for emulate the 68060, when the instruction or the adressing mode not exist there are no problem the CF68KLIB can do his job. But with some instructions there are no exception for the CF68KLIB, excepted with a complete virtual CPU (like 68KEMU) who slow down the program, the solution is to modify sources, if it's not possible the TOS has a solution (a patcher inside Pexec) because 95% of problems are Pure C programs : - A byte push/pop on stack has 2 bytes aligment on a 68K, not on the Coldfire. - There are no exception for 64 bits instructions mul/div. - Atari line A is MAC instruction on Coldfire (not specific to Pure C programs). The TOS test Pure C programs (during Pexec) and try to replace theses instructions by unused opcode (Line A) who are handled by te CF68KLIB : - Line A 0xA000-0xA00F already used for mac instructions replaced by opcode 0xA920-0xA92F. - move.b DX,-(SP) replaced by opcode 0xA910-0xA917. - move.b (SP)+,DX replaced by opcode 0xA918-0xA91F. - move.b (AX),-(SP) replaced by opcode 0xA930-0xA937. - move.b (SP)+,(AX) replaced by opcode 0xA938-0xA93F. - move.b d(AX),-(SP) replaced by opcode 0xA9B0-0xA9B7. - move.b (SP)+,d(AX) replaced by opcode 0xA9B8-0xA9BF. - move.b abs.l,-(SP) replaced by opcode 0xA9F1. - move.b d(PC),-(SP) replaced by opcode 0xA9F2. - move.b (SP)+,abs.l replaced by opcode 0xA9F9. - mulu/s.l ea,dh:dl replaced by opcode 0xABC0-0xABFF. - divu/s.l ea:dr:dq replaced by opcode 0xAFC0-0xAFFF. NOTE : This solution can't work with modules not loaded with Pexec or Pure C programs who havn't signature. @endnode @node "Crashes with caches" @toc "Crashes" @{U}6.1.2 Crashes with caches FIREBEE - FIRETOS@{u} You can try to remove the caches with GENERAL6.CPX, start the program who causes crashes, load the program and set to on the caches after. You can use FILEINFO.CPX for change the flags and force the program to use ST-RAM. For more informations, you can read the part 'Cache'. @endnode @node "Solutions" @toc "Compatibility" @{U}6.2 Solutions FIREBEE - FIRETOS@{u} @line 5 0 16 @line 20 0 16 @line 31 0 16 @line 66 0 16 @line 5 61 0 @{B}Software@{b} @{B}Problem@{b} @{B}Solution@{b} @line 5 61 0 HD Driver Crashes Use only HDDRUTIL for create partitions and use the internal driver (1GB TOS/DOS partitions). @line 5 61 0 NVDI 5 Not works Rename all NVDIDRV*.SYS to NVDIDRV*.SY (for example). Replace hex sequence 48E7E0E0A000 by 48E7E0E0A920 inside all OFF*.NOD files. @line 5 61 0 MagiC 6 Not works Use MiNT ;-) @line 5 61 0 Picollo Crashes Remove the caches during start D2D Crashes or remove the Fast-Ram flags Gemview Crashes or use the cache delay inside Gembench Crashes the configuration CPX under TOS. Swiftel Photo Crashes @line 5 61 0 Xcontrol Crashes Use the rebuilded version. @line 5 61 0 @line 1 0 24 @line 14 0 24 @line 28 0 24 @line 74 0 24 @line 1 73 0 @{B}Hard@{b} @{B}Problem@{b} @{B}Solution@{b} @line 1 73 0 DSP DSP errors Not implemented inside the FPGA. Disable DSP. @line 1 73 0 Sound No sound Replace the BAS by dBUG or rescue TOS. @line 1 73 0 Display Slow Decrease size, there are no hardware acceleration (blitter) with the Videl FPGA emulation, or use a Radeon on PCI bus. @line 1 73 0 Ethernet Not works Load the latest FPGA file with FLASH060. @line 1 73 0 USB Not works Fix the 3V3 voltage. @line 1 73 0 USB stick Not works Load the PCI bus for example with a Radeon board ;-) @line 1 73 0 Adapter Destroyed Use an ATX power supply or a DC adapter with a minimum of 1.5 A. @line 1 73 0 Floppy Writing not Use an SD-Card or wait an FPGA update. works @line 1 73 0 Monitor not works Try another monitor or wait an FPGA or/and TOS drivers update. @line 1 73 0 SCSI Not works Not implemented inside the FPGA. Use an IDE drive. @line 1 73 0 Radeon Not works Use a Radeon for PC. TOS use an X86 emulator for MAC for initialize the board. @line 1 73 0 Radeon 7000 DVI not work Clocks over 135 MHz have heat isues with DVI (RV100) on RV100. Now high modes are rejected (drivers V1.01). @line 1 73 0 @endnode @node "Annexes" @toc "Main" @{U}7 Annexes FIREBEE - FIRETOS@{u} 7.1 TOS Keyboard shortcuts 7.2 Load TOS with dBUG 7.3 DBUG task 7.4 Firebee MMU mapping 7.5 LWIP socket cookie 'SOCK' @endnode @node "TOS Keyboard shortcuts" @toc "Annexes" @{U}7.1 TOS Keyboard shortcuts FIREBEE - FIRETOS@{u} CTRL: If pressed before the Atari logo, jump the bios PCI. Boot without AUTO folder and ACC. ALT: If pressed before the Atari logo, jump the bios PCI. Remove cache if pressed before the SDRAM init. Boot without disk if pressed after. SHIFTL-SHIFTR: Boot without SDRAM if pressed before the Atari logo. SHIFTL: Displays infos about the SDRAM module. CTRL-ALT-UNDO: NVM and Flash Parameters init if pressed during the memory test until the Reset. You need to set the delay at boot to 60 seconds with the configuration CPX (oups can't work with the Firebee boot menu). @endnode @node "Load TOS with dBUG" @toc "Annexes" @{U}7.2 Load TOS with dBUG FIREBEE - FIRETOS@{u} For load firetos.hex (the TOS) with an host TFTP server with dBUG cmds : The 1st time, set TFTP vars (for example) : - set server 192.168.1.1 (host IP server) - set client 192.168.1.2 (FIREBEE IP) - set filename /home/firetos_firebee.hex - set filetype S-Record - set baud 19200 After just use : - dn -o 20000000 - fl w E0400000 400000 f0000 - go E0400000 (or go) Or if jou want preserve flash : - dn -o 20000000 - go 4000000 (or go) The TOS can start from anywere (-o is for add an offset and put the S-record file in SDRAM), the boot part copy and apply patches to the original TOS and uncompress the driver part to the target address (0x00E00000). If the source address is equal to the target address (0x00E00000), the boot has a jump to 0xE0400000. WARNING : The ethernet part of dBUG need a clock on the PHY, so if the FLASH above 0xE7000000 is destroyed ethernet can't work! NOTE : If the BAS is installed, it's possible to use ethernet without dBUG with some limitations (3 flash parameters used) : - You can change only the 3 lastest bytes of the MAC address with the CPX (stop/misc menu), begin is 00:CF:54 - You can change board IP and host IP with the CPX (stop/misc menu). - The netmask is automatic if the choice is CPX setting. - The default gateway is 0.0.0.0. - The default path/filename for TFTP is /home/firebee.hex. - If the board IP address is at 0.0.0.0 or 255.255.255.255 dBUG setting are used for board IP / gateway / netmask / path/filename. - If the host IP address is at 0.0.0.0 or 255.255.255.255 dBUG setting are used for host IP. - If the 3 last bytes of MAC address are 00:00:00 or FF:FF:FF dBUG setting are used. @endnode @node "DBUG task" @toc "Annexes" @{U}7.3 DBUG task FIREBEE - FIRETOS@{u} This DBUG task use the highspeed serial port, this is the list of CF68KLIB, LWIP and FreeRTOS commands : Command Description Syntax cb Clear Breakpoint cb db Define Breakpoint db <-c|t value> <-r addr..> <-i> <-m> dm Display Memory dm begin dis Disassemble dis dr Display Registers CF68KLIB dr go Execute, Insert Breakpt go lb List Breakpoints lb pm Patch Memory pm addr qt Query Tasks qt st Single Step (after db) st cat Concatenate File(s) cat file(s) chdir Change Directory chdir dir chmod Change Attibutes chmod filename attributes cp Copy File cp source dest ls List Directory ls mkdir Make Directory mkdir dir mv Rename File mv source dest rm Remove File rm file rmdir Remove Directory rmdir dir arp Address Resol. Protocol arp <-a> ifconfig Interface Configuration ifconfig <-a> ... ping Ping ping <-n echos> <-w delay> host netstat Network Stats netstat cache Cache cache on/off debug Debug CF68KLIB debug on/off inter Interrupts CF68KLIB inter reset System Reset reset trap Traps CF68KLIB trap on/off help Help help Excepted debug commands, it's also possible to use these commands with Telnet. You can set the baudrate of the highspeed serial port with the CPX. Usage example : > qt Name TID Prio Status Sys/User Stack # ------------------------------------------------------------ ROOT F1006C 0A Ready 3987/NU/4096 0 IDLE F141D0 00 Ready 4067/NU/4096 1 lwIP0 F18510 1E Blocked 3977/NU/4096 2 lwIP1 F1C750 1E Suspend 4003/NU/4096 3 TELNETd F208B4 0F Suspend 3998/NU/4096 4 FTPd F26EDC 0A Blocked 4000/NU/4096 5 TFTPd F2B040 0A Suspend 3944/NU/4096 6 HTTPd F2F1A4 0A Suspend 4024/NU/4096 7 TOS F33308 05 Ready 4073/NU/4096 8 DBUG F3746C 14 Ready 3004/NU/4096 9 HMES F3BCF0 0A Ready 4004/NU/4096 10 HT01 F3FF58 09 Suspend 3981/NU/4096 11 HT02 F440BC 09 Suspend 3981/NU/4096 12 HT03 F48220 09 Suspend 3981/NU/4096 13 HT04 F4C384 09 Suspend 3981/NU/4096 14 HT05 F504E8 09 Suspend 3981/NU/4096 15 USBT F54D08 06 Ready 4035/NU/4096 16 USBd F591D0 1F Suspend 3003/NU/4096 17 => qt command displays FreeRTOS tasks, the TOS himself is a task. Only the TOS use the CF68KLIB. > inter int NATIVE/RTOS CF68KLIB/TOS LEV PRI INTERRUPTS OFF OFF 1 0 Edge port 1 Int(65) OFF OFF 2 0 Edge port 2 Int(66) OFF OFF 3 0 Edge port 3 Int(67) OFF OFF 4 0 Edge port 4 Int(68) OFF OFF 5 0 Edge port 5 Int(69) OFF OFF 6 0 Edge port 6 Int(70) OFF OFF 7 0 Edge port 7 Int(71) OFF OFF 0 0 DSPI Int(89) OFF OFF 0 0 DSPI Int(90) OFF OFF 0 0 DSPI Int(91) OFF OFF 0 0 DSPI Int(92) OFF OFF 0 0 DSPI Int(93) OFF OFF 0 0 DSPI Int(94) OFF OFF 0 0 DSPI Int(95) OFF OFF 0 0 PSC3 Int(96) OFF OFF 0 0 PSC2 Int(97) OFF OFF 0 0 PSC1 Int(98) OFF ON 6 5 PSC0 Int(99) OFF OFF 0 0 Comm Timer Int(100) OFF OFF 0 0 SEC Int(101) OFF OFF 0 0 FEC1 Int(102) ON ON 5 1 FEC0 Int(103) OFF OFF 0 0 I2C Int(104) OFF OFF 0 0 PCIARB Int(105) OFF OFF 0 0 CBPCI Int(106) OFF OFF 0 0 XLBPCI Int(107) ON ON 7 7 XLBARB Int(111) ON ON 6 0 DMA Int(112) OFF OFF 0 0 CAN0 ERROR Int(113) OFF OFF 0 0 CAN0 BUSOFF Int(114) OFF OFF 0 0 CAN0 MBOR Int(115) OFF OFF 0 0 SLT1 Int(117) ON ON 6 7 SLT0 Int(118) OFF ON 6 4 CAN1 ERROR Int(119) OFF ON 6 4 CAN1 BUSOFF Int(120) OFF ON 6 4 CAN1 MBOR Int(121) OFF OFF 0 0 GPT3 Int(123) OFF OFF 0 0 GPT2 Int(124) OFF OFF 0 0 GPT1 Int(125) OFF OFF 0 0 GPT0 Int(126) => By default TOS interrupts not works without CF68KLIB (excepted the TOS himself), so some interrupts are disabled out of the TOS task. 'db' install a breakpoint, without address db install a breakpoint at the beginning of the program during Pexec (BDOS feature). @endnode @node "Firebee MMU mapping" @toc "Annexes" @{U}7.4 Firebee MMU mapping FIREBEE - FIRETOS@{u} 00000000 - 00CF0000 : STRAM 13 MB (cache in writethrough) 00D00000 - 00DFFFFF : Mirror FPGA 1MB VIDEO RAM (cache in writethrough) 00E00000 - 00EFFFFF : TOS404 1 MB (write protected) 00F00000 - 00F01FFF : Mirror FPGA - ATARI IDE (8K) 00F02000 - 00F0FFFF : invalid (bus error) 00F10000 - 00F9FFFF : USB descriptors memory, DMA from PCI (no cache) 00FA0000 - 00FBFFFF : invalid (bus error) 00FC0000 - 00FEFFFF : TOS404 192 KB (write protected) 00FF0000 - 00FF7FFF : invalid (bus error) 00FF8000 - 00FFFFFF : Mirror FPGA - ATARI I/O (32K - no cache) 01000000 - 1FFFFFFF : SDRAM 496 MB (cache in copyback) 20000000 - 3FFFFFFF : invalid (bus error) 40000000 - 7FFFFFFF : FPGA FBCS4 VIDEO RAM 80000000 - BFFFFFFF : PCI MEM (1024 MB) C0000000 - CFFFFFFF : invalid (bus error) D0000000 - DFFFFFFF : PCI I/O (256 MB) E0000000 - E07FFFFF : FBCS0 flash 8 MB (flash parameters at 0xE04F0000) E0800000 - EFFFFFFF : invalid (bus error) F0000000 - F7FFFFFF : FPGA FBCS2 ACP I/O F8000000 - FBFFFFFF : FPGA FBCS3 SRAM FC000000 - FEFFFFFF : invalid (bus error) FF000000 - FF01FFFF : MBAR coldfire (no cache) FF020000 - FF03FFFF : invalid (bus error) FF040000 - FF04FFFF : MMU_BASE coldfire (no cache) FF050000 - FFEFFFFF : invalid (bus error) FFF00000 - FFFFFFFF : FPGA FBCS1 - ATARI IDE - ATARI I/O (1MB - no cache) @endnode @node "LWIP socket cookie 'SOCK'" @toc "Annexes" @{U}7.5 LWIP socket cookie 'SOCK' FIREBEE - FIRETOS@{u} typedef struct socket_cookie { long version; /* 0x0101 for example */ long magic; /* 'SOCK' */ int (*socket)(int domain, int type, int protocol); int (*bind)(int s, struct sockaddr *name, socklen_t namelen); int (*listen)(int s, int backlog); int (*accept)(int s, struct sockaddr *addr, socklen_t *addrlen); int (*connect)(int s, struct sockaddr *name, socklen_t namelen); int (*write)(int s, void *dataptr, int size); int (*send)(int s, void *dataptr, int size, unsigned int flags); int (*sendto)(int s, void *dataptr, int size, unsigned int flags, struct sockaddr *to, socklen_t tolen); int (*read)(int s, void *mem, int len); int (*recv)(int s, void *mem, int len, unsigned int flags); int (*recvfrom)(int s, void *mem, int len, unsigned int flags, struct sockaddr *from, socklen_t *fromlen); int (*shutdown)(int s, int how); int (*close)(int s); int (*getsockname)(int s, struct sockaddr *name, socklen_t *namelen); int (*getpeername)(int s, struct sockaddr *name, socklen_t *namelen); int (*getsockopt)(int s, int level, int optname, void *optval, socklen_t *optlen); int (*setsockopt)(int s, int level, int optname, const void *optval, socklen_t optlen); int (*select)(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, struct timeval *timeout); int (*ioctlsocket)(int s, long cmd, void *argp); struct hostent *(*gethostbyname)(const char *name); int (*geterrno)(void); } SOCKET_COOKIE; @endnode @node "Contacts" @toc "Main" @{U}8 Contacts FIREBEE - FIRETOS@{u} Flash Tool, Configuration, and system : Didier MEQUIGNON aniplay@@wanadoo.fr @endnode