I have just concluded a three year development using TI's Tiva ARM M4 chips, writing both bootloaders and applications.
I am using an RFduino to explore BLE.
I have searched previous postings and did not find a detailed memory map of the vector table and low memory in general.
I am not finding easily a detailed memory map. I am trying to find out how large the bootloader is. I wrote a simple program to dump memory. At somewhere immediately above 0x00000080, I hit what I think is a hardware fault for accessing non-existent memory. On the M4, this is just memory from 0x00000000 to the end of FLASH. There are no gaps.
On the Tiva M4, I would program the bootloader in at 0x00000000. Its vector table would be at 0x00000000. The I would program the application in at 0x00008000. Its vector table would be at 0x00008000. Program execution would start at 0x00000000. The bootloader would do its thing and decide to jump to 0x00008000. (Actually it finds the start of code at the vector base and jump to that address.) The first thing the application would do is to set the base of the vector table from 0x00000000 to 0x00008000.
I have two questions:
- Why would reading a four byte word at a time hit some type of fault just above 0x80?
- Can the vector table base be set at something other than 0x00000000?