First figure out why you want the students to learn the subject and what you want them to know, and the method will result more or less by common sense. -Richard Feynman paragraph after this quote: "Embedded software is in almost every electronic device in use today. There is software hidden away inside our watches, VCRs, cellular phones, and even a few toasters. The military uses embedded software to guide missiles and detect enemy aircraft. And communication satellites, deep-space probes, and many medical instruments would've been nearly impossible to create without it." wow: "With respect to gender, I have purposefully alternated my use of the terms "he" and "she" throughout the book. "He" is used in the odd-numbered chapters and "she" in all of the even-numbered ones." The board I've chosen is called the Target188EB and is manufactured and sold by Arcom Control Systems. example: void main(void) { while (1) { toggleLed(LED_GREEN); /* Change the state of the LED. */ delay(500); /* Pause for 500 milliseconds. */ } } /* main() */ void toggleLed(unsigned char ledMask) { asm { mov dx, P2LTCH /* Load the address of the register. */ in al, dx /* Read the contents of the register. */ mov ah, ledMask /* Move the ledMask into a register. */ xor al, ah /* Toggle the requested bits. */ out dx, al /* Write the new register contents. */ }; } /* toggleLed() */ void delay(unsigned int nMilliseconds) { #define CYCLES_PER_MS 260 /* Number of decrement-and-test cycles. */ unsigned long nCycles = nMilliseconds * CYCLES_PER_MS; while (nCycles--); } /* delay() */ infinite loops:"If the software stops running, the hardware is rendered useless. So the functional parts of an embedded program are almost always surrounded by an infinite loop that ensures that they will run forever." linking imports library objects into code? "I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs." -Maurice Wilkes, Head of the Computer Laboratory of the University of Cambridge, 1949 good advice: " Before picking up the board, you should be able to answer two basic questions about it: What is the overall purpose of the board? How does data flow through it?" visualizing data flow is key to understanding hardware In both C and C++, the value of a pointer is an address. So when we say that we have a pointer to some data, we really mean that we have the address at which the data is stored. If you were to look at the contents of an unprogrammed PROM, you would see that the data is made up entirely of 1's. The process of writing your data to the PROM involves a special piece of equipment called a device programmer. The device programmer writes data to the device one word at a time, by applying an electrical charge to the input pins of the chip. Once a PROM has been programmed in this way, its contents can never be changed. If the code or data stored in the PROM must be changed, the current device must be discarded. scheduling algorithms