Login
Username:

Password:

Remember me



Lost Password?

Register now!

Sections

Who's Online
105 user(s) are online (94 user(s) are browsing Forums)

Members: 1
Guests: 104

skynet, more...

Support us!

Headlines

 
  Register To Post  

When does DMA not DMA?
Quite a regular
Quite a regular


See User information
No, it's not the first line of a very bad joke.

I have finally made my TV card mostly working again, BUT I can't see anything.... it's just not writing to memory.

It thinks it's writing to memory, but it's not. This is what I'm doing (from memory, there will be inaccuracies):

for ( tLine=tLine height tLine++ )
   
mFrameBufferLinetLine ] = IExec->AllocMemtWidth 4MEMF_PUBLIC MEMF_HWALIGN );

for ( 
tLine tLine height tLine++ )
{
   
IExec->StartDMA mFrameBufferLinetLine ], tWidth );
  
GetDMAListblah blah
}


This all succeeds, no problemo. DMA 'starts' up ok on each line otherwise it yells loudly.

Then I program the Connexant chip:

DWORD *tPointer programBase;

*
tPointer++ = SwitchEndianOPCODE_WRITE 0x0300 );  // This writes 0x300 bytes....
*tPointer++ = SwitchEndianmFrameBufferLinecurrentLine ] ); // To this address.


That's more or less it, anyway.

This used to work.
It doesn't now!

I can check the Cx2388x chip's RISC Program Counter, and it's going properly.
I can even check where it thinks it's DMAing to, and it's the correct value (about 0x6d69e000 or something). It's always in one of the mFrameBufferLine regions.

However, my data is never being changed. It's DMAing to it, but the target address never changes from 0xDEDEDEDE (my default value).

Remember I'm using the latest update, but the latest SDK also, which of course is 50.22 so doesn't have any AllocVecTags() or anything.

Any help much appreciated, it's very frustrating when you can see things working but there's no evidence of it!

Thanks!

--
Ian Gledhill
ian.gledhill@btinternit.com (except it should be internEt of course...!)
Check out my company's shop: http://www.mutant-caterpillar.co.uk/shop/ - specialising in Sinclair Spectrums but will be adding Amigas!
Go to top
Re: When does DMA not DMA?
Just popping in
Just popping in


See User information
@Spirantho

Unfortunately I cannot help you in this DMA problem, but if you are there to get some data, why don't you try to put all these things into a dvplayer plugin? Here is a nice SDK: http://dvplayer.amigarevolution.com/d ... DVPlayer-IOPlugin-SDK.lha

You can spare a lot of time.

A1-XE/G4@933+Radeon7500/64MB, A1200BPPC+BVision
AmigaOS4 on both of course.
Go to top
Re: When does DMA not DMA?
Quite a regular
Quite a regular


See User information
@Chip

That is a possibility, yes, but only for the MPEG stream I think. I think DVPlayer needs a stream of data rather than a raw bitmap which is why the TV card is offering.
The DVB part of the card does output a valid MPEG stream though I think so I may well do that. Of course I'll need to buy DvPlayer for that though!

--
Ian Gledhill
ian.gledhill@btinternit.com (except it should be internEt of course...!)
Check out my company's shop: http://www.mutant-caterpillar.co.uk/shop/ - specialising in Sinclair Spectrums but will be adding Amigas!
Go to top
Re: When does DMA not DMA?
Just popping in
Just popping in


See User information
@Spirantho

No, you don't have to buy, because the OEM version in OS4 is able to play MPEG1/2 streams. The limitation is the missing AVI support. You should be able to use it without registration.
I'll check for bitmap data possibility. If it's not there I'll ask Cobra to implement it.

A1-XE/G4@933+Radeon7500/64MB, A1200BPPC+BVision
AmigaOS4 on both of course.
Go to top
Re: When does DMA not DMA?
Home away from home
Home away from home


See User information
@Spirantho

Quote:

Spirantho wrote:
This all succeeds, no problemo. DMA 'starts' up ok on each line otherwise it yells loudly.

Then I program the Connexant chip:

DWORD *tPointer programBase;

*
tPointer++ = SwitchEndianOPCODE_WRITE 0x0300 );  // This writes 0x300 bytes....
*tPointer++ = SwitchEndianmFrameBufferLinecurrentLine ] ); // To this address.


That's more or less it, anyway.

This used to work.
It doesn't now!

Don't you have to have a SYNC instruction first? Does the Cx2388x have some additional registers over the BT878/879 that need correct initialization first?

Quote:

However, my data is never being changed. It's DMAing to it, but the target address never changes from 0xDEDEDEDE (my default value).

Is this target address in a register on the card? Or elsewhere. It's a little confusing that you say that it think's that it's writing to the right place when the target address never gets updated.

I hope that you can get this working. I also hope that your code will still be able to drive the BT878/879, because that's what my TV card is.

Hans

Go to top
Re: When does DMA not DMA?
Just popping in
Just popping in


See User information
Do they still air analog tv anywhere? Well the tvcards also have composite input so you could use them to connect other stuff to.

EDIT: just remembered that cable tv is often analogue


Edited by fryguy on 2007/8/17 15:50:08
Go to top
Re: When does DMA not DMA?
Quite a regular
Quite a regular


See User information
I can answer my own question!

Q: When does DMA not DMA?
A: When you're DMAing to the virtual address instead of the physical address!

I was using the same value as I was passing into StartDMA, rather than the DMAStruct block which was passed out of it!

I now have in RGB24 mode a C64 screen (my test machine, a C64C!).
In Overlay mode, I've also got part of a C64! But only in the wrong places. The colours are right though!

At last... progress....

Oh, @Hans:

That was a microsnippet of code. The rest of it wasn't important!

And as for the Bt8x8, I've not forgotten it, but the Cx23882 seems much more reliable and less prone to oddities by far; plus the Bt8x8 crashes AmigaOnes solid when they drop the signal if you enable interrupts (mind you, I can't get the Cx23882 to trigger an interrupt at all!). My main target is now the Cx2388x chipset as it's the current one, but I'll try and keep the Bt8x8 working.

--
Ian Gledhill
ian.gledhill@btinternit.com (except it should be internEt of course...!)
Check out my company's shop: http://www.mutant-caterpillar.co.uk/shop/ - specialising in Sinclair Spectrums but will be adding Amigas!
Go to top
Re: When does DMA not DMA?
Home away from home
Home away from home


See User information
@Spirantho

That's good news. The interrupt thing is strange though.

Hans

Go to top

  Register To Post

 




Currently Active Users Viewing This Thread: 1 ( 0 members and 1 Anonymous Users )




Powered by XOOPS 2.0 © 2001-2024 The XOOPS Project