I am using an STM32F407VGT board with an STLINK V2 programmer in keil IDE. I have downloaded to the board a very simple code:
#include "stm32f407xx.h"
#include <stdint.h>
int main(void)
{
RCC_TypeDef *pRCC;
GPIO_TypeDef *pGPIO;
pRCC = RCC;
pGPIO = GPIOA;
pRCC->APB2ENR |= (1 << 0);
pGPIO->PUPDR = 0x11;
return 0;
}
The problem is that when I try to enter to Debug Session, I cant use breakpoints or see the memory, the command window shows "cannot access memory". I have done the needed debug setup, even I have tried changing the parameters but I just cant ́t access the memory on debug, but i do not have problems loading my code. I have also tried on Eclipse/OpenOCD and I also can download the code to the board, but it has the same issue with debugging.
This is my board enter image description here
and this is how keil looks.
3 Answers 3
I had nearly same problem and I could solve it with the help of this.
In the debugger hardware setting window you have to explicitly select SW, otherwise the debugger will try to use the full JTAG interface for debugging. right click on your project root folder> Option for target ...> debug> use: STlink> settings> Port: SW
-
\$\begingroup\$ I already changed this but the problem is still there. Did you do another change to your configuration? Which board are you using? \$\endgroup\$PySerial Killer– PySerial Killer2018年02月13日 06:17:53 +00:00Commented Feb 13, 2018 at 6:17
-
\$\begingroup\$ I used
STM32F4DISCOVERY
board that employingSTM32F407VGT6
micro-controller. I think I also changedDebug > Connect & Reset Options
value other thanNormal
. \$\endgroup\$Pana– Pana2018年02月13日 06:30:17 +00:00Commented Feb 13, 2018 at 6:30
http://www.keil.com/forum/59779/-error-65-access-violation-at-0x40023800-no-read-permission/
Hope this helps to write an initialisation file for your controller for debugging!
I have solved this problem. I didn ́t know it is needed to set the boot0 and boot1 pins to GND/VCC according to the desired boot mode. Here you can find the link to the boot mode explanation. If you want to have main flash memory boot, you have to set boot1 pins to GND.
return 0;
with awhile(1);
. You don't want to return from main in an embedded situation. \$\endgroup\$