RH850 1372/1374 程序跑飞异常分析

news2024/9/29 21:24:45

文章目录

    • 前言
    • 现象描述
    • 原因分析
    • 解决方案
    • 总结

前言

最近项目用瑞萨RH850系列的1372/1374开发,官方的MCAL做的不咋地就算了,FAE支持也很少。给的demo问题也很多。本文记录一下开发过程中的问题。

现象描述

MCAL配置完ADC1后,运行ADC1的采样程序就跑飞,不管是SW触发的Group还是HW触发的Group,采用的是Interrupt方式。实际在TargetMap中也加入了对应的中断函数。(demo中ADC1的中断没有map)

原因分析

程序版本回退到不触发ADC1采样时,可以正常运行。所以肯定跟ADC1的中断有关。查看EIIC寄存器的值为0x10AA,对应中断为INTADCF1|3,与我配置的中断一致。实际打断点测试中断没有进,所以在进中断之前就跑飞了。也不知道应该在哪里打断点了。

怀疑是中断没有使能,但在代码中没有看到使能中断的函数

查看初始化的代码,有一个数组,里面应该是地址,查看地址果然是中断控制器寄存器对应的地址。
如下所示:


uint32 RenICR_ADRR[] = {
  0xFFFFB040, 0xFFFFB042, 0xFFFFB044, 0xFFFFB046,
  0xFFFFB048, 0xFFFFB06A, 0xFFFFB06C, 0xFFFFB06E,
  0xFFFFB070, 0xFFFFB072, 0xFFFFB074, 0xFFFFB076,
  0xFFFFB078, 0xFFFFB100, 0xFFFFB102, 0xFFFFB104,
  0xFFFFB106, 0xFFFFB108, 0xFFFFB10A, 0xFFFFB10C,
  0xFFFFB11A, 0xFFFFB11C, 0xFFFFB11E, 0xFFFFB120,
  0xFFFFB122, 0xFFFFB124, 0xFFFFB126, 0xFFFFB128,
  0xFFFFB08A, 0xFFFFB08C, 0xFFFFB08E,
  0xFFFFB092, 0xFFFFB094, 0xFFFFB096, 0xFFFFB098,
  0xFFFFB09A, 0xFFFFB09C, 0xFFFFB09E, 0xFFFFB138,
  0xFFFFB13A, 0xFFFFB13C, 0xFFFFB13E, 0xFFFFB140,
  0xFFFFB142, 0xFFFFB144, 0xFFFFB146, 0xFFFFB148,
  0xFFFFB14A, 0xFFFFB090, 0xFFFFB0A0, 0xFFFFB0A2,
  0xFFFFB0A4, 0xFFFFB0A6, 0xFFFFB0A8, 0xFFFFB0AA,
  0xffffffff
};

实际操作如下:

void Reg_Init(void)
{
  uint16 *ptr;
  uint8 count;
  for (count = 0; RenICR_ADRR[count] != 0xffffffff;  count++)
  {
    ptr = (uint16 *)RenICR_ADRR[count];
    *ptr |= 0x47;
  }
}

之前一直没有注意这个代码是做什么的,只能说太low了,函数名也没有,备注也没有。不查手册根本不知道在干嘛

查看数组中的地址,果然没有ADC1的,所以ADC1的中断会异常。

对应的寄存器描述如下:


CTn:该位表示中断通道类型。这个位是只读的。

0:表示当前选择与边缘同步检测。

1:表示当前已选中高电平检测。

RFn:这是一个中断请求标志。

RFn位可以从程序中写入。将RFn位设置为1会产生一个EI级别的可屏蔽中断n (INTn),就像中断请求被确认时一样。

0:不发出中断请求(复位后的值)。

1:发出中断请求。

当CTn设置为0时,当中断请求被CPU内核确认时,该位自动清除。可通过软件进行设置和清除

当CTn设置为1时,该位不能通过软件设置或清除。当中断请求被CPU内核确认时,该参数不被清除。

MKn:这是中断请求屏蔽位。为1时屏蔽对应中断的请求。

TBn:这个位用来选择确定中断向量的方式。

0:直接跳转到由优先级确定的地址

1:表引用

中断向量的确定方法请参见RH850系列用户手册:软件

P3n to P0n:这些位将中断优先级指定为16个级别之一,其中0为最高,15为最低

