CHIP : ATSAM4SD32C MDK Version : v5.15 Packs : Keil.SAM4_DFP.1.3.0 OS : Windows 8.1(x64),8GB RAM,Intel I5 5th Gen,Windows XP-SP3,2GB RAM 2.2Ghz DualCore intel processor.
Could not simulate any peripherals of ATSAM4SD32C. System viewer comes up but it does not allow me to change any value of any register or bit. All register values are always showing as zero and i cannot modify it. If i try to click the CheckBox of a bit then it immediately changes back to unchecked value.
No register could be accessed in code as the simulator throws warning like
"*** error 65: access violation at 0x400E0A00 : no 'write' permission"
and i am unable to check my code.
please let me know what could be the problem.
I reinstalled the keil arm mdk but with no success. I am using windows 8.1(x64) with all the updates till date. I checked the problem with another machine with windows xp. Also same problem.
Thanks in advance
Thanks for your kind answer.
Now I know that keil does not support the simulation of ATSAM4SD32C(and mostly any arm chip from atmel). But keil could have allowed us to execute the code without issuing warning and or halting the program. It should at least allow as to read and write to all the peripheral registers even though it does not simulate the functionality of the peripheral.Which would remove the warning and breaking of simulation. Instead of warning they could have given a simple MessageBox showing "keil does not simulate the peripherals of this chip" at the beginning of each simulation.
But when they do not support simulation why do they show the System Viewer under peripherals menu.
Anyway is there any workaround for this problem ?
Can we make changes to the device description file so that the register will exist there and it will allow our code to run without breaking every time we access any register.
I tried to add memory at those addresses with read & write permissions but no luck. I do not understand when i have added memory at those addresses then it must not issue warning but why does it still issues warning and halting.
Thank you
The System Viewer is a method of displaying/decoding the peripheral registers at a bit/byte/word level. It would "work" regardless of whether the device is being simulated or physically debugged. It's just translating memory values into a human readable form.
The simulator would need to accurately "emulate" the functional aspects of the hardware and actually do something, or react to settings.
Just allowing blind reads/writes to the peripheral space isn't going to help things, because half the time the code is likely to spin in loops looking for bit changes and events that are never going to happen.
If you just wanted to execute ARM (Thumb) code, you could remove all code from SystemInit() (ie just return, or have a null function), and other code which touches stuff outside the processor core. One should might be able to retarget output via SWV/ITM.