Abstract
Modern microcontroller units (MCUs) support enhanced direct memory access (DMA) such as Linked DMA (LDMA) mechanisms that not only offload bulk I/O from the processor core but also support simple commands to minimize processor intervention between bulk transfers. However, straightforward offloading to dedicated channels results in full occupancy of the channel resources even if the actual I/O load is low. To address this problem, we propose an LDMA task scheduler that schedules groups of tasks to enable their shared access to the same set of channels. When applied to a real-life multi-sensor device, the proposed scheme reduces total channel occupancy from 100% down to 32.95% while incurring minimal processor overhead of 0.1%, thereby enabling offloading of twice as many I/O tasks as the fixed channel allocation scheme.