05-23-2012 03:12 PM
I am having problems getting a 'hello world' bootloader to work. I don't think the reset vector is getting initialized in BRAM correctly.
64k of BRAM @ 0xFFFF0000
I am using the default linker, and the linker is putting the boot & reset vectors in BRAM
.boot0 @ 0xFFFFFFEC
.boot @ 0xFFFFFFFC
I made the following specifications for the linker
Program Start Address: 0xFFFF1000
Stack Size: 0x1000
Heap Size: 0x1000
bootloader project is marked to Initialize BRAMs
I have been doing the following steps.
1. Generate Bitstream
2. Build libraries and bsp
3. Build bootloader application
4. Update bitstream (Device Configuration -> Update Bitstream)
5. Download bitstream
When downloading the bitstream the hardware controlled leds go off, and once the download completes they start blinking so I think the hardware is loaded correctly.
If I load the bootloader.elf through the jtag debugger it runs like i expect it to. But when I use the debugger and inspect the memory at 0xFFFFFFF0 (the reset vector) does not look correct. If everything was working correctly I would expect the reset vector to be 0xFFFF1000, the program start address I specified on the 'Compiler Options' screen.
So what am I doing wrong?