【Keil5 使用Debug调试,阻塞在System_Init()中,并报错显示:no ‘read‘ permis】

计算机疑难杂症记录与分享006

  • Keil5 使用Debug调试,阻塞在System_Init()中,并报错显示error 65: access violation at 0x40021000 : no 'read' permission
    • 1、问题背景
    • 2、问题原因
    • 3、问题解决
      • 3.1、解决方法1(亲测有效):
        • 3.1.1、修改后的现象1
        • 3.1.2、修改后的现象2
      • 3.2、方法二(亲测有效)
    • 4、问题总结
      • 4.1、总结,纯软件调试,正确步骤
      • 4.2、问题解决后现象

Keil5 使用Debug调试,阻塞在System_Init()中,并报错显示error 65: access violation at 0x40021000 : no ‘read’ permission

1、问题背景

这次是因为要写一个设备模块的驱动程序,需要根据数据手册的时序图上的要求,进行高低电平的精确延时,就想着用keil5自带的Debug软件仿真,计算程序段的时间,然后出现以下问题现象:

温馨提示:这里以简单的例程为例演示问题现象,找到问题原因,再解决问题,在最后总结最优的正确进入调试的步骤,着急的可自行略过问题原因,直接跳转最后看第四节解决问题即可。

问题现象1:
在这里插入图片描述
点击调试后,显示:
在这里插入图片描述
说明第一步就未选择正确。
解决问题现象1,使用纯软件应该选择:

在这里插入图片描述
问题现象2:
正确选择逻辑分析仪后,点击调试,出现直接进入到如下图位置:
在这里插入图片描述
发现程序进入System_Init()中,而正常现象应该是运行在main函数入口处。

然后尝试点击 run 或者 step ,最终阻塞在 HSEStatus = RCC->CR & RCC_CR_HSERDY;
do{ …} while函数处

在这里插入图片描述
知道问题现象后,现在来分析问题原因。

2、问题原因

根据问题现象,分析造成阻塞的原因,无非就是while判断的判断条件不满足,跳出的条件,那么分别右击变量RCC->CR、RCC_CR_HSERDY、HSE_STARTUP_TIMEOUT跳转到定义处,发现其值与咱们芯片的时钟控制寄存器RCC_CR相关.
在这里插入图片描述

RCC->CR

在这里插入图片描述

RCC_CR_HSERDY

在这里插入图片描述

HSE_STARTUP_TIMEOUT

在这里插入图片描述
然后找到问题出现在RCC_CR后,查看数据手册,这里以STM32F10XXX为例,如图所示:

分别是描述了自身RCC和互联型产品RCC的定义和说明。

在这里插入图片描述
在这里插入图片描述
那么接下来就是解决问题。

3、问题解决

3.1、解决方法1(亲测有效):

回到Keil5的Debug窗口,查看发现:
在这里插入图片描述

发现使用软件调试时,Dialog DLL链接库和芯片参数均默认为与Cortex M3内核匹配的库和芯片参数,发现与我们正使用的器件不匹配,那么改成自己需要的库和芯片型号即可。这里改为STM库:Dialog DLL:DARMSTM.DLL 接着Parameter参数:-pSTM32F103ZE (格式:-p+自己所用的芯片)
说明:Dialog DLL链接库的另一个作用是,方便调试时,查看显示外设和寄存器等窗口。

在这里插入图片描述

3.1.1、修改后的现象1

改了后发现寄存器地址果然发生了变化。
修改前:
在这里插入图片描述
在这里插入图片描述
修改后:
在这里插入图片描述
在这里插入图片描述

3.1.2、修改后的现象2

修改前为空的:
在这里插入图片描述
修改后成功加载库中的外设和内部资源:
在这里插入图片描述

3.2、方法二(亲测有效)

既然知道由于地址问题造成修改解决后,那么也可以通过权限解决(本质还是地址),通过Debug的Memory map 修改读写权限。从而解决 no ‘read’ permission 或 no ‘write’ permission。
在这里插入图片描述
在这里插入图片描述
弊端就是这种方法属于一次性的,可以考虑加一个自定义的配置文件。
查看数据手册:

map 0x40018000, 0xA0000FFF read write // AHB
map 0x40010000, 0x40017FFF read write // APB2
编写Initialization file 并添加自定义的Initialization file。
在这里插入图片描述

4、问题总结

问题概括:1.未正确选择逻辑分析仪选项,2.未正确配置匹配的仿真器的环境。
综上所述,推荐第一个方法解决。

4.1、总结,纯软件调试,正确步骤

在这里插入图片描述

4.2、问题解决后现象

点击调试后,恢复正常进入main中,且外设资源窗口也正常加载。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/914136.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

接口自动化测试实战(全网唯一)

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 接口自动化测试是指通过编写程序来模拟用户的行为,对接口进行自动化测试。Python是一种流行的编程语言,它在接口自动化测试中得到了广…

ubuntu 20.04 NVIDIA驱动、cuda、cuDNN安装

1. NVIDIA驱动 系统设置->软件和更新->附加驱动->选择NVIDIA驱动->应用更改。该界面会自动根据电脑上的GPU显示推荐的NVIDIA显卡驱动。 运行nvidia-smi: NVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver. Make sure that the lat…

HarmonyOS开发 API 13发布首个Beta版本,解决了哪些问题?

HarmonyOS 5.0.1 Beta3,是HarmonyOS开发套件基于API 13正式发布的首个Beta版本。该版本在OS能力上主要增强了C API的相关能力,多个特性补充了C API供开发者使用。HarmonyOS 5.0.1 Beta3完整配套信息如下: 已解决的问题 DevEco Studio 5.0.…

SQL,力扣题目1194,锦标赛优胜者

