ARM University course
DMA engine implementation with support for unaligned addresses and arbitrary number of bytes to transfer. Developed for the DRAC project.