当多个EI级中断请求同时发出时,从这些位中具有最高优先级设置的源中断被选择并传送到CPU核心首先进行服务。当P3n到P0n位为同时发生的中断请求指定相同的优先级级别时,通道编号较低的源具有高优先级。这个顺序是固定的。

上面对寄存器的值写的0x47,表示使能中断,使用表引用,中断优先级为7

解决方案

快速解决方案为在数组中增加ADC1的寄存器地址,长期解决方案应该使用规范的接口使能中断配置优先级

uint32 RenICR_ADRR[] = {
  0xFFFFB040, 0xFFFFB042, 0xFFFFB044, 0xFFFFB046,
  0xFFFFB048, 0xFFFFB06A, 0xFFFFB06C, 0xFFFFB06E,
  0xFFFFB070, 0xFFFFB072, 0xFFFFB074, 0xFFFFB076,
  0xFFFFB078, 0xFFFFB100, 0xFFFFB102, 0xFFFFB104,
  0xFFFFB106, 0xFFFFB108, 0xFFFFB10A, 0xFFFFB10C,
  0xFFFFB11A, 0xFFFFB11C, 0xFFFFB11E, 0xFFFFB120,
  0xFFFFB122, 0xFFFFB124, 0xFFFFB126, 0xFFFFB128,
  0xFFFFB08A, 0xFFFFB08C, 0xFFFFB08E,
  0xFFFFB092, 0xFFFFB094, 0xFFFFB096, 0xFFFFB098,
  0xFFFFB09A, 0xFFFFB09C, 0xFFFFB09E, 0xFFFFB138,
  0xFFFFB13A, 0xFFFFB13C, 0xFFFFB13E, 0xFFFFB140,
  0xFFFFB142, 0xFFFFB144, 0xFFFFB146, 0xFFFFB148,
  0xFFFFB14A, 0xFFFFB090, 0xFFFFB0A0, 0xFFFFB0A2,
  0xFFFFB0A4, 0xFFFFB0A6, 0xFFFFB0A8, 0xFFFFB0AA,
  0xFFFFB14C, 0xFFFFB14E, 0xFFFFB150, 0xFFFFB152,0xFFFFB154, 0xFFFFB156, /* Use for adc1 INTADCF1ERR INTADCF1I0 INTADCF1I1 INTADCF1I2 INTADCF1I3 INTADCF1I4 */

  0xffffffff
};

如果遇到其他开中断跑飞的情况,可以参考上述解决方案。

总结

瑞萨的MCAL做的不完善就算了,支持还少,后面可能还会有更多的坑。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL注入原理分析

前言 order by的作用及含义 order by 用于判断显示位,order by 原有的作用是对字段进行一个排序,在sql注入中用order by 来判断排序,order by 1就是对一个字段进行排序,如果一共四个字段,你order by 5 数据库不知道怎么…

51:电机(ULN2003D)

