- write some code
- compile-and-link it on the OS running on the board
- run it!
Where before you would need a toolchain with a cross compiler, these embedded devices are now mature (and powerful) enough to support running their own toolchain directly. You can also do fun things like rebuilding the board's kernel directly on the board!
Another cool development flow which has also gotten popular over the last 5 years or so: building code for embedded devices within a virtual machine (VM). This flow follows the "cross compiler" model, in that you use a toolchain running on a development platform of different hardware and/or software than your target, embedded device. But the twist is that the toolchain is installed in its own OS instance inside a virtual machine. This is very nice because you can use whatever OS you normally like to use (Linux, Mac OS, Windows) as your "host" OS, and then create a "guest" VM with whatever OS and toolchain you need without affecting the "host" OS. And there are many available-at-no-cost Virtual Machine programs available, too (I personally use VMPlayer under Windows most of the time). Many developers used to install two-or-more OSes on their development system and dual/multi-boot between them in order to satisfy the need for having a specific toolchain running in a specific OS for doing embedded development, but the use of virtual machines removes the need for having to reboot: multiple OSes can run simultaneously, making it very easy on a developer to get things done (I can tell you from personal experience that having to stop my development so that I can reboot my laptop just so I can check my Outlook calendar for an upcoming meeting notice is very disruptive). Also, this development flow isn't just awesome for embedded development, it's great when you need to compile code for a different OS that runs on similar hardware. For example, I can install a 64-bit FreeBSD VM image on my x86 64-bit Windows 7 laptop, write code and compile it there in the VM, copy the generated executables to a x86 system that is running 64-bit FreeBSD as its OS, and it works great!
Seriously, this is cool stuff...