Implement most of DMAs and improve interrupt handling