An efficient fault-tolerant scheduling approach with energy minimization for hard real-time embedded systems