Crossworks Issue or My Understanding
I still have not resolved the tool (Crossworks) issue in this link: https://rowley.zendesk.com/hc/en-us/community/posts/114094001691-Crossworks-Not-Updating-Memory-Display?page=1#community_comment_114093982452
I'm not sure if this issue is related, a different issue, or my lack of understanding something.
I am developing a BootLoader for a NXP Kinetis K64 micro. The Boolloader code currently takes up 45K of code so I have selected the 4K boundary (the K64 has a flash sector size of 4K) to be 0x10000 or 64K.
I want to do a simple test to see if that memory block is erased so I want to test the byte at address 0x1000 to see if its 0xff.
byte *p = (byte*)0x10000;
if(*p == 0xff)
goto BadCS;
I get a hardfault. Checking and stepping thru the assembler code, the hard fault occurs when the following instruction is executed:
ldrb r3, [r3]
Register r3 holds 0x1000 so This instruction says load r3 with the byte contained at location 0x1000
The cpu has 1 meg of flash memory so I'm well within the cpu memory range.
There is no memory protection in place.
When I ask the debugger to display *p ... is says "Memory read failure"
When I ask to do a memory dump of 0x10000 I get blanks.
When I ask to show 0x10010 -- I get data.
I looks like the tool has an issue with the 16 bytes starting at 0x10000
Any help or comments appreciated
Joe
Note: The data that resides at 0x1000 and higher is from the main application without the bootloader in place (app starts at 0x0000)


-
I would like to understand why this happens.
I use a JLink - and erased the complete chip and am now able to access the memory as expected.
I am assuming the issue come about from flashing and debugging the MAIN application and then developing the Bootloader leaving the Main in place and just over-riding it.
I would like to understand what possibly happened so I don't cause it when I CAN'T do a total erase.
Thanks.
Joe
Please sign in to leave a comment.
Comments
1 comment