Files
FireBee_Setup/sources/firehyp/firebee.u

1084 lines
39 KiB
Plaintext

!tex \documentstyle[11pt]{article}
!stg @subject "Documentation"
!english
!title Documentation of the
!programimage ..\img\firebee.img
!program FIREBEE - FIRETOS
!version Version Boot 2.01, Drivers 1.01
!date (!today)
!author Didier MEQUIGNON
!email aniplay@wanadoo.fr
!use_auto_subtocs [info,html,stg,tvh,win]
!use_auto_subsubtocs [info,html,stg,tvh,win]
!no_effects [asc]
!begin_document
!maketitle
!tableofcontents
!node Presentation
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).
!image ..\img\schema.img
!begin_verbatim
!end_verbatim
Some new devices are connected to the Coldfire :
!begin_itemize
!item USB controller on his PCI bus.
!item AC97 audio codec on his AC-LINK interface.
!item EDID from monitor to his I2C interface.
!item Ethernet 10/100.
!end_itemize
!subnode Coldfire V4e
This coldfire like all the members of his familly is a microcontroller, there are :
!begin_itemize
!item Two Fast Ethernet Controllers (FEC 10/100), but only the first is used on
the Firebee.
!item Four Programmable Serial Controllers (PSC), the first port is the highspeed
serial port, the third port is for the AC97 audio codec.
!item A PCI controller connnected to an USB host controller, the PCI configured
at 33MHz on the Firebee.
!item An USB slave device not used on the Firebee.
!item A Flexbus connected to the FPGA and 8 MB of Flash memory (multiplexd bus,
same frequency than the PCI).
!item A Memory Controller connected to 512MB of SDRAM memory.
!item An I2C interface connected to the DVI-I port.
!item An DSPI interface connected to the SD-Card socket.
!item A multichannel DMA (used for example for the AC97).
!item 6 Timers.
!end_itemize
!image ..\img\v4e.img
!begin_verbatim
!end_verbatim
!subnode TOS 4.04
The TOS404 for FIREBEE use the CF68KLIB (68060 emulation) and use :
!begin_itemize
!item Timers and MFP (FPGA emulation).
!item Serial ports (MFP FPGA emulation and PSC0 from Coldfire).
!item Serial port for IKBD with Eiffel.
!item ACIA for original IKBD (FPGA emulation).
!item ACIA for MIDI (FPGA emulation).
!item Ethernet 10/100.
!item PCI: USB / Radeon (USB support mouse & keyboard, and mass storage) with
plug & play feature.
!item CompactFlash (FPGA emulation).
!item SD-Card (using DSPI).
!item Atari Falcon IDE / SCSI (FPGA emulation, SCSI not implemented).
!item Coldfire DMA.
!item MMU.
!item PSG (YAMAHA - FPGA emulation)
!item Atari Floppy (FPGA emulation, only reading works)
!item RTC (PIC & FPGA emulation)
!item Videl ACP extended modes with EDID probing (monitor detection)
!item AC97 Sound.
!end_itemize
The TOS has four parts :
!begin_itemize
!item The original TOS 4.04.
!item 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.
!item The CF68KLIB for a 68060 emulation.
!item The driver part (AC97, Radeon, DMA, USB, Video ACP, rewrited VDI, TCP/IP stack,
etc ...).
!end_itemize
!node TOS in Flash
!subnode Start TOS
The TOS located at 0xE0400000 need an FPGA init before start.
There are 3 solutions for start the TOS from reset (from 0xE0000000) :
!begin_itemize
!item dBUG who has Ethernet support (TOS easy to update without risk,
see 'Load TOS with dBUG')
!item BAS the original solution of Fredi (but sound not works under TOS).
!item The TOS himself with the rescue TOS who initialize the FPGA.
!end_itemize
NOTE: Only the 2 latest solutions can also start EMUTOS.
!subnode Drivers
The drivers part on the Firebee add features to TOS :
!begin_itemize
!item AC97 driver.
!item Videl ACP externded modes driver (256 /65K / 16M colors) with EDID
monitor detection.
!item USB driver.
!item SD-Card driver (thanks to Fredi).
!item DMA driver.
!item Flash driver.
!item Fast Ethernet Controller (FEC) driver.
!item Ethernet PHY driver (tranceiver).
!item VDI/fVDI replacement.
!item X86 emulator (for a graphic card initialization).
!item ATI Radeon driver.
!item XBIOS GSXB driver.
!item BDOS (GEMDOS replacement).
!item TCP/IP stack (LwIP/FreeRTOS) with TFTP, FTP, Telnet, HTTP servers
(you can see screen like a VNC server).
!item GlueSTiK and socket interfaces (from cookies 'STiK' and 'SOCK').
!item Real time OS (FreeRTOS) with DBUG task.
!item 68K/Coldfire disassembler.
!end_itemize
!subnode Technical (boot)
This is a TOS 4.04 patched by the boot (2.0+), in this order there are :
!begin_itemize
!item Board initialization (Coldfire and ACP registers).
!item The copy of the TOS in SDRAM after apply the patches.
!item The initialization of the MMU. All the ST-RAM is in
writethrough and the SDRAM declaration in copyback.
!item Start the CF68KLIB, TOS is a task for FreeRTOS (driver part).
!item The installation of the cookies '_CPU', '_FPU', '_CF_'.
!item The patchs for cache, MMU, address in 0x00FFxxxx, and the
instructions movep replaced.
!item The bombs inside exceptions displayed with texts in clear of a crash.
!item The XBIOS function 0xC60A to 0xC60D (temperature, parameters in
Flash, cache...), and the DSP (functions with handshake).
!item The needful patchs for the blitter, the system fonts and the Atari
logo copied at the top of the ST-RAM.
!item The replacement of the XBIOS Bconout routine (display texts).
!item Check and fix the modecode get from NVM.
!item Start the PCI BIOS and the drivers.
!item The display of the V4e's type (revision, mask and frequency).
!item The declaration of the SDRAM to the TOS.
!item The initialization of the SDRAM, and the MB/s during writing
displayed.
!item The fastram buffer created and his cookie '_FRB'.
!item The extended fastram buffer created and his cookie 'XFRB'.
!item The patch for the boot order of the drives IDE and SCSI (8 choices).
!item Extra boot features :
!begin_itemize
!item Add SCSIDRV and XHDI protocols.
!item Add identify device procedure for SCSI and IDE drives, the boot wait
if a removable drive is not ready.
!item Add IDE slave support.
!item Add CompactFlash support.
!item 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.
!item Add speed test for bootables devices.
!item Start internal hard disk driver if no bootable disk as an external
driver.
!end_itemize
!item The patch for the boot menu.
!item The displays redirection of the AUTO programs to a file boot.log.
!item The patch for the Pexec function for the copyback (cpush after the
relocation).
!item 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).
!item The AES patchs for change the Newdesk buffer of 4 KB to 32 KB.
!item Scan-codes used with the Eiffel card :
!begin_itemize
!item PAGE UP/DOWN.
!item PRINT SCREEN.
!item POWER (set 2 only, Eiffel 1.0.5).
!item VOLUME UP/DOWN (set 2 only, Eiffel 1.0.5).
!end_itemize
!end_itemize
!subnode Boot menu
There are two boot menu on the Firebee :
!begin_itemize
!item The original use the NVRAM OS setting, the TOS is started.
!item 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.
!end_itemize
!subsubnode Original boot menu (TOS started)
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)
!subsubnode Firebee boot menu (after board init)
Boot menu and rescue features context is the result of the switches.
SW6 and SW5 are inside the cookie '_SWI':
!begin_itemize
!item B7: (1) SW6 DOWN, (0) SW6 UP.
!item B6: (1) SW5 DOWN, (0) SW5 UP.
!item B0: (1) rescue TOS started from 0xE0000000 (replace BAS or dBUG).
!end_itemize
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 :
!begin_itemize
!item TOS404 (at 0xE0000000 - boot) => TOS rescue (default choice)
!item EMUTOS (at 0xE0600000)
!item TOS404 (at 0xE0400000 - normal) => TOS to test
!end_itemize
(!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 :
!begin_itemize
!item If BAS used for start the TOS, SW5 and SW6 must be up, else you start EMUTOS or nothing.
!item If dBUG used for start the TOS, SW5 must be up, else you must use the command 'go E0400000'.
!end_itemize
!node Flash Tool
!subnode Use Flash Tool
!image ..\img\flash1.img
!begin_verbatim
!end_verbatim
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:
!begin_itemize
!item FIRETOS.HEX: contains BOOT + TOS404 + Atari Diagnostics (must disappear).
!item BOOT_FIREBEE.HEX: contains the BOOT (must arrive).
!item DRIVERS_FIREBEE.HEX: contains the PCI drivers (GPL licence, not in this archive).
!item TOS404.BIN (not in the archive): just for put the TOS in flash, in the
case of FIRETOS.HEX isn't used.
!end_itemize
NOTE : A binary file (.BIN) has a target address fixed at 0xE0400000.
!node Configuration
!subnode Introduction
The Firebee's configuration is set with a CPX, used normally with XCONTROL,
ZCONTROL, or COPS.
This CPX allows to :
!begin_itemize
!item Configure the Non Volatile Memory.
!item Configure the boot in Flash Eprom.
!item Measure MIPS.
!item See the load of the system (MiNT or MagiC only).
!item See the Firebee temperature (need and Eiffel card inside the same box).
!item Blank the monitor after a delay.
!end_itemize
!image ..\img\cpx3.img
!begin_verbatim
!end_verbatim
There are five common buttons on this CPX :
!begin_itemize
!item Save : Button for save adjustments on the disk.
!item Load : Button for load adjustments saved on the disk.
!item OK : Button for validate the values changed into the non volatile
ram and the flash parameters.
!item Cancel : Button for not change values to the configuration.
!item i : Button for display informations (authors).
!end_itemize
For check get a CPU average load, blank the screen, or get the
temperature (with Eiffel) the CPX :
!begin_itemize
!item Under TOS create a desk-accessory CT60TEMP.ACC (sorry for the name ;-) )
and ask to reboot.
!item Under MiNT create the program CT60TEMP.APP and start this program.
!item Under MagiC start a thread.
!end_itemize
!subnode Average load
!image ..\img\cpx1.img
!begin_verbatim
!end_verbatim
At this page you can see for MiNT and MagiC :
!begin_itemize
!item The current value of CPU average load.
!item The level of CPU average load.
!item The curve of CPU average load during the last hour. Without MiNT 1.11
or more, this curve is very approximate.
!end_itemize
!subnode Temperature
!image ..\img\cpx2.img
!begin_verbatim
!end_verbatim
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).
!subnode Memory / uP
!image ..\img\cpx3.img
!begin_verbatim
!end_verbatim
At this page you can :
!begin_itemize
!item See the total capacity of the ST-Ram.
!item See the total capacity of the Fast-Ram.
!item See the number of free bytes for the ST-Ram.
!item See the number of free bytes for the Fast-Ram.
!item See the number of millions instructions by second worked out by the
microprocessor (BogoMips).
!item Select with/without FPU.
!subnode Boot
!image ..\img\cpx4.img
!begin_verbatim
!end_verbatim
At this page you can :
!begin_itemize
!item Select the boot order on the IDE and SCSI drives (8 choices).
!item Select at boot the operating system by default.
!item Select at boot the SCSI arbitration.
!item Select at boot the SCSI identificator (0 to 7).
!item Set the delay at boot in seconds (used for timeout with the boot menu).
!item Set the default speed of the highspeed serial port used also for debug.
!item Under TOS, remove the caches during 5 seconds when a program is
started or remove the copyback alert box.
!item Redirect displays of the AUTO folder's programs to a file boot.log.
!item Get a debug file video.log.
!item Swap the two IDE ports (CompactFlash and IDE).
!end_itemize
NOTES :
!begin_itemize
!item Theses settings are writed inside the NVRAM or flash parameters with
the 'OK' button.
!item 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).
!end_itemize
!subnode Stop/Misc
!image ..\img\cpx5.img
!begin_verbatim
!end_verbatim
At this page you can :
!begin_itemize
!item Set a delay for blank monitor (disabled if set to 0).
!item Set 3 last bytes of MAC address, begin is 00:CF:54.
!item Set board IP address.
!item Set host IP address (for TFTP).
!end_itemize
NOTES :
!begin_itemize
!item The delay is saved inside the CPX with the 'Save' button
(and not in NVRAM or flash parameters). It's CT60TEMP.ACC/APP features.
!item 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.
!item The default gateway address is 0.0.0.0.
!item The default path/filename for TFTP is /home/firebee.hex.
!end_itemize
!subnode Langage
!image ..\img\cpx6.img
!begin_verbatim
!end_verbatim
At this page you can :
!begin_itemize
!item Select at boot the language by default.
!item Select at boot the keyboard type.
!item Select at boot the date format.
!item Select at boot the time format 12 or 24 hours.
!item Select at boot the date separator.
!end_itemize
NOTE : Theses settings are writed inside the NVRAM with the 'OK' button.
!subnode Video
!image ..\img\cpx7.img
!begin_verbatim
!end_verbatim
With the default TOS404 (Videl/Blitter) modes you can :
!begin_itemize
!item Select at boot the monitor type.
!item Select at boot the display's mode : NTSC = 60 Hz, PAL = 50 Hz.
!item Select at boot the screen resolution.
!item Select at boot the numbers of colors.
!item Select at boot the ST compatibility mode.
!item Select at boot the overscan mode on TV.
!item 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.
!end_itemize
NOTES :
!begin_itemize
!item Theses settings are writed inside the NVRAM with the 'OK' button
!item Because there are no blitter actually inside the FPGA emulation
you can't see/use theses settings.
!end_itemize
!image ..\img\cpx7_acp.img
!begin_verbatim
!end_verbatim
If the video display use the Radeon or extended ACP modes (screen above
0x01000000) you can :
!begin_itemize
!item Select at boot the screen resolution, if the prefered video mode is
found on the monitor, the mode added to the list.
!item Select at boot the numbers of colors (256/65K/16M).
!item Select at boot the monitor layout on the Radeon board (MON.1,MON.2) :
!begin_itemize
!item DEFAULT (automatic mode)
!item CRT,NONE
!item CRT,CRT
!item CRT,TMDS
!item TMDS,CRT
!item TMDS,TMDS
!end_itemize
!item Select using DMA for boost display (this feature is used only for
the Radeon board, because the Flexbus has troubles sometimes with ACP video).
!item Replace the NVRAM reading by TOS values saved in the Flash and use the
IKBD clock instead of the RTC.
!end_itemize
NOTE : The Radeon/ACP mode not overwrite the Videl mode, the mode is
writed inside a flash parameter with the 'OK' button.
!subnode CT60TEMP.APP
This program is created by the CPX. For get a CPU average load, blank
the screen, or get the temperature (with Eiffel) the CPX :
!begin_itemize
!item Under TOS create a desk-accessory CT60TEMP.ACC and ask to reboot.
!item Under MiNT create the program CT60TEMP.APP and start this program.
!item Under MagiC start a thread.
!end_itemize
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 :
!begin_itemize
!item (!B) WWW HOME : (!b) Start the internet navigator with the
environment variable BROWSER.
!item (!B) E-MAIL : (!b) Start the email program with the environment
variable MAILER.
!item (!B) WWW SEARCH : (!b) Start the internet navigator with the
environment variable BROWSER with the home page of Google.
!item (!B) MY COMPUTER : (!b) Start the hypertexte viewer with the
environment variable HELPVIEWER with the documentation of the CT60.
!end_itemize
You must install the program E_TEMP.PRG inside the AUTO folder (the
'Eiff' cookie is used).
!subnode BubbleGEM
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:
!begin_verbatim
<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.
!end_verbatim
The author of BubbleGEM is Thomas Much; his email address is:
Thomas.Much@stud.uni-karlsruhe.de
!node Cache
!subnode The Coldfire's V4e caches
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.
!subnode GENERAL6.CPX
This CPX is a patched version of the Falcon GENERAL.CPX for the TOS
060. The cache on/off selection now uses XBIOS calls.
!subnode XCONTROL, ZCONTROL, COPS, and SDRAM in copyback
!begin_itemize
!item COPS only flush caches after load the CPX and works fine.
!item ZCONTROL works under MiNT 1.16/Xaaes.
!item XCONTROL crashes.
!item The rebuilded XCONTROL.ACC fix this problem.
!end_itemize
!subnode PARX.SYS modules and the copyback
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.
!subnode TSR programs who crashes in the AUTO folder
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.
!subnode Programs packed by Ice
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.
!node Compatibility
!subnode Crashes
!subsubnode Crashes with the Coldfire
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 :
!begin_itemize
!item A byte push/pop on stack has 2 bytes aligment on a 68K, not on the Coldfire.
!item There are no exception for 64 bits instructions mul/div.
!item Atari line A is MAC instruction on Coldfire (not specific to Pure C programs).
!end_itemize
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 :
!begin_itemize
!item Line A 0xA000-0xA00F already used for mac instructions replaced by opcode 0xA920-0xA92F.
!item move.b DX,-(SP) replaced by opcode 0xA910-0xA917.
!item move.b (SP)+,DX replaced by opcode 0xA918-0xA91F.
!item move.b (AX),-(SP) replaced by opcode 0xA930-0xA937.
!item move.b (SP)+,(AX) replaced by opcode 0xA938-0xA93F.
!item move.b d(AX),-(SP) replaced by opcode 0xA9B0-0xA9B7.
!item move.b (SP)+,d(AX) replaced by opcode 0xA9B8-0xA9BF.
!item move.b abs.l,-(SP) replaced by opcode 0xA9F1.
!item move.b d(PC),-(SP) replaced by opcode 0xA9F2.
!item move.b (SP)+,abs.l replaced by opcode 0xA9F9.
!item mulu/s.l ea,dh:dl replaced by opcode 0xABC0-0xABFF.
!item divu/s.l ea:dr:dq replaced by opcode 0xAFC0-0xAFFF.
!end_itemize
NOTE : This solution can't work with modules not loaded with Pexec or Pure C
programs who havn't signature.
!subsubnode Crashes with caches
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'.
!subnode Solutions
!begin_table [|l|l|l|] !hline
(!B)Software(!b) !! (!B)Problem(!b) !! (!B)Solution(!b)
!hline
HD Driver !! Crashes !! Use only HDDRUTIL for create
!! !! partitions and use the internal
!! !! driver (1GB TOS/DOS partitions).
!hline
NVDI 5 !! Not works !! Rename all NVDIDRV*.SYS to
!! !! NVDIDRV*.SY (for example).
!! !! Replace hex sequence 48E7E0E0A000
!! !! by 48E7E0E0A920 inside all
!! !! OFF*.NOD files.
!hline
MagiC 6 !! Not works !! Use MiNT ;-)
!hline
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 !!
!hline
Xcontrol !! Crashes !! Use the rebuilded version.
!hline
!end_table
!begin_table [|l|l|l|] !hline
(!B)Hard(!b) !! (!B)Problem(!b) !! (!B)Solution(!b)
!hline
DSP !! DSP errors !! Not implemented inside the FPGA.
!! !! Disable DSP.
!hline
Sound !! No sound !! Replace the BAS by dBUG or rescue TOS.
!hline
Display !! Slow !! Decrease size, there are no hardware
!! !! acceleration (blitter) with the Videl
!! !! FPGA emulation, or use a Radeon on PCI bus.
!hline
Ethernet !! Not works !! Load the latest FPGA file with FLASH060.
!hline
USB !! Not works !! Fix the 3V3 voltage.
!hline
USB stick !! Not works !! Load the PCI bus for example with a
!! !! Radeon board ;-)
!hline
Adapter !! Destroyed !! Use an ATX power supply or a DC adapter
!! !! with a minimum of 1.5 A.
!hline
Floppy !! Writing not !! Use an SD-Card or wait an FPGA update.
!! works !!
!hline
Monitor !! not works !! Try another monitor or wait an FPGA or/and
!! !! TOS drivers update.
!hline
SCSI !! Not works !! Not implemented inside the FPGA.
!! !! Use an IDE drive.
!hline
Radeon !! Not works !! Use a Radeon for PC. TOS use an X86 emulator
for MAC !! !! for initialize the board.
!hline
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).
!hline
!end_table
!node Annexes
!subnode TOS Keyboard shortcuts
!begin_verbatim
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).
!end_verbatim
!subnode Load TOS with dBUG
For load firetos.hex (the TOS) with an host TFTP server with dBUG cmds :
The 1st time, set TFTP vars (for example) :
!begin_itemize
!item set server 192.168.1.1 (host IP server)
!item set client 192.168.1.2 (FIREBEE IP)
!item set filename /home/firetos_firebee.hex
!item set filetype S-Record
!item set baud 19200
!end_itemize
After just use :
!begin_itemize
!item dn -o 20000000
!item fl w E0400000 400000 f0000
!item go E0400000 (or go)
!end_itemize
Or if jou want preserve flash :
!begin_itemize
!item dn -o 20000000
!item go 4000000 (or go)
!end_itemize
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) :
!begin_itemize
!item You can change only the 3 lastest bytes of the MAC address with
the CPX (stop/misc menu), begin is 00:CF:54
!item You can change board IP and host IP with the CPX (stop/misc menu).
!item The netmask is automatic if the choice is CPX setting.
!item The default gateway is 0.0.0.0.
!item The default path/filename for TFTP is /home/firebee.hex.
!item 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.
!item If the host IP address is at 0.0.0.0 or 255.255.255.255 dBUG
setting are used for host IP.
!item If the 3 last bytes of MAC address are 00:00:00 or FF:FF:FF dBUG
setting are used.
!end_itemize
!subnode DBUG task
This DBUG task use the highspeed serial port, this is the list of CF68KLIB,
LWIP and FreeRTOS commands :
!begin_verbatim
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>
!end_verbatim
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 :
!begin_verbatim
> 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.
!end_verbatim
'db' install a breakpoint, without address db install a breakpoint
at the beginning of the program during Pexec (BDOS feature).
!subnode Firebee MMU mapping
!begin_verbatim
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)
!end_verbatim
!subnode LWIP socket cookie 'SOCK'
!begin_verbatim
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;
!end_verbatim
!node Contacts
!begin_verbatim
Flash Tool, Configuration, and system :
Didier MEQUIGNON
aniplay@wanadoo.fr
!end_verbatim
!end_document