error 65: access violation at 0x40021000 : no ‘read‘ permission

开发环境:keil MDK V5.10

操作系统:windows 7(32位)

问题描述:使用MDK进行软件设计时没有使用ST官方的模板而是手动建立的工程,使用ST官方提供的3.5版本固件库。编译完全通过,在使用软件仿真时出现问题,表现为程序无法跳转到main入口,直接在SystemInit()函数就无法执行,调试窗口出现如标题所示的错误信息:

error 65: access violation at 0x40021000 : no 'read' permission

如下图所示,途中红圈分别表示了代码执行到的位置及相应的错误信息

网络上查找解决方案同时对比ST提供的3.5版本固件库中的工程模板,发现是工程配置选项中的debug选项卡的dialog dll和对应的parameter配置出了问题。选中MCU后默认的配置如下图:

可以看到dialog dll默认配置为DCM.DLL,而parameter默认配置为-pCM3,该种配置无法进行正常的仿真调试。

正确配置应该为dialog dll:DARMSTM.dll parameter:-pSTM32F103C8

这两个参数是根据你使用的MCU不同而不同的,例如本工程使用的MCU为STM系列,那么在dialog DLL选项中就应该使用DARMSTM.dll,名字中的STM就是指厂商,参数则是具体的MCU芯片型号,本项目使用STM32F103C8T6,因此选择为STM32F103C8,如下图所示:

为何使用的是STM32F103C8T6,参数却只能是STM32F103C8,这个原因是因为根据ST公司的MCU命名规则,到C8这个位置就已经完全规定了仿真所需要的所有参数,包括cpu频率,ram容量,flash容量,外设资源等内容。型号中后边的部分都已经和仿真无关了,例如后边的名字主要代表了MCU的封装,工作温度等。官方命名规则如下图:

当然还有一个更加直接的原因是DARMSTM.DLL这个动态链接库文件中没有详细的MCU型号,我们可以通过使用工具打开动态链接库文件查看证明,如下图所示,图中可以清楚的看到一个MCU的型号只有11个字符,不包括后边的其他参数字符。

µVISION DEBUGGER: Simulation of Cortex-M Devices


Information in this knowledgebase article applies to:

  • MDK-ARM Version 5

QUESTION

I am trying to use the Simulator that is available in the µVision Debugger with MDK-ARM Version 5. However when I start the debugger I get the following error:

*** error 65: access violation at address : no 'read' permission

This error happens when my application accesses on-chip peripherals. In the past the µVision Debugger used to provide simulation for the on-chip peripherals. Is this no longer available with MDK-ARM Version 5?

ANSWER

The µVision Debugger provides complete instruction set simulation for all ARM7, ARM9, Cortex-M0/M0+, Cortex-M3 and Cortex-M4 processor cores. However it is impossible to simulate the behavior of the on-chip peripherals for many devices.

Today the capabilities of Target Debugging match the functionality of device simulation when using trace with a powerful debug adapter such as the ULINKpro Debug and Trace Unit. It provides with the real-world application features such as Code Coverage, Performance Analyzer, Event Viewer, and Logic Analyzer.

For some older devices, the legacy device simulation is still available and can also be used together with MDK Version 5 projects. To enable the device simulation open the dialog Project - Options for Target - Debug. Under the section Use Simulator change the entries for Dialog DLL and Parameter. The values from the tables below give you device simulation for certain devices. Refer to Simulated Features in the µVision Legacy Device Database to get information about the simulated peripherals for each of these devices.

Peripheral Simulation for STMicroelectronics STM32F1 Series

Dialog DLL  | Parameter       | Microcontroller Device
------------|-----------------|------------------------------------
DARMSTM.DLL | -pSTM32F101C6   | STM32F101C6
DARMSTM.DLL | -pSTM32F101C8   | STM32F101C8
DARMSTM.DLL | -pSTM32F101CBT6 | STM32F101CBT6
DARMSTM.DLL | -pSTM32F101R6   | STM32F101R6
DARMSTM.DLL | -pSTM32F101R8   | STM32F101R8
DARMSTM.DLL | -pSTM32F101RB   | STM32F101RB
DARMSTM.DLL | -pSTM32F101T6   | STM32F101T6
DARMSTM.DLL | -pSTM32F101T8   | STM32F101T8
DARMSTM.DLL | -pSTM32F101V8   | STM32F101V8
DARMSTM.DLL | -pSTM32F101VB   | STM32F101VB
DARMSTM.DLL | -pSTM32F103C6   | STM32F103C6
DARMSTM.DLL | -pSTM32F103C8   | STM32F103C8
DARMSTM.DLL | -pSTM32F103CB   | STM32F103CB
DARMSTM.DLL | -pSTM32F103R6   | STM32F103R6
DARMSTM.DLL | -pSTM32F103R8   | STM32F103R8
DARMSTM.DLL | -pSTM32F103RB   | STM32F103RB
DARMSTM.DLL | -pSTM32F103T6   | STM32F103T6
DARMSTM.DLL | -pSTM32F103T8   | STM32F103T8
DARMSTM.DLL | -pSTM32F103V8   | STM32F103V8
DARMSTM.DLL | -pSTM32F103VB   | STM32F103VB
DARMSTM.DLL | -pSTM32F103ZE   | STM32F103ZE

