问题标签 [renesas-rx]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 中断和用户代码之间的以下“标志”变量访问是否安全?
我们继承了我一直在关注的针对瑞萨 RX231 微控制器的项目。
这个 uC 只有一条指令可以锁定总线原子性 (XCHG)。
因为处理器是访问 RAM 内存的唯一组件(不使用 DMA 或 DTC),所以要操作与中断共享的用户代码中的变量,在访问时间内禁用中断(在处理器状态字寄存器中),即
但是,也有一些“标志”在没有保护的情况下被共享,它们在中断中设置并在用户代码中通过以下方式轮询:
在这种情况下,我对无保护(通过禁用用户代码中的中断)的理解是:
- 要读取、设置或清除“标志”,总是使用两条指令,一条将内存地址放入寄存器,一条用于读取/设置/清除
- 内存地址始终相同,因此可以不考虑
- 然后每个读取/设置/清除操作都是一条指令,因此访问/操作是原子的
问题是:我的理解正确吗?在这种情况下,这样的“标志”变量访问和操作是否安全?
或者可能有任何可能的错误/错误?
- 假设使用的编译器和编译器选项始终相同。
- 假设所描述的操作是访问/操作此类“标志”的唯一方式(设置为 0 或 1,读取(全部以汇编代码显示))(无加法、乘法等)
如果我们需要升级编译器或更改编译器选项怎么办?
如此简单的操作会导致不止“一条指令”吗?
在没有保护的情况下使用此类“标志”的理由过于限制了禁用中断的时间。
查看代码逻辑,预期的行为是您可以请求一次或多次消息,但您只能得到一个答案。
PS。我尝试使用以下附加标签:“cc-rx”、“rxv2-instruction-set”、“rx231”。
c - 瑞萨电子 GCC 链接器错误与共享代码
我在Renesas 的 E2 Studio IDE (v.6.2.0) 中使用GCC for Renesas 。没关系,但我也使用了 Applilet3 (v.3.08.01.05) 来生成板支持文件和外围驱动程序。
当我尝试构建时,出现以下错误...
项目设置
我在“lib”文件夹中的项目之间共享了一些源代码。main()
正如您从错误中看到的那样,我为这些“库”调用了一些初始化函数。
我不明白为什么编译过程有效,但失败了。
我的源代码树布局看起来像这样......
我通过...将库源代码添加到我的 E2 Studio 项目中
- 在 E2 的“项目资源管理器”窗格中右键单击项目名称
- 单击
Import
并选择File System
- 浏览
get-repo-dir
并选择(单击)lib
文件夹 - 选中左侧窗格中的框以包含所有文件
lib
- 确保选中“创建顶级文件夹”
- 点击“高级”
- 选中“在工作区中创建链接”和“创建虚拟文件夹”和“创建相对于:的链接位置”框是
PROJECT_LOC
- 结束
然后我将库的包含路径添加到构建设置中......
- 在 E2 的“项目资源管理器”窗格中右键单击项目名称
- 选择“属性”
- 选择
C/C++ General > Paths and Symbols
- 确保配置是当前/活动的
- 选择“GNU C”语言
- 点击“添加”添加以下内容
"${ProjDirPath}/../../lib/my_lib_a"
"${ProjDirPath}/../../lib/my_lib_b"
- 申请
- 验证这些路径在
C/C++ Build > Settings > Compiler > Includes
所以在 E2 Studio 中,Project Explorer 显示..
任何想法为什么我会收到链接器错误?
user-interface - Yocto 3.9.0 上的 ROS 支持
我最近购买了一个 Renesas R Car M3 板,它在通过 Yocto 项目构建的嵌入式 Linux 映像上运行。我们目前使用的是 Yocto 3.9.0。我们期待在这个嵌入式 Linux 上实现 ROS 动力学库。Yocto 项目是否支持这些库?如果是这样,是否有任何特殊的过程来安装和运行它们,或者它是否像普通的 Linux 发行版一样工作?
linux - R-Car M3 MMC 初始化失败
最近我买了一个 R-Car M3 开发板。按照 elinux.org/.../Yocto-Gen3 上的步骤,我已经使用 YOCTO 3.9.0 成功构建了嵌入式 Linux 映像
我还按照 elinux.org/.../M3SK 上的步骤更新了主板的固件。
现在我正在尝试从 SD 卡启动 Linux 映像,但是当我打开我的板时,我收到错误“MMC init fail”。我知道我可以访问 SD 卡并加载保存在那里的图像。但是当尝试从 SD 卡启动时,它会停止启动并显示以下消息“mmc0:初始化 MMC 卡时出现错误 -110”
尝试启动时似乎出现此错误是因为板无法初始化 mmc。有没有人面临同样的问题?有人可以帮我解决吗?
引导日志
opencv - 在运行交叉编译的 cpp 二进制文件时运行 poky 2.1.3 的 h3ulcb 中未处理的 2 级转换错误
yocto build 2.23 成功并启动了我的 Renesas h3ulcb ,使用构建系统上的 sdk 交叉编译了一个 opencv 应用程序(2.4.13.7),当尝试在 Renesas 上执行交叉编译的二进制文件时,出现以下错误。
但是,交叉编译和应用程序在 ubuntu 16.04 上运行良好时没有错误,但是在运行 poky 2.1.3 的 h3ulcb 中出现以下错误
main_ 是交叉编译的可执行文件
谁能帮我调试这个问题?提前致谢
memory - IAR 无法在某行设置断点
我正在为瑞萨使用 IAR。我面临的问题是,我无法在几行设置断点。尽管我多次重新编译并加载它,但我无法在这些行设置断点。如果我查看映射文件,我找不到为这些静态变量分配的任何内存,我无法设置断点。没有分配内存有什么原因吗?
谢谢
memory-management - 通过 SPI 进行外部存储器数据复制——速度
任何经验似乎仍然不足以回答串行通信总线中出现的那些奇怪问题。我们正在尝试将数据从外部闪存复制到 SRAM。以下是我们如何配置系统的详细信息。
- 控制器:RH850 (D1M1),PLL 速度为 60MHz
- 外部闪存 (IS25LP128)
- SPI 速度:5MHz(使用示波器观察的时钟)
- 数据大小:4 MB
现在,理论上,如果我的 SPI 以 5MHZ 运行,它应该复制 5MBits/Sec。我们正在尝试复制 4MB,因此基本上它将是 32 兆位。所以理论上,我们的传输应该需要大约 7 秒。好的,我们有一些隐含开销。我的驱动程序代码每次读取调用最多只能接受 64Kb,因此我们选择复制 40Kb 大约 100 次来实现这一点,然后我们在 for 循环中运行它。好吧,让我增加 5 秒的开销(抱歉 RH850!)所以总共12秒;好吧,让我们添加更多缓冲区,使其成为 15 秒的舒适区(最大预期!)。但是当我们运行代码时,完成复制需要整整 40 秒。我们检查了时钟,它是预期的 5MHz,至少它们是连续的。
这里有人遇到过吗?我们可以去哪里看?好吧,我知道我的供应商提供了一些闪存驱动程序可供研究,但在我这样做之前,我想确定一下!任何帮助将不胜感激。
microchip - 从瑞萨读取数据
我有旧的瑞萨微处理器 R5F21246SN,我需要在芯片内读取这些数据。
我可以做些什么来阅读我需要的工具?
Smok jtag 或 Renesans 开发工具 我需要使用什么?
c - F0520005: 无法打开源文件“r_bsp_config.h”
我正在使用 Renesas MCU RX65N,我想与其他板进行串行连接,并显示我在 Appwizard 上设计的 HMI,我按照他们在手册中提供的步骤操作,但也无法正常工作。然后找到了有关如何解决它的更多信息,并且代码本身可以工作,但是当我尝试合并两个程序时总是给我错误(个别项目上没有出现的问题),这是我现在得到的错误,并且不知道该怎么做,因为显然它包含在我的项目中,但无论我尝试什么都不会打开,任何人都知道如何解决它或做什么?