NOR, SPI, U-Boot, Kernal

Hi All, 

I have spent a few months trying to learn all about embedded systems. Good old google and endless mazes of blogs, links. In my quest to learn of course I have bricked about 4 devices (not an issue I bought 10 cheap IP cameras as test devices).

While I thought I was learning I got more confused and this if possible is where I would like some help structuring:

First of all, so I don't bore anyone after this line I would really like to learn, are there any books, videos or online courses I can do to learn. Don't want to waste everyone's time.

Some of the questions I have is:

What is done or is a SPI I know and often use UART to do basic things load into U-BOOT etc how is SPI different from UART? My "understanding" is that SPI stores\uses some of the instruction sets but Flash is where the actual bootloader is actually stored.

As you can see I am confused :) 

For basics - What does NOR, SPI, U-Boot do. U-boot I kinda get that its the "OS" loader. So you boot, U-Boot is loaded and then an address range is specified where the kernal for the Linux os sits to load.

If I am wrong please smack me over the head. Like I said I really want to (or some material to learn).

I have these devices that I bought to learn. Yes I have bricked four of them (basically if you connect via UART GRND, RX, TX) instead of a U-Boot prompt I get the garbage characters.

I know its a post all over the place but I would really like to learn about this so would appreciate the help.

More questions in this forum