We're having a problem debugging an example application that was supplied with our install of uVision5 and the ARM KEIL MDK.
The example application that we're building is the Blinky_M4 project. It's based on CMSIS-RTOS, and it's an application created specifically for the iMX7D SABRE Board that we have connected to our Colibri evaluation board. In uVision5 we can build the project successfully, but when attempting to debug the generated Blinky_M4.axf file on the device using our ARM KEIL ULINKpro D the following error message is displayed in a ULINKpro – Cortex-M Error dialog box.
Cannot access Memory (@ 0xe00ffff0, Read, Acc Size: 4 Byte)
The ARM KEIL website supplies a list of possible error messages in the ULINKpro User’s Guide online. The suggestion given to resolve this error is to try lowering the maximum clock rate of the JTAG debugger. The default clock rate is 10 MHz. We've set a number of lower clock rates in the Cortex-M Target Driver Setup dialog box for uVision5, but we still receive this error message.
What can we do to resolve this issue so that we can make this work?
Thank you in advance for any help you may be able to provide.
Make sure you don't have a Debugger Script (.INI) running and poking memory it shouldn't be
to work with the iMX7D SABRE Board, DS-MDK might be a better choice.
Thank you both for the replies. I'll check this out and let you know how it goes. I appreciate the help.
Chen Tang, I was confused. What we actually have is the Colibri iMX7D SOC and it plugs into the DIMM socket connector on the Colibri Evaluation Board. That may be the whole problem there. The example project that I built is based on an iMX7 Sabre project. Not an iMX7D Colibri project.
Sorry for the mix up and confusion.
After I looked into this further I realized, with the help of Chen Tangs's comment, that I was using the wrong example from the Pack installer.
I was using: CMSIS-RTOS Blinky (MCIMX7D-SABRE), when what I should have been using is: CMSIS-RTOS Blinky (Colibri-iMX7).
So, I tried to copy the CMSIS-RTOS Blinky (Colibri-iMX7) example project to build and attempt to debug for the Colibri iMX7D SOC that we are actually using.
The problem I have now is that I receive the following error message in the Pack Installer window when I attempt to copy the CMSIS-RTOS Blinky (Colibri-iMX7) example:
"Cannot copy example: No uVision environment load in PDSC."
In researching this error online I found a forum post about this issue which indicates that the main Keil_v5 folder should not be installed in the Program Files folder as access permission issues can cause the PDSC errors I'm seeing, but my install of the Keil_v5 folder is directly on the C:\ drive so that should not be an issue for us. Just as a check I made sure that both the Keil_v5 folder, and the folder where I'm copying the example project to are not set to read only, but I'm still seeing the error and the necessary Blinky_M4.uvprojx file is not copied so I can't open the project.
Also, the only example project where I don't have this issue is the CMSIS-RTOS Blinky (MCIMX7D-SABRE). When I copy that example project using Pack Installer it copies fine, with no warnings or errors, and opens in uVision5.
Does anyone have any idea on why we're having this issue?
Thank You
After speaking with Toradex I was able to discover the issue. When the Toradex supplied embedded Linux OS completes bootup it places the i.MX7 in a low power state that prevents establishing a JTAG debugger connection.
Preventing bootup of the Toradex supplied embedded Linux OS allows the i.MX7 processor to remain in a higher power state which supports the JTAG connection and debugging. We can now successfully debug the Hello World example application using FreeRTOS.
It's always the case with all dual core or tri core boards with Cortex-Mx + Cortex-Ax processors.
As soon as you power up the boot up starts automatically which you can see via serial interface.
In order to first connect with Cortex-M, you would have to stop the boot process, other wise Cortex-A will be active and you can never connect with Cortex-M, unless you repeat the power up process and stop the boot.