A low power hardware/software partitioning approach for core-based embedded systems