Parametric and structural self-adaptation of embedded systems using evolvable hardware