1:介绍 我们51单片机使用的是直流电机 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 直流电机主要由永磁体(定子)、线圈(转…

【Java|基础篇】File类和IO流

文章目录 1.File类2.流的概念3.InputStream4.OutputStream5.Reader6.Writer7.使用Scanner读文件8.使用PrintWriter写文件9.close()方法10.flush()方法10.总结 1.File类 File类是Java中用于表示文件或目录的类。它提供了一些方法来操作文件和目录的属性和内容,可以进…

对js中的window深入理解

window和 document的区别 window对象是浏览器中的全局对象,代表的是整个浏览器窗口;document只是window对象中的一部分,表示当前窗口或框架中加载的HTML文档,主要用于访问和操作文档的内容,包括DOM元素、样式、事件等&…

华为OD机试真题 Java 实现【AI面板识别】【2023 B卷 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明4、控制台输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题&#xff08…

【Javalin 】Javalin Kotlin/Java 轻量级 REST API 库

Javalin 旨在为 Kotlin 和 Java 提供一个易用的轻量级 REST API 库。这个 REST API 易于使用,API 也非常的流畅。 Javalin 主要有以下的特点: 易用:不用提前学习任何概念就可以开始使用 一致的 API:所有的处理程序和映射器在 Co…

基于RK3588+AI的边缘计算算法方案:智慧园区、智慧社区、智慧物流

RK3588 AI 边缘计算主板规格书简介 关于本文档 本文档详细介绍了基于Rockchip RK3588芯片的AI边缘计算主板外形、尺寸、技术规格,以及详细的硬件接口设计参考说明,使客户可以快速将RK3588边缘计算主板应用于工业互联网、智慧城市、智慧安防、智慧交通&am…

年轻人的第一套海景房

前段时间新房装修,我把书房设计成工作室的风格,并自己装配了一台电脑,本文是对电脑选购与装配的一则经验贴,仅包含我对计算机硬件的浅薄理解。 配件选购 装机契源 事实上,很多电脑店都提供装配和测试服务&#xff0c…

【二叉树】刷题二(以递归写法为主)

617. 合并二叉树 class Solution:def mergeTrees(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) -> Optional[TreeNode]:root TreeNode()if not root1 and not root2:returnelif root1 and not root2:root root1elif not root1 and root2:root root2elif…

AD21原理图的高级应用(一)端口的应用

(一)端口的应用 1.放置端口2.自动给端口添加页码 说明,博主的AD版本是AD21,所有的工程都基于AD21,虽然AD软件几乎不存在版本兼容性问题,但还是建议大家使用对应版本的软件来学习。 资料仅供学习使用。 1.…

013 怎么查看自己电脑的wifi密码

方法一:查看当前电脑连接的无线密码 步骤1: 打开windows命令行窗口,输入:ncpa.cpl 快速打开“控制面板”中的“网络连接”,如下图: 步骤2: 右键,打开“状态” 步骤3:…

Pearson correlation皮尔逊相关性分析

在参数检验的相关性分析方法主要是皮尔逊相关(Pearson correlation)。既然是参数检验方法,肯定是有一些前提条件。皮尔逊相关的前提是必须满足以下几个条件: 变量是连续变量;比较的两个变量必须来源于同一个总体&…

瓦瑟斯坦距离、收缩映射和现代RL理论

Wasserstein Distance, Contraction Mapping, and Modern RL Theory | by Kowshik chilamkurthy | Medium 一、说明 数学家们在考虑一些应用的情况下探索的概念和关系 - 几十年后成为他们最初从未想象过的问题的意想不到的解决方案。 黎曼的几何学只是出于纯粹的原因才被发现的…

Abaqus 导出单元刚度矩阵和全局刚度矩阵

Abaqus 导出单元刚度矩阵和全局刚度矩阵 首次创建:2023.7.29 最后更新:2023.7.29 如有什么改进的地方,欢迎大家讨论! 详细情况请查阅:Abaqus Analysis User’s Guide 一、Abaqus 导出单元刚度矩阵 1.生成单元刚度矩阵…

Kafka原理剖析

一、简介 Kafka是一个分布式的、分区的、多副本的消息发布-订阅系统,它提供了类似于JMS的特性,但在设计上完全不同,它具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性,适用于离线和在线的消息消费,如常规的…

安装Anaconda3和MiniConda3

MiniConda3官方版是一款优秀的Python环境管理软件。MiniConda3最新版只包含conda及其依赖项如果您更愿意拥有conda以及超过720个开源软件包,请安装Anaconda。MiniConda3官方版还是一个开源的软件包管理系统和环境管理系统,能够帮助用户安装多个版本的软件…

Android高德地图定位实现签到打卡功能(全网最详细+收藏)

前言 本章根据高德地图API,实现打卡签到功能。用到了定位SDK 和地图SDK、覆盖物。打卡范围图形可以支持多种形状,如:圆形、长方形、多边形。 核心逻辑: 获取当前定位信息,然后通过Marker绘制小图标进行展示&a…

IO流(1)-字符流与字节流

1. I/O流前置知识 在讲解IO流之前,需要先说明几个小知识点: (1)bit 是最小的二进制单位,是计算机的操作部分,取值0或1。 (2)Byte(字节)是计算机操作数据的…

PayPal:全球金融科技领域当之无愧的巨无霸

来源:猛兽财经 作者:猛兽财经 全球最大的金融科技公司之一PayPal(PYPL)将于2023年8月2日发布其2023年第二季度的财报。多年以来该公司一直在革新数字汇款和收款方式,并提高数百万客户的生活质量。此外,PayPal的各种工具也为企业…

Java文件操作与流处理

文章目录 一、文件1.1 文件的概念1.2 文件的组织结构1.3 绝对路径和相对路径 二、文件操作File类2.1 属性和常用方法2.2 使用案例 三、字节流和字符流3.1 InputStream 和 FileInputStream3.2 使用 Scanner 读取字符3.2 OutputStream 和 FileOutputStream3.3 Reader 和 FileRead…