当前位置: 首页 > news >正文

编译器使用优化后出现的busfault

遇到的问题:
未开优化是正常执行,打开优化,无法运行,定位到异常语句

//ADC_REG 是ADC结果寄存器地址
uint32 adc = *(uint32 *)ADC_REG;
uint32 temp = adc&0xffff;

未优化汇编代码

//uint32 adc = *(uint32*)ADC_REG;
MOVW	 	R8 ,	#0X0824					//加载高16位地址
MOVT		R8 ,	#4090					//加载低16位地址
LDR.W		R0,		[R8]					//读取32位数据
//uint32 temp = adc&0xffff;
UBFX 		R2 , 	R0,		#0,		#16		进行与运算

优化汇编代码

//uint32 adc = *(uint32 *)ADC_REG;
//uint32 temp = adc&0xffff;
MOVW	 	R8 ,	#0X0824					//加载高16位地址
MOVT		R8 ,	#4090					//加载低16位地址
LDRH		R0,		[R8]					//半字节数据读取数据到R0

问题就在 LDRH指令;由于通用寄存器读取外设寄存器需要按照32位读取,并且需要使用的数据刚好就是半字,编译器优化后就使用LDRH指令进行半字读取,从功能上是等效的,但是由于内核寄存器对外设寄寄存器需要使用32位读取即LDR.W指令,编译器优化使用16位读取即LDRH,故此出现 busfault 。解决办法,即在读取时添加volatile,不使用用编译器优化。

volatile优化汇编代码

//uint32 adc = *(volatile uint32*)ADC_REG;
MOVW	 	R8 ,	#0X0824					//加载高16位地址
MOVT		R8 ,	#4090					//加载低16位地址
LDR.W		R0,		[R8]					//读取32位数据
UBFX 		R0, 	R0,		#0,		#16		//进行与运算

相关文章:

编译器使用优化后出现的busfault

遇到的问题: 未开优化是正常执行,打开优化,无法运行,定位到异常语句 //ADC_REG 是ADC结果寄存器地址 uint32 adc *(uint32 *)ADC_REG; uint32 temp adc&0xffff;未优化汇编代码 //uint32 adc *(uint32*)ADC_REG; MOVW R…...

rebase current onto selected作用

rebase current onto selected作用 "rebase current onto selected"是一个版本控制工具中的命令,通常用于将当前分支的修改合并到已选定的分支中,以保持代码库的整洁性和可维护性。 具体来说,这个命令会将当前分支的提交历史记录…...

深度学习入门

全连接批量归一化 目的是:只有一个学习率, 通过归一化,让所有的 x i x_i xi​具有一样的分布,则对每个参数 w i w_i wi​梯度的作用是相当的实现是:实际上是在全连接中增加了两个节点 γ \gamma γ, β \beta β 卷积…...

嵌入式图像处理机器视觉库YMCV使用

YMCV入门 一个可以免操作系统的机器视觉库,由c语言编写可以跑在单片机上。项目地址https://gitee.com/yao_mi/ymcv 使用的时候,可以参考他们的教程和demo,建议先看教程,上面有架构说明。 一个典型的应用就是渲染器,需…...

vscode设置pycharm中的项目路径和debug方法

真大佬在这 真大佬在这 必须给大佬star 命令行运行: export PYTHONPATH:pwd:/home/bennie/bennie/bennie_project/AI_Lab python main.py 当关闭此命令行时,临时路径会清除,可以将上述export的整条语句,加入~/.bashrc中 该命令中…...

10-27 maven概念

maven maven的概念模型: 项目对象模型(POM: Project object Model),一组标准集合: pom.xml 依赖管理系统(Dependency Management System) 项目生命周期(Project Lifecycle) 项目对象模型: 把项目当成一个对象,描述这个项目,使用p…...

SQL审计是什么意思?目的是什么?有什么好处?

很多刚入行的运维小伙伴对于SQL审计不是很了解,不知道其是什么意思?使用SQL审计的目的是什么?使用SQL审计的好处有哪些?这里我们大家就来一起聊聊,仅供参考哈! SQL审计是什么意思? 【回答】&…...

CSS 网页布局

网页布局有很多种方式&#xff0c;一般分为以下几个部分&#xff1a;头部区域、菜单导航区域、内容区域、底部区域&#xff1a; 1&#xff09;、头部区域位于整个网页的顶部&#xff0c;一般用于设置网页的标题或者网页的logo。 <style> body { margin: 0; } /* 头部样…...

智慧燃气管网监测系统功能简要介绍

