Routine! My son has the same problem, but we recently started setting an alarm for him. At bedtime I ask him to pick out what he wants to wear (we revise again in the morning just in case the weather changes) and give him the exact steps of what he will have to do the next morning. IF he has dressed, brushed his teeth, combed his hair and put his lunch in his backpack then he gets to play before we leave the house. When he doesn't do these then he doesn't get to play. He learns cause and effect and the same time.
How does he sleep during the night? Does he get up in the middle of the night or get woken up early in the morning before rise time? It seems like he is getting enough sleep so I am wondering about the quality of sleep he gets. If he is stressed out about going to school in the morning, it can also affect his sleep.
Thinking of something fun for him to look forward to in the morning might also help. It might be nice to sit down with your son and talk about what he'd like to do in the morning before going to school--does he want to choose his own breakfast, pack his own snack, have 10 minutes of free play, and so forth. When I have something to look forward to in the morning, I'll wake up :) Good luck!