  Commercial-Off-The-Shelf heterogeneous platforms provide immense
computational power, but are difficult to program and to correctly use when
real-time requirements come into play: A sound configuration of the operating
system scheduler is needed, and a suitable mapping of tasks to computing units
must be determined. Flawed designs may lead a sub-optimal system configurations
and thus to wasted resources, or even to deadline misses and failures. We
propose YASMIN, a middleware to schedule end-user applications with real-time
requirements in user space and on behalf of the operating system. YASMIN
provides an easy-to-use programming interface and portability. It treats
heterogeneity on COTS heterogeneous embedded platforms as a first-class
citizen: It supports multiple functionally equivalent task implementations with
distinct extra-functional behaviour. This enables the system designer to
quickly explore different scheduling policies and task-to-core mappings, and
thus, to improve overall system performance. In this paper, we present the
design and implementation of YASMIN and provide an analysis of the scheduling
overhead on an Odroid-XU4 platform. Last but not least, we demonstrate the
merits of YASMIN on an industrial use-case involving a Search & Rescue drone.