一、力扣链接 LeetCode1194 二、题目描述 Players 玩家表 -------------------- | Column Name | Type | -------------------- | player_id | int | | group_id | int | -------------------- player_id 是此表的主键(具有唯一值的列)。 此表的每一行表示每个玩…

计算机毕业设计Python+图神经网络考研院校推荐系统 考研分数线预测 考研推荐系统 考研爬虫 考研大数据 Hadoop 大数据毕设 机器学习 深度学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

virtualBox部署minikube+istio

环境准备 virtualBox安装 直接官网下载后安装即可,网上也有详细教程。镜像使用的centos7。 链接(不保证还可用):http://big.dxiazaicc.com/bigfile/100/virtualbox_v6.1.26_downcc.com.zip?auth_key1730185635-pWBtV8LynsxPD0-0-…

一文了解Android本地广播

在 Android 开发中,本地广播(Local Broadcast)是一种轻量级的通信机制,主要用于在同一应用进程内的不同组件之间传递消息,而无需通过系统的全局广播机制。这种方法既可以提高安全性(因为广播仅在应用内传播…

CoD-MIL: 基于诊断链提示的多实例学习用于全切片图像分类|文献速递-基于深度学习的病灶分割与数据超分辨率

Title 题目 CoD-MIL: Chain-of-Diagnosis Prompting Multiple Instance Learning for Whole Slide Image Classification CoD-MIL: 基于诊断链提示的多实例学习用于全切片图像分类 01 文献速递介绍 病理检查被广泛视为肿瘤诊断的金标准,因为它为治疗决策和患者…

Socket 和 WebSocket 的应用

Socket(套接字)是计算机网络中的一个抽象层,它允许应用程序通过网络进行通信。套接字用于跨网络的不同主机上的应用程序之间的数据交换。在互联网中,套接字通常基于 TCP(传输控制协议)或 UDP(用…

uniapp发布到微信小程序,提示接口未配置在app.json文件中

使用uniapp打包上传微信小程序发布,在提交审核时提示 “接口未配置在app.json文件中” 如下图所示 解决方法:在manifest.json文件中打开源码视图,添加 requiredPrivateInfos 字段键入所需要的接口(数组)

Golang | Leetcode Golang题解之第557题反转字符串中的单词III

题目&#xff1a; 题解&#xff1a; func reverseWords(s string) string {length : len(s)ret : []byte{}for i : 0; i < length; {start : ifor i < length && s[i] ! {i}for p : start; p < i; p {ret append(ret, s[start i - 1 - p])}for i < le…

[产品管理-58]:安索夫矩阵矩阵帮助创业者确定研发出来的产品在市场中定位策略

目录 一、提出背景 二、核心思想与结构 三、应用背景与领域 四、实践案例 安索夫矩阵&#xff08;Ansoff Matrix&#xff09;&#xff0c;也被称为产品/市场方格或成长矢量矩阵&#xff0c;其应用背景可以从以下几个方面进行详细阐述&#xff1a; 一、提出背景 安索夫矩阵…

使用 Vue 配合豆包MarsCode 实现“小恐龙酷跑“小游戏

作者&#xff1a;BLACK595 “小恐龙酷跑”&#xff0c;它是一款有趣的离线游戏&#xff0c;是Google给Chrome浏览器加的一个有趣的彩蛋。当我们浏览器断网时一只像素小恐龙便会出来提示断网。许多人认为这只是一个可爱的小图标&#xff0c; 但当我们按下空格后&#xff0c;小恐…

运行ts文件出错及解决办法

运行ts文件出错及解决办法 TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension “.ts” 这个错误是因为 ts-node 无法直接处理 TypeScript 文件作为 ES 模块。你可以尝试以下解决方案&#xff1a; 解决方案 1: 使用 --loader ts-node/esm 选项 如果你使用的是 …

Unity中IK动画与布偶死亡动画切换的实现

在Unity游戏开发中&#xff0c;Inverse Kinematics&#xff08;IK&#xff09;是创建逼真角色动画的强大工具。同时&#xff0c;能够在适当的时候切换到布偶物理状态来实现死亡动画等效果&#xff0c;可以极大地增强游戏的视觉体验。本文将详细介绍如何在Unity中利用IK实现常规…

JS爬虫实战之TikTok_Shop验证码

TikTok_Shop验证码逆向 逆向前准备思路1- 确认接口2- 参数确认3- 获取轨迹参数4- 构建请求5- 结果展示 结语 逆向前准备 首先我们得有TK Shop账号&#xff0c;否则是无法抓取到数据的。拥有账号后&#xff0c;我们直接进入登录。 TikTok Shop 登录页面 思路 逆向步骤一般分为…

易泊车牌识别相机:4S 店的智能之选

在当今数字化时代&#xff0c;科技的进步不断为各个行业带来更高效、便捷的解决方案。对于 4S 店来说&#xff0c;易泊车牌识别相机的出现&#xff0c;无疑为其运营管理带来了全新的变革。 一、易泊车牌识别相机的强大功能 易泊车牌识别相机以其卓越的性能和精准的识别能力&…

音频数据的处理

前言 在研究android音频架&#xff0c;音频驱动等的时候&#xff0c;就有涉及到dump音频数据debug&#xff0c;重采样&#xff0c;downmixer&#xff0c;位深转换的处理&#xff0c;那这些的操作原理以及相关算法是如何实现的呢&#xff1f; 带着这个问题&#xff0c;开始探讨…

【前端】手写一个简单的分页器

1. 前言 分页器基本上是任何网站必须要有的一个组件&#xff0c;为什么需要分页器&#xff0c;当后台传入了大量的数据&#xff0c;那么在前端拿到数据&#xff0c;如果直接展示很有可能或造成卡顿&#xff0c;同时消耗过多的内存&#xff0c;给用户带来的浏览效果就不好。所以…