DMA on TF Card (AGAIN) - Why it will never work
Posted: 23 Aug 2019 12:34
I've seen people demanding I made Amiga 24 DMA work for them with TF cards. This is never going to work.
Some people seem to think this is some last step thats easy to do. And that because they paid someone else money for it I should magically make it work. It cant ever work. Here is why..
DMA works by the CPU giving up the bus and letting another device talk to Memory the same way as a CPU might. It places the memory address on the bus and starts to transfer data directly. But here's the catch. The TF cards are 32 bit address bus cards and Amiga's are 24 bit. The top 8 bits of the address bus are not available on the Amiga so therefore the poor DMA controller cannot actually address my RAM over the bus.
Also my RAM is 32 bits wide and the Amiga's the TF5xx series work on are all 16 bits wide. So its never going to work... ever. No amount of tweaks will ever get this to work. Its baked into the design.
The really poor cards try anyway. The ones with really good drivers spot this and copy data with the CPU rather than use DMA.
Its like trying to dial a phone number with a 9s in it when you only have a 7 digit keypad.
Some people have asked about why the ZIII ram is used in preference to ZII ram which can be DMA'd too. I dont know the answer to this. Its nothing in the Autoconfig settings that i'm aware of. There is no autoconfig way to say "Dont DMA to this device". Its all drivers and I cannot fix 3rd party drivers for everyone.
Also nothing is 10 mins in hardware. Its not like software. You dont compile it and try it.. It takes hours to get the hardware setup in the rig and it takes hours to put it back to the card that i want to be looking at. Context switching takes a whole evening. I spent 18 months on the TF534... another 10 mins is going to achieve nothing.
Some people seem to think this is some last step thats easy to do. And that because they paid someone else money for it I should magically make it work. It cant ever work. Here is why..
DMA works by the CPU giving up the bus and letting another device talk to Memory the same way as a CPU might. It places the memory address on the bus and starts to transfer data directly. But here's the catch. The TF cards are 32 bit address bus cards and Amiga's are 24 bit. The top 8 bits of the address bus are not available on the Amiga so therefore the poor DMA controller cannot actually address my RAM over the bus.
Also my RAM is 32 bits wide and the Amiga's the TF5xx series work on are all 16 bits wide. So its never going to work... ever. No amount of tweaks will ever get this to work. Its baked into the design.
The really poor cards try anyway. The ones with really good drivers spot this and copy data with the CPU rather than use DMA.
Its like trying to dial a phone number with a 9s in it when you only have a 7 digit keypad.
Some people have asked about why the ZIII ram is used in preference to ZII ram which can be DMA'd too. I dont know the answer to this. Its nothing in the Autoconfig settings that i'm aware of. There is no autoconfig way to say "Dont DMA to this device". Its all drivers and I cannot fix 3rd party drivers for everyone.
Also nothing is 10 mins in hardware. Its not like software. You dont compile it and try it.. It takes hours to get the hardware setup in the rig and it takes hours to put it back to the card that i want to be looking at. Context switching takes a whole evening. I spent 18 months on the TF534... another 10 mins is going to achieve nothing.