关键词&#xff1a;智慧燃气、智慧燃气管网、智慧燃气管网监测、智慧燃气管网监测系统、智慧燃气解决方案 燃气作为城市主要燃料&#xff0c;遍布整个城区&#xff0c;其安全运行直接关系到居民的生命安全&#xff0c;不可不重视。 智慧燃气中的GIS和SCADA系统&#xff0c;可…...

深度解析:如何开发一对一交友App的关键要素和流程

在数字化时代&#xff0c;人们越来越倾向于使用交友App来寻找自己的伴侣或交流朋友。而一对一交友App的开发成为了创业者们追逐的热门领域。本文将深入探讨一对一交友App开发的关键要素和流程&#xff0c;帮助您在竞争激烈的市场中脱颖而出。 关键要素&#xff1a;打造独特的用…...

ClickHouse 学习之从高级到监控以及备份(二)

第 一 部分 高级篇 第 1 章 Explain 查看执行计划 在 clickhouse 20.6 版本之前要查看 SQL 语句的执行计划需要设置日志级别为 trace 才能可以看到&#xff0c;并且只能真正执行 sql&#xff0c;在执行日志里面查看。在 20.6 版本引入了原生的执行计划的语法。在 20.6.3 版本成…...

「随笔」IT行业哪个方向比较好就业

一、IT行业就业的PEST分析 在当前的全球经济环境下&#xff0c;IT行业的发展迅速&#xff0c;就业前景广阔。以下从政治、经济、社会和科技四个维度对IT行业就业进行PEST分析。 1.1 政治&#xff08;Political&#xff09; 政府政策&#xff1a;近年来&#xff0c;各国政府都…...

Halcon WPF 开发学习笔记(0):开篇介绍

文章目录 文章专栏Halcon是什么&#xff1f;安装教学视频链接简单来说 Halcon快速开发环境确认新建项目 文章专栏 Halcon开发 Halcon是什么&#xff1f; 史上最全VisionPro和Halcon 的详细对比 Halcon简述 Halcon基础大全&#xff08;基础算子、高阶算子、数组、分割、字符检测…...

SLAM中求导相关的公式总结

李代数与李群的关系 R ˙ R T \dot{R}R^{T} R˙RT 是一个反对称矩阵&#xff0c;所以这个矩阵可以用一个13向量进行反对称来表示 R ˙ R T Φ ^ \dot{R}R^{T}Φ^{\hat{}} R˙RTΦ^ &#xff0c; 根据十四讲 4.8 的推导&#xff0c;最后则有 R ( t ) ˙ Φ ^ ⋅ R ( t ) \d…...

在微信小程序中怎么做投票活动

在当今社交媒体时代&#xff0c;微信小程序已经成为一种广泛使用的互动营销工具。通过各种活动&#xff0c;企业可以吸引用户的关注&#xff0c;提升品牌影响力。其中&#xff0c;投票活动是一种特别受欢迎的形式。本文将为你详细介绍如何在微信小程序中创建投票活动。 一、微信…...

如何使用 NFTScan NFT API 在 Arbitrum 网络上开发 Web3 应用

Arbitrum 是以太坊的 Layer 2 扩容方案&#xff0c;为以太坊面临的高 gas 费和网络拥堵问题&#xff0c;提供了一个解决方案。作为 Layer 1 的以太坊基础层受每秒只能验算 15 笔交易的限制&#xff0c;在目前以太坊使用需求庞大的情况下&#xff0c;局限了以太坊的可扩展性。Ar…...

线上问题排查方法

查看栈信息 先进入docker容器,docker exec -it 容器号 bash *查看线程占用排行top -Hp 1,此处PID为线程号 查看各线程情况jstack -l 1 可以将栈信息生成文件jstack -l 1 > 2.log 查看对应线程号的信息,比如要看线程号PID是28的,那么28的16进制是1C,则检索栈文件里ox1…...

智能柜+MRO:制造业中的自动售货机

每当谈及企业数字化转型&#xff0c;多数人想到的是人工智能、大数据等高端技术的应用&#xff0c;或是原有业务流程和运营方式的数字化与自动化&#xff0c;实现大幅降本增效等。然而&#xff0c;对于急需在数字时代找到生存之道的企业来说&#xff0c;数字化转型的要求远不止…...

flutter笔记:骨架化加载器

flutter笔记 骨架化加载器 - 文章信息 - Author: Jack Lee (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/134224135 【介绍】&#xff1a;本文介…...

关于视频封装格式和视频编码格式的简介

文章目录 简介视频封装格式&#xff08;Video Container Format&#xff09;视频编码格式&#xff08;Video Compression Format&#xff09;两者关系总结webm 格式简介webm视频编码格式webm音频编码格式webm总结 简介 视频封装格式&#xff08;Video Container Format&#x…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...