direct memory access (dma)-working and implementation
TRANSCRIPT
- 1. Data Transfer Mechanisms In computer-based data acquisition applications, data incoming or outgoing through computer I/O devices must often be managed at high speeds or in large quantities. The three primary data transfer mechanisms: Polling Interrupts ( Programmed I/O) DMA
- 2. DMA Transfer
- 3. DMA Controller The PC motherboard has a DMA controller on the South Bridge that can master the I/O bus and initiate DMA to or from a peripheral. This is usually the case for legacy ISA cards. Can be viewed in /proc/dma on Linux machines
- 4. On Galileo
- 5. DMA Implementations Native DMA ISA Bus-master DMA PCI Bus-master DMA
- 6. Native DMA The only pieces of legacy hardware that use ISA DMA and are still fairly common are Super I/O devices on motherboards that often integrate a built-in floppy disk controller, an IrDA infrared controller when FIR (fast infrared) mode is selected, and a IEEE 1284 parallel port controller when ECP mode is selected.
- 7. Native DMA
- 8. ISA Bus-master DMA lshw command on terminal
- 9. PCI Bus-master DMA
- 10. PCI Bus-master DMA
- 11. PCI IDE Bus-mastering The PCI bus also allows you to set up compatible IDE/ATA hard disk drives to be bus masters. Under the correct conditions this can increase performance over the use of PIO modes, which are the default way that IDE/ATA hard disks transfer data to and from the system. When PCI bus mastering is used, IDE/ATA devices use DMA modes to transfer data instead of PIO.
- 12. PCI IDE Bus-mastering
- 13. PCI IDE Bus-mastering hdparm -i /dev/sda
- 14. Bitbake menuconfig
- 15. DMA Controller in Galileo
- 16. Quark SoC Block Diagram
- 17. Channels Present ls -l /sys/class/dma
- 18. Used and Unused Channels
- 19. Inserting our module
- 20. dmesg
- 21. Execution of a DMA-operation (single block transfer) 1)The CPU prepares the DMA-operation by the construction of a descriptor , containing all necessary information for the DMAC to independently perform the DMA-operation (off- load engine for data transfer). 2)It initializes the operation by writing a command to a register in the DMAC (2a) or to a special assigned memory area (command area), where the DMAC can poll for the command and/or the descriptor (2b). 3)Then the DMAC addresses the device data register 4) and reads the data into a temporary data register . 5)In another bus transfer cycle, it addresses the memory block and 6) writes the data from the temporary data register to the memory block .
- 22. dmesg after rmmod
- 23. Contd.
- 24. Issues faced on Ubuntu
- 25. Code Flow
- 26. External links and References LDD 3- DMA Essential Linux Device Drivers https://en.wikipedia.org/wiki/Direct_memory_access http://www.pcguide.com/ref/mbsys/buses/types/pciID http://www.pcguide.com/ref/hdd/if/ide/confControllers http://www.tweak3d.net/articles/howbusmaster/3.sht Intel Quark SoC Datasheet
- 27. External links and References Intel ICH7 Datasheet Intel ICH5 Datasheet http://stackoverflow.com/questions/28868932/using National Instruments Application Note 011-DMA Fundamentals on Various PC Platforms http://zeus.nyf.hu/~bajalinov/OS/07/dma.pdf
- 28. Thanks