OSDev Series Chapter 21

News discussions

Moderator:Moderators

Post Reply
User avatar
Mike
Site Admin
Posts:465
Joined:Sat Oct 20, 2007 7:58 pm
Contact:
OSDev Series Chapter 21

Post by Mike » Sat Oct 10, 2009 8:28 pm

Hello everyone,

The pre-release of chapter 21 of our OS development series has been released. It can be found here at http://www.brokenthorn.com/Resources/OSDev21.html Sorry, no demo yet. Demo is finished, however we plan on updating the chapter and demo a little more. It should be released tomorrow.

It covers:

*DMA concepts
*DMA hardware
*DMA Ports, Registers, Commands
*DMA programming topics

Please let us know if there are any comments or suggestions.
Lead Programmer for BrokenThorn Entertainment, Co.
Website: http://www.brokenthorn.com
Email: webmaster@brokenthorn.com

Insightsoft
Posts:63
Joined:Wed Jul 22, 2009 6:44 am

Re: OSDev Series Chapter 21

Post by Insightsoft » Sun Oct 11, 2009 9:00 pm

Thanks. As you know, I'm checking your website, precisely, every single day!!! (and this is, absolutely, a huge achievement)

One question: Your example codes are incremental projects?
_____________
Think it, build it, bit by bit...

User avatar
Mike
Site Admin
Posts:465
Joined:Sat Oct 20, 2007 7:58 pm
Contact:

Re: OSDev Series Chapter 21

Post by Mike » Mon Oct 12, 2009 6:46 am

Hello,

I am glad to hear that you like the site :D The series chapters all build off of the previous demos, yes.
Lead Programmer for BrokenThorn Entertainment, Co.
Website: http://www.brokenthorn.com
Email: webmaster@brokenthorn.com

chibicitiberiu
Posts:22
Joined:Sat Jul 17, 2010 7:55 am

Re: OSDev Series Chapter 21

Post by chibicitiberiu » Sat Aug 20, 2011 10:16 am

I noticed some errors in this chapter:

1. According to http://wiki.osdev.org/DMA, the mask channel function is bugged.
Single Channel Mask Registers 0x0A and 0xD4 (Write):
Bit2: ON/OFF
Bit0-1: Channel
In the tutorial, you were in fact using the bit mask for the MultiChannel Mask Register (0x0F). The unmask function is however correct.

2. The dma_unmask_all function is bugged... address 0x0E corresponds to DMA0, not DMA1.

3. There might be a small performance issue in the dma_set_address and dma_set_count functions, because of writing to the same port consecutively. You should outport something to address 0x80 (usually used as an IO delay port).

Post Reply