Today's embedded systems operate under increasingly dynamic conditions. First, computational workloads can be either variable by nature or adjustable. Moreover, as many devices are batterypowered, it is common to have runtime power management technique, which results in dynamic power budget. This paper presents a design methodology for multi-core systems, based on dataflow specification, that can deal with various contexts. We optimize the original dataflow considering various working conditions, then, autonomously adapt it to a pre-defined optimal form in response to context changes. Such context changes at runtime might cause non-negligible delay or power budget violation. In order to overcome them, an efficient mode switching method is proposed. We show the effectiveness of the proposed technique with a real-life case study, stereo-vision, and synthetic benchmarks.INDEX TERMS Context-awareness, dataflow adaptation, low-power electronics, mode switching, multicore processing.