Hi I searched the whole knowledge base discussion forums and the whole internet a thousand of time but did not find any solution for this problem. I am writing a code for at91sam7x256. As you flash area of memory in this chip starts from 0x100000. So all machine codes after compilation and program process will store there. Now whenever I start to debug my project, The debugger goes to address 0x000000 instead of address 0x100000. There aren't any part of my code there at address 0x000000 and there is no execute/read allowed area of memory. So I will see the famous 65 error that tells me no exec/read permission. I know how to map memory and this is not what I want. I just want to know how to tell the debugger that IT MUST START FROM 0X100000. Thanks for your attention guys.
you searched the internet "a thousand times". aha. have you, in your extensive search, bothered to read your chips user manual? have you considered that the chip always starts user code at address 0x0? what stops you from writing a bootloader that jumps where you need?
Maybe the manual may help you: http://www.keil.com/support/man/docs/uv3/uv3_cm_go.htm
I just started with a code from keil example blinky. I then downloaded the code into my chip and I t runs very well. So the boot loader or anything you name it must be somewhere like startup.s file. The chip powers on and resets and then it will go to 0x100000 of memory. but the debugger not:( So any other ideas?
You can have the debugger get to any position using an initialization file. This is how Keil have released RAM targets for a number of processors - the code gets downloaded into RAM, and the PC is then set to start running the application in RAM.
At linker tab write down:
--entry 0x100000