Bootloader loader. This is a small bootloader that can be loaded into the i.MX internal RAM, initialize the DDR2, then start reading from the UART and copying into DDR2. It's C-code, but the stack isn't initialized, so it's not going to work right with function calls, and perhaps with locally defined variables. This can probably be worked out by diddling the stack a little at the top of main, or making a simple c_init function that's the entry point. To make it go: # make # ../arm-2008q1/bin/arm-none-eabi-readelf -a test | head -25 Look at the .text section. it will have a 'size' column. Take that and convert it to decimal. So, if size is 4e0, then use 1248 below # tail -c +32769 test | head -c 1248 > test.bin # This grabs just the .text section out of the ELF output file and copies it to test.bin Then in PEEDI (For the moment....), do this: baby> halt baby> memory load tftp://172.19.115.140/test.bin bin 0x78000000 baby> set pc 0x78000000 baby> go There's no reason this shouldn't work with the serial bootloader I already wrote. What Works: UART Read UART Write DDR2 initialization Serial Port reconfiguration What's TODO * Make simple protocol to copy image to DDR2: * Something like: int32: size int32: entry-point int32: crc char[]: bunch-of-data * Check CRC * Jump to entry-point