Peripheral Simulation for NXP LPC1100 Series

Dialog DLL  | Parameter       | Microcontroller Device
------------|-----------------|------------------------------------
DARMP1.DLL  | -pLPC1111       | LPC1111/002
DARMP1.DLL  | -pLPC1111       | LPC1111/101
DARMP1.DLL  | -pLPC1111       | LPC1111/102
DARMP1.DLL  | -pLPC1111       | LPC1111/103
DARMP1.DLL  | -pLPC1111       | LPC1111/201
DARMP1.DLL  | -pLPC1111       | LPC1111/202
DARMP1.DLL  | -pLPC1112       | LPC1112/101
DARMP1.DLL  | -pLPC1112       | LPC1112/102
DARMP1.DLL  | -pLPC1112       | LPC1112/201
DARMP1.DLL  | -pLPC1112       | LPC1112/202
DARMP1.DLL  | -pLPC1112       | LPC11C12/301
DARMP1.DLL  | -pLPC1113       | LPC1113/201
DARMP1.DLL  | -pLPC1113       | LPC1113/202
DARMP1.DLL  | -pLPC1113       | LPC1113/301
DARMP1.DLL  | -pLPC1113       | LPC1113/302
DARMP1.DLL  | -pLPC1114       | LPC1114/102
DARMP1.DLL  | -pLPC1114       | LPC1114/201
DARMP1.DLL  | -pLPC1114       | LPC1114/202
DARMP1.DLL  | -pLPC1114       | LPC1114/301
DARMP1.DLL  | -pLPC1114       | LPC1114/302
DARMP1.DLL  | -pLPC1114       | LPC11C14/301

Peripheral Simulation for NXP LPC1300 Series

Dialog DLL  | Parameter       | Microcontroller Device
------------|-----------------|------------------------------------
DARMP1.DLL  | -pLPC1311       | LPC1311
DARMP1.DLL  | -pLPC1313       | LPC1313
DARMP1.DLL  | -pLPC1342       | LPC1342
DARMP1.DLL  | -pLPC1343       | LPC1343

Peripheral Simulation for NXP LPC1700 Series

Dialog DLL  | Parameter       | Microcontroller Device
------------|-----------------|------------------------------------
DARMP1.DLL  | -pLPC1751       | LPC1751
DARMP1.DLL  | -pLPC1752       | LPC1752
DARMP1.DLL  | -pLPC1754       | LPC1754
DARMP1.DLL  | -pLPC1756       | LPC1756
DARMP1.DLL  | -pLPC1758       | LPC1758
DARMP1.DLL  | -pLPC1759       | LPC1759
DARMP1.DLL  | -pLPC1764       | LPC1764
DARMP1.DLL  | -pLPC1765       | LPC1765
DARMP1.DLL  | -pLPC1766       | LPC1766
DARMP1.DLL  | -pLPC1767       | LPC1767
DARMP1.DLL  | -pLPC1768       | LPC1768
DARMP1.DLL  | -pLPC1769       | LPC1769
DARMP1.DLL  | -pLPC1772       | LPC1772
DARMP1.DLL  | -pLPC1774       | LPC1774
DARMP1.DLL  | -pLPC1776       | LPC1776
DARMP1.DLL  | -pLPC1777       | LPC1777
DARMP1.DLL  | -pLPC1778       | LPC1778
DARMP1.DLL  | -pLPC1785       | LPC1785
DARMP1.DLL  | -pLPC1786       | LPC1786
DARMP1.DLL  | -pLPC1787       | LPC1787
DARMP1.DLL  | -pLPC1788       | LPC1788

Peripheral Simulation for Atmel SAM3 Series

no simulation for Atmel devices, according to web description.

DARMSAM3.DLL  | -pSAM3U1C       | SAM3U1C
DARMSAM3.DLL  | -pSAM3U1E       | SAM3U1E
DARMSAM3.DLL  | -pSAM3U2C       | SAM3U2C
DARMSAM3.DLL  | -pSAM3U2E       | SAM3U2E
DARMSAM3.DLL  | -pSAM3U4C       | SAM3U4C
DARMSAM3.DLL  | -pSAM3U4E       | SAM3U4E

