Short: DSP 3210 drivers and tools Author: Thomas Winischhofer Uploader: thomas winischhofer net (Thomas Winischhofer) Type: driver/other Version: 4.15 Architecture: m68k-amigaos DSP 3210 drivers & tools This package contains drivers and several tools to use and operate the DSP 3210 on AA3000/AA3000+ motherboards and possibly DSP Zorro cards. ### If you have access to an ATL HDI 1000 ultrasound machine, please contact me if you are willing to do some testing. ################## Samples and Demos ************************************************ dsp3210devtest: --------------- A tool for comprehensively testing the DSP drivers (dsp3210.device and dsp3210.resource) and the hardware as regards CPU vs DSP memory access. The latter is especially important on the (A)A3000(+): It executes DSP programs that hammer host memory in all directions and of all kinds (ChipRAM and FastRAM). If this shows errors, there is a hardware problem at hand, most likely GAL/ATF timing issues. To make sure, the timing of your GALs/ATFs is correct, let this run for at least 5000 passes. It should exit with zero errors. This tool has two important limitations: 1) The FastRAM tests are performed with FastRAM of the highest priority. If you have an accelerator board with local RAM, it will usually use that - timing errors with motherboard or Zorro RAM might therefore not be detected. 2) What this tool is incapable to uncover are potential issues with the onboard SCSI controller in connection with the DSP. Please see docs/STATUS.doc for more information. examples/dsp3210mandel: ----------------------- A Mandelbrot application using the DSP via dsp3210.device and dsp3210.library. This is an adaption of Wrangler's "mandel_dsp", with all hardware hacks removed and replaced by driver functions, and an updated DSP code which is much faster than the original. The program comes in three versions that differ in how the DSP tells the CPU it's finished. Meant as demos for the different methods the drivers support and offer. Based on dsp3210run (used as DSP-handling skeleton), Mandel by Erik Trulsson, ARTABROT by George T Warner. examples/dsp3210run: -------------------- Runs a given DSP program. Is a sample and skeleton for new applications at the same time. It fully utilizes the drivers in this package. A suitable demo DSP program is DSP/testprogram. examples/dsp3210libtest and examples/dsp3210clibtest: ----------------------------------------------------- Show usage of dsp3210.library, by loading and relocating the DSP programs in examples/DSP. makeobjectfile: --------------- This utility creates an object file out of any binary, and the main purpose here is to create object files out of DSP binaries, ready to link to your own application with blink, slink or and other Amiga standard linker. dsp3210.library ************************************************** This library helps applications to use the DSP by handling binaries created by the d32 tools (eg d32as and d32cc). It currently supports - calculating the required memory for the relocated binary - relocating a DSP binary to a target memory address - loading and relocating a DSP binary in one single step (DSPLoadMod()) - resolving local and global symbols accross several DSP binaries - additional application-provided global symbols - searching for global symbols - converting a binary with little-endian file structures to big-endian Please see the code samples for more information, first and foremost dsp3210run. Source and developer files included. DSP 3210 Resource & Device *************************************** Low level drivers for the DSP. 1) dsp3210.resource The dsp3210.resource is the base layer. dsp3210.resource is an executable which is run from CLI at startup, for example from user-startup. It creates the dsp3210.resource. 2) dsp3210.device This is placed in devs: and is a middle layer between the dsp3210.resource and the user application. Please see the included documentation and examples for more information on how to use this. All files in this archive are written in 1987 or 2020/2021 by Thomas Winischhofer, except as noted. Newer versions of this package might be found at https://github.com/realA10001986/Amiga Changelog: 4.15: (=211212 on github) - dsp3210.resource (40.34)/dsp3210.device (40.34) - internal change for third party drivers - dsp3210.library (7.1) - minor bug fix 4.14: (=211111 on github) - dsp3210devtest: - "QUIET" command line switch. Mutes the program except for errors. - Read tests slightly changed 4.13: (=210904 on github) - dsp3210.resource (40.33)/dsp3210.device (40.33) - minor bug fix - code optimizations - docs clean-up 4.12: (=210829 on github) - dsp3210.resource (40.32)/dsp3210.device (40.32) - Add payload facility (send a value from DSP to CPU through interrupt) - dsp3210.library (7.0) - Get rid of global symbol table array, introduce proper data structure. - Add (untested) driver for Atlas ATL DSP3210 Zorro cards that came with the ATL HDI-1000 ultrasound machines - etc. 4.11: (=210823 on github) - dsp3210.resource (40.31)/dsp3210.device (40.31) - Made fit for hooking in third party DSP3210 drivers (including example) - minor bug-fixes and code optimizations - dsp3210.library (6.0) - Add FreeAllSymbolTables() function - etc. 4.10: (=210814 on github) - Fix last-minute typo in install script - dsp3210.resource (40.30)/dsp3210.device (40.30) - reduce memory footprint - dsp3210devtest: Add test for int6 4.09: (=210809 on github) - dsp3210.resource (40.29)/dsp3210.device (40.29) - Added cut-down ROMable modules (located in ROM/ directory; only tested with LoadModule, not tested as real ROM modules.) - Added installer script - etc. 4.08: (=210805 on github) - dsp3210.resource (40.28)/dsp3210.device (40.28) Some API changes to support DSP local ram at addresses >=$80000000 Add PostROMInit hook Minor fixes and code optimizations - dsp3210.library (5.0) Some API changes to support DSP local ram at addresses >=$80000000 - etc. 4.07: (=210731 on github) - dsp3210.resource (40.27)/dsp3210.device (40.27) Fix DSPDAllocMem (last-minute typo with deadly impact) - etc. 4.06: (=210728 on github) - dsp3210.device (40.26), dsp3210.resource (40.26) Added support for the mmu.library, drivers work now with MuMove4k and MuFastZero Fixed leak in DSPDFreeMem - dsp3210mandel Fix bug: DSP was unfairly advantaged (MaxIter not changed on Zoom) Optimized DSP code to again beat the 060 FPU after named bug was fixed Brushed and polished the application, it's a looker now - etc. 4.05: (=210722 on github) - dsp3210.device (40.25), dsp3210.resource (40.25) Fixed bug in device (message handling) Added SETSTARTADDR command etc. (see ChangeLog) 4.04: (=210715 on github) - dsp3210.device is now a hybrid of device and library - Added longwordcopy convenience DSP function, used in the same way as the triggerintx functions. - Device and resource are now multi-DSP capable (in theory) - dsp3210.library (4.0): Changed arguments to LoadMod()/LoadModChip()/UnloadMod() in order to support address translation and driver-private memory management 4.03 - skipped 4.02: (=210705 on github) - minor changes, no new functions - documentation cleanup and update 4.01: (=210702 on github) - dsp3210.resource, dsp3210.library: Added CompatMode, in light of the recently discovered issues with the onboard SCSI controller in connection with accelerator boards with local RAM. The library and resource use exclusively ChipRAM for DSP code if in Compat-Mode. This mode is enabled by setting the global environment variable DSPCOMPAT (ie "setenv DSPCOMPAT 1"). - Added docs/STATUS.doc with detailed information on hardware and software status. 4.00: (=210627 on github) - API cleanup (again) (hence the version jump) - Added DSP ID - Minor other changes - Reminder: Needs updated U124. 3.00: (=210620 on github) - Added PLD and JEDs for GALs needed on AA3000+ - Added dsp3210mandel (in various flavors) - Fixed triggering of CPU interrupts in drivers and all sample programs - New commands for dsp3210.device - New data structures for dsp3210.device - SwapEndian function for dsp3210.library - Added README to examples - Added lots of documentation 2.00: (=210609 on github) - massive changes and additions, see ChangeLog - add dsp3210run, a fully featured sample program to run DSP programs 1.03: (=210304 on github) - numerous changes, additions and fixes for dsp3210.library 1.02: (=210213 on github) - dsp3210.resource: disable interrupts while writing to $dd0080 if started with r4 or r10 parameters. 1.01: (=210210 on github) - dsp3210.resource: By default, write byte to DSP control register only once - Added read tests to dsp3210devtest - Moved dsp3210.resource to devs: (Please delete c:dsp3210.resource after installing) 1.00 - Initial release