I'm familiar with using microcontrollers, both with frameworks like Arduino and natively (PIC / AVR). I'm also familiar with the general architecture of embedded systems, in so much as I know you have a processor with discrete RAM and ROM/flash connected via various buses. However, I've never really built a project from the ground up using a microprocessor.
What should I know before moving on to microprocessor-based projects? For example, on a microcontroller, I'm used to just sending some code through my compiler and getting a binary that can be uploaded via ISP or similar - how does this work with a processor with discrete flash? And what about clock sources - do processors normally come with an internal clock like MCUs do? I'm sure there are plenty of "unknown unknowns" too - where should I look to get started?
I'm primarily interested in ARM and x86 platforms, but general advice would also be useful.