Peripheral Simulation for Toshiba TX03 Series

Dialog DLL  | Parameter           | Microcontroller Device
------------|---------------------|------------------------------------
DARMT3.DLL  | -pTMPM330FDFG       | TMPM330FDFG
DARMT3.DLL  | -pTMPM330FWFG       | TMPM330FWFG
DARMT3.DLL  | -pTMPM330FYFG       | TMPM330FYFG

Peripheral Simulation for Texas Instruments LM3S Series

Dialog DLL  | Parameter           | Microcontroller Device
------------|---------------------|------------------------------------
DLM.DLL     | -pLM3S101           | LM3S101
DLM.DLL     | -pLM3S102           | LM3S102
DLM.DLL     | -pLM3S1110          | LM3S1110
DLM.DLL     | -pLM3S1133          | LM3S1133
DLM.DLL     | -pLM3S1138          | LM3S1138
DLM.DLL     | -pLM3S1150          | LM3S1150
DLM.DLL     | -pLM3S1162          | LM3S1162
DLM.DLL     | -pLM3S1165          | LM3S1165
DLM.DLL     | -pLM3S1332          | LM3S1332
DLM.DLL     | -pLM3S1435          | LM3S1435
DLM.DLL     | -pLM3S1439          | LM3S1439
DLM.DLL     | -pLM3S1512          | LM3S1512
DLM.DLL     | -pLM3S1538          | LM3S1538
DLM.DLL     | -pLM3S1601          | LM3S1601
DLM.DLL     | -pLM3S1607          | LM3S1607
DLM.DLL     | -pLM3S1608          | LM3S1608
DLM.DLL     | -pLM3S1620          | LM3S1620
DLM.DLL     | -pLM3S1625          | LM3S1625
DLM.DLL     | -pLM3S1626          | LM3S1626
DLM.DLL     | -pLM3S1627          | LM3S1627
DLM.DLL     | -pLM3S1635          | LM3S1635
DLM.DLL     | -pLM3S1637          | LM3S1637
DLM.DLL     | -pLM3S1751          | LM3S1751
DLM.DLL     | -pLM3S1776          | LM3S1776
DLM.DLL     | -pLM3S1850          | LM3S1850
DLM.DLL     | -pLM3S1911          | LM3S1911
DLM.DLL     | -pLM3S1918          | LM3S1918
DLM.DLL     | -pLM3S1937          | LM3S1937
DLM.DLL     | -pLM3S1958          | LM3S1958
DLM.DLL     | -pLM3S1960          | LM3S1960
DLM.DLL     | -pLM3S1968          | LM3S1968
DLM.DLL     | -pLM3S1968          | LM3S1968
DLM.DLL     | -pLM3S2110          | LM3S2110
DLM.DLL     | -pLM3S2110          | LM3S2110
DLM.DLL     | -pLM3S2139          | LM3S2139
DLM.DLL     | -pLM3S2276          | LM3S2276
DLM.DLL     | -pLM3S2410          | LM3S2410
DLM.DLL     | -pLM3S2432          | LM3S2432
DLM.DLL     | -pLM3S2533          | LM3S2533
DLM.DLL     | -pLM3S2601          | LM3S2601
DLM.DLL     | -pLM3S2601          | LM3S2601
DLM.DLL     | -pLM3S2608          | LM3S2608
DLM.DLL     | -pLM3S2616          | LM3S2616
DLM.DLL     | -pLM3S2620          | LM3S2620
DLM.DLL     | -pLM3S2637          | LM3S2637
DLM.DLL     | -pLM3S2651          | LM3S2651
DLM.DLL     | -pLM3S2671          | LM3S2671
DLM.DLL     | -pLM3S2678          | LM3S2678
DLM.DLL     | -pLM3S2776          | LM3S2776
DLM.DLL     | -pLM3S2911          | LM3S2911
DLM.DLL     | -pLM3S2918          | LM3S2918
DLM.DLL     | -pLM3S2939          | LM3S2939
DLM.DLL     | -pLM3S2948          | LM3S2948
DLM.DLL     | -pLM3S2950          | LM3S2950
DLM.DLL     | -pLM3S2965          | LM3S2965
DLM.DLL     | -pLM3S2965          | LM3S2965
DLM.DLL     | -pLM3S300           | LM3S300
DLM.DLL     | -pLM3S301           | LM3S301
DLM.DLL     | -pLM3S308           | LM3S308
DLM.DLL     | -pLM3S310           | LM3S310
DLM.DLL     | -pLM3S315           | LM3S315
DLM.DLL     | -pLM3S316           | LM3S316
DLM.DLL     | -pLM3S317           | LM3S317
DLM.DLL     | -pLM3S328           | LM3S328
DLM.DLL     | -pLM3S3651          | LM3S3651
DLM.DLL     | -pLM3S3739          | LM3S3739
DLM.DLL     | -pLM3S3748          | LM3S3748
DLM.DLL     | -pLM3S3748          | LM3S3748
DLM.DLL     | -pLM3S3749          | LM3S3749
DLM.DLL     | -pLM3S3759          | LM3S3759
DLM.DLL     | -pLM3S3768          | LM3S3768
DLM.DLL     | -pLM3S5632          | LM3S5632
DLM.DLL     | -pLM3S5652          | LM3S5652
DLM.DLL     | -pLM3S5662          | LM3S5662
DLM.DLL     | -pLM3S5732          | LM3S5732
DLM.DLL     | -pLM3S5737          | LM3S5737
DLM.DLL     | -pLM3S5739          | LM3S5739
DLM.DLL     | -pLM3S5747          | LM3S5747
DLM.DLL     | -pLM3S5749          | LM3S5749
DLM.DLL     | -pLM3S5752          | LM3S5752
DLM.DLL     | -pLM3S5757          | LM3S5757
DLM.DLL     | -pLM3S5762          | LM3S5762
DLM.DLL     | -pLM3S5767          | LM3S5767
DLM.DLL     | -pLM3S5768          | LM3S5768
DLM.DLL     | -pLM3S5769          | LM3S5769
DLM.DLL     | -pLM3S5791          | LM3S5791
DLM.DLL     | -pLM3S601           | LM3S601
DLM.DLL     | -pLM3S608           | LM3S608
DLM.DLL     | -pLM3S610           | LM3S610
DLM.DLL     | -pLM3S6100          | LM3S6100
DLM.DLL     | -pLM3S611           | LM3S611
DLM.DLL     | -pLM3S6110          | LM3S6110
DLM.DLL     | -pLM3S612           | LM3S612
DLM.DLL     | -pLM3S613           | LM3S613
DLM.DLL     | -pLM3S615           | LM3S615
DLM.DLL     | -pLM3S617           | LM3S617
DLM.DLL     | -pLM3S618           | LM3S618
DLM.DLL     | -pLM3S628           | LM3S628
DLM.DLL     | -pLM3S6420          | LM3S6420
DLM.DLL     | -pLM3S6422          | LM3S6422
DLM.DLL     | -pLM3S6432          | LM3S6432
DLM.DLL     | -pLM3S6537          | LM3S6537
DLM.DLL     | -pLM3S6610          | LM3S6610
DLM.DLL     | -pLM3S6611          | LM3S6611
DLM.DLL     | -pLM3S6618          | LM3S6618
DLM.DLL     | -pLM3S6633          | LM3S6633
DLM.DLL     | -pLM3S6637          | LM3S6637
DLM.DLL     | -pLM3S6730          | LM3S6730
DLM.DLL     | -pLM3S6753          | LM3S6753
DLM.DLL     | -pLM3S6911          | LM3S6911
DLM.DLL     | -pLM3S6918          | LM3S6918
DLM.DLL     | -pLM3S6938          | LM3S6938
DLM.DLL     | -pLM3S6950          | LM3S6950
DLM.DLL     | -pLM3S6952          | LM3S6952
DLM.DLL     | -pLM3S6965          | LM3S6965
DLM.DLL     | -pLM3S800           | LM3S800
DLM.DLL     | -pLM3S801           | LM3S801
DLM.DLL     | -pLM3S808           | LM3S808
DLM.DLL     | -pLM3S811           | LM3S811
DLM.DLL     | -pLM3S812           | LM3S812
DLM.DLL     | -pLM3S815           | LM3S815
DLM.DLL     | -pLM3S817           | LM3S817
DLM.DLL     | -pLM3S818           | LM3S818
DLM.DLL     | -pLM3S828           | LM3S828
DLM.DLL     | -pLM3S8530          | LM3S8530
DLM.DLL     | -pLM3S8538          | LM3S8538
DLM.DLL     | -pLM3S8630          | LM3S8630
DLM.DLL     | -pLM3S8730          | LM3S8730
DLM.DLL     | -pLM3S8733          | LM3S8733
DLM.DLL     | -pLM3S8738          | LM3S8738
DLM.DLL     | -pLM3S8930          | LM3S8930
DLM.DLL     | -pLM3S8933          | LM3S8933
DLM.DLL     | -pLM3S8938          | LM3S8938
DLM.DLL     | -pLM3S8962          | LM3S8962
DLM.DLL     | -pLM3S8970          | LM3S8970
DLM.DLL     | -pLM3S8971          | LM3S8971

MORE INFORMATION

猜你喜欢

转载自blog.csdn.net/qq_36958104/article/details/111859366