Files
FireBee_Setup/sources/firehyp/firebee.stg

1514 lines
46 KiB
Plaintext
Raw Blame History

@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 :
<20> USB controller on his PCI bus.
<20> AC97 audio codec on his AC-LINK interface.
<20> EDID from monitor to his I2C interface.
<20> 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 :
<20> Two Fast Ethernet Controllers (FEC 10/100), but only the first
is used on the Firebee.
<20> Four Programmable Serial Controllers (PSC), the first port is
the highspeed serial port, the third port is for the AC97 audio
codec.
<20> A PCI controller connnected to an USB host controller, the PCI
configured at 33MHz on the Firebee.
<20> An USB slave device not used on the Firebee.
<20> A Flexbus connected to the FPGA and 8 MB of Flash memory
(multiplexd bus, same frequency than the PCI).
<20> A Memory Controller connected to 512MB of SDRAM memory.
<20> An I2C interface connected to the DVI-I port.
<20> An DSPI interface connected to the SD-Card socket.
<20> A multichannel DMA (used for example for the AC97).
<20> 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 :
<20> Timers and MFP (FPGA emulation).
<20> Serial ports (MFP FPGA emulation and PSC0 from Coldfire).
<20> Serial port for IKBD with Eiffel.
<20> ACIA for original IKBD (FPGA emulation).
<20> ACIA for MIDI (FPGA emulation).
<20> Ethernet 10/100.
<20> PCI: USB / Radeon (USB support mouse & keyboard, and mass
storage) with plug & play feature.
<20> CompactFlash (FPGA emulation).
<20> SD-Card (using DSPI).
<20> Atari Falcon IDE / SCSI (FPGA emulation, SCSI not implemented).
<20> Coldfire DMA.
<20> MMU.
<20> PSG (YAMAHA - FPGA emulation)
<20> Atari Floppy (FPGA emulation, only reading works)
<20> RTC (PIC & FPGA emulation)
<20> Videl ACP extended modes with EDID probing (monitor detection)
<20> AC97 Sound.
The TOS has four parts :
<20> The original TOS 4.04.
<20> 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.
<20> The CF68KLIB for a 68060 emulation.
<20> 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) :
<20> dBUG who has Ethernet support (TOS easy to update without risk,
see 'Load TOS with dBUG')
<20> BAS the original solution of Fredi (but sound not works under
TOS).
<20> 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 :
<20> AC97 driver.
<20> Videl ACP externded modes driver (256 /65K / 16M colors) with
EDID monitor detection.
<20> USB driver.
<20> SD-Card driver (thanks to Fredi).
<20> DMA driver.
<20> Flash driver.
<20> Fast Ethernet Controller (FEC) driver.
<20> Ethernet PHY driver (tranceiver).
<20> VDI/fVDI replacement.
<20> X86 emulator (for a graphic card initialization).
<20> ATI Radeon driver.
<20> XBIOS GSXB driver.
<20> BDOS (GEMDOS replacement).
<20> TCP/IP stack (LwIP/FreeRTOS) with TFTP, FTP, Telnet, HTTP
servers (you can see screen like a VNC server).
<20> GlueSTiK and socket interfaces (from cookies 'STiK' and 'SOCK').
<20> Real time OS (FreeRTOS) with DBUG task.
<20> 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 :
<20> Board initialization (Coldfire and ACP registers).
<20> The copy of the TOS in SDRAM after apply the patches.
<20> The initialization of the MMU. All the ST-RAM is in writethrough
and the SDRAM declaration in copyback.
<20> Start the CF68KLIB, TOS is a task for FreeRTOS (driver part).
<20> The installation of the cookies '_CPU', '_FPU', '_CF_'.
<20> The patchs for cache, MMU, address in 0x00FFxxxx, and the
instructions movep replaced.
<20> The bombs inside exceptions displayed with texts in clear of a
crash.
<20> The XBIOS function 0xC60A to 0xC60D (temperature, parameters in
Flash, cache...), and the DSP (functions with handshake).
<20> The needful patchs for the blitter, the system fonts and the
Atari logo copied at the top of the ST-RAM.
<20> The replacement of the XBIOS Bconout routine (display texts).
<20> Check and fix the modecode get from NVM.
<20> Start the PCI BIOS and the drivers.
<20> The display of the V4e's type (revision, mask and frequency).
<20> The declaration of the SDRAM to the TOS.
<20> The initialization of the SDRAM, and the MB/s during writing
displayed.
<20> The fastram buffer created and his cookie '_FRB'.
<20> The extended fastram buffer created and his cookie 'XFRB'.
<20> The patch for the boot order of the drives IDE and SCSI (8
choices).
<20> 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.
<20> The patch for the boot menu.
<20> The displays redirection of the AUTO programs to a file
boot.log.
<20> The patch for the Pexec function for the copyback (cpush after
the relocation).
<20> 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).
<20> The AES patchs for change the Newdesk buffer of 4 KB to 32 KB.
<20> 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 :
<20> The original use the NVRAM OS setting, the TOS is started.
<20> 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':
<20> B7: (1) SW6 DOWN, (0) SW6 UP.
<20> B6: (1) SW5 DOWN, (0) SW5 UP.
<20> 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 :
<20> TOS404 (at 0xE0000000 - boot) => TOS rescue (default choice)
<20> EMUTOS (at 0xE0600000)
<20> 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 :
<20> If BAS used for start the TOS, SW5 and SW6 must be up, else you
start EMUTOS or nothing.
<20> 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:
<20> FIRETOS.HEX: contains BOOT + TOS404 + Atari Diagnostics (must
disappear).
<20> BOOT_FIREBEE.HEX: contains the BOOT (must arrive).
<20> DRIVERS_FIREBEE.HEX: contains the PCI drivers (GPL licence, not
in this archive).
<20> 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 :
<20> Configure the Non Volatile Memory.
<20> Configure the boot in Flash Eprom.
<20> Measure MIPS.
<20> See the load of the system (MiNT or MagiC only).
<20> See the Firebee temperature (need and Eiffel card inside the
same box).
<20> Blank the monitor after a delay.
@limage G:\tos060\doc\firebee\english\..\img\cpx3.img 20
There are five common buttons on this CPX :
<20> Save : Button for save adjustments on the disk.
<20> Load : Button for load adjustments saved on the disk.
<20> OK : Button for validate the values changed into the non
volatile ram and the flash parameters.
<20> Cancel : Button for not change values to the configuration.
<20> i : Button for display informations (authors).
For check get a CPU average load, blank the screen, or get the
temperature (with Eiffel) the CPX :
<20> Under TOS create a desk-accessory CT60TEMP.ACC (sorry for the
name ;-) ) and ask to reboot.
<20> Under MiNT create the program CT60TEMP.APP and start this
program.
<20> 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 :
<20> The current value of CPU average load.
<20> The level of CPU average load.
<20> 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 :
<20> See the total capacity of the ST-Ram.
<20> See the total capacity of the Fast-Ram.
<20> See the number of free bytes for the ST-Ram.
<20> See the number of free bytes for the Fast-Ram.
<20> See the number of millions instructions by second worked out by
the microprocessor (BogoMips).
<20> 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:
<CTRL C> : The content of the bubble is copied to the clipboard and
the bubble remains open.
<CTRL X> : 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 <index>
db Define Breakpoint db <addr> <-c|t value> <-r addr..> <-i> <-m>
dm Display Memory dm begin <end>
dis Disassemble dis <addr>
dr Display Registers CF68KLIB dr
go Execute, Insert Breakpt go
lb List Breakpoints lb
pm Patch Memory pm addr <data>
qt Query Tasks qt
st Single Step (after db) st <count>
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 <dir>
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> <host>
ifconfig Interface Configuration ifconfig <-a> <interface> ...
ping Ping ping <-n echos> <-w delay> host
netstat Network Stats netstat
cache Cache cache on/off
debug Debug CF68KLIB debug on/off <count (0:infinite)>
inter Interrupts CF68KLIB inter <on/off/abort>
reset System Reset reset
trap Traps CF68KLIB trap on/off <count (0:infinite)>
help Help help <cmd>
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