I'm jumping to an address in external Flash which is outside of my internal EPROM code area. In uV2, I've set up my target with this Off-chip Code Memory starting at address 0x4000 and with a size of 0xC000. When I attempt to make a jump to this address range I get the following error:
***error 65: access violation at C:0x4000 : no 'execute/read' permission
Disclaimer: I'm not speaking with any authority, since I've not ever had to set up off-chip memory this way. When you start the sim/debug, is any code present in that area? From what I'm gathering about your application, it wouldn't surprise me if there wasn't. It could be that for your testing purposes, you may have to "dummy-up" something to put (link in) up there as if your bootloader had programmed it, giving something to jump to. Just a thought. --Dan Henry
When you load a target program into the simulator, a memory map is defined using the information from the OMF file. The memory map that is defined includes which ranges of memory are executable, which are readable, and which are writable. This is usually a "FEATURE" that lets you know that you program has jumped off into the weeds. :-) Check the Memory Map settings inthe Debug menu to make sure that the address range you have trouble with is specified. Keil Support
It is common with the so-called Integrated Development Environments to be able to click a terse/cryptic message such as
***error 65: no 'execute/read' permission
When you load a target program into the simulator, a memory map is defined using the information from the OMF file. The memory map that is defined includes which ranges of memory are executable, which are readable, and which are writable. So this is just a feature of the simulator, and will work fine on the actual target board if indeed there is code memory at my jump location?
This feature is already there. Just click on the error message and hit F1. This works for all assembler, compiler, and linker errors/warnings and for other errors/warnings as well. Keil Support