问题标签 [rl78]

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.

0 投票
1 回答
575 浏览

pointers - 指向 16 位控制器上的寄存器的指针

如何使用 IAR 的 EWB RL78 编译器在 16 位瑞萨电子 RL78 微控制器上声明指向具有 20 位地址的寄存器的指针?

前任:

以上不起作用,因为指针是 16 位地址。

0 投票
0 回答
179 浏览

c - E2 Studio 调试

我在使用 E2 Studio 和 CCRL 工具链调试简单文件时遇到问题。我正在使用 E1,目标设备是 RL78/L13 80 引脚。我收到以下消息

而且 E1 被锁定,我必须断开 USB 端口的连接才能重置它。

0 投票
0 回答
29 浏览

c++ - 具有拆分地址范围的输出部分

在 RL78 上,有一部分闪存 (0x2000) 被镜像到 RAM 地址空间 (0xF2000)。跳转表必须在镜像代码空间中。这一切都是为了它可以使用近指针而不是远指针。

问题是 .text 刚刚大到足以将 .rodata 推出镜像内存。此外,没有足够的闪过 .rodata 来放置所有 .text。

有没有办法让 .text 分成这些范围:

  • 0x00000-0x01FFF - 在此处放置 .text
  • 0x02000-0x0???? - 在此处放置 .rodata
  • 0x0????-0x0FFFF - 在此处放置 .text

是的,可以创建两个输出部分并在其中单独放置符号。这不能很好地扩展,所以它不是一个真正可行的解决方案。

有没有办法让链接器像这样拆分 .text 部分?

0 投票
0 回答
44 浏览

c - RL78 上的热插件调试 - 无法停止执行

HPIEN我正在尝试通过设置相应选项字节中的位来启用 RL78 MCU 上的热插件调试选项。

当我将 E1 调试器附加到正在运行的目标时,我可以使用 Live Watch 检查 RAM 变量,但是,尝试中断执行会导致“无法强制中断”错误消息:

在此处输入图像描述

我正在尝试调试的测试软件是一个简单的无限循环,递增一个变量,切换一个引脚并为看门狗提供服务:

有没有人设法使用断点/使用热插件调试单步执行程序?

0 投票
0 回答
115 浏览

c - 汇编中的堆栈指针

我有一个 C 练习从程序集中调用一个函数。“计算三角形的周长”。

我这里有一个汇编代码

我知道“a”将放入 [HL]。但我不知道为什么 b 存储在 [HL+8] 中。谁能帮助我*我正在使用 RL78G14 瑞萨和 cubesuit+ 编译器

0 投票
0 回答
305 浏览

c - 嵌入式 C,瑞萨电子 RL78,数据传输

我正在尝试将 10 位数据从 Renesas MCU 发送到另一个 MCU。我使用的是 10 位 ADC,因此传感器数据采用 10 位格式,然后存储在 2 字节变量中。例如:

变量类型:-

当我尝试发送整个两个字节时它工作正常;代码如下:

并且R_UART0_Send()定义为:

这部分工作正常,我正在从 UART 获取数据并进行进一步的操作。

现在,我想从这个 MCU 发送最少的数据,所以我实施了一些加密,并尝试按照我的加密只发送一个字节。加密背后的想法是:

我将 10 位数据存储在 中data[2],因此存储了 8 位,存储了data[1]2 位data[0]data[0]可能是0,1或. 有一个条件,一旦是MCU 将只发送一个字节(即),而不是一直发送整个两个字节。这一直持续到获得任何其他数字(即、或)。我在下面的代码中这样做。23data[0]01data[1]data[0]023

其中R_UART0_Send()定义为:

最初两字节数据是正确的,一旦在发送一字节数据的情况下它仍然是正确的。但是当条件改变并再次开始发送两字节数据时,它开始发送data[0]不正确。让我用一个例子来解释它:

data[0]应该是0, 1, 2, 或3.

所以前两个字节的数据是1,135,所以它将data[0](即1)存储在变量中check_new并检查data[0]更改。在那之前,它只会发送data[1].

现在最初它发送,1,135然后它只发送,data[1]例如145,,,,,,,等等。225254656967

现在如果它得到一些data[0] = 2,它应该发送2,data[1],但那时它开始发送data[0] = 65or data[0] = 165,或其他东西,但不是0, 1, 2, or 3。你能帮我看看我在这方面做错了什么吗?也许我没有增加地址或其他东西。

0 投票
3 回答
733 浏览

c - 头文件中的静态内联函数和 misrac 规则 8.5 问题

我正在使用“IAR RL78”和“RL78-R5F10BGG”微控制器。我还在 IAR 中启用了 MISRA C 2004。

我想将我的功能之一定义为“内联”。这个内联函数应该在各种 c 文件中使用。所以我在我的一个中定义了这个函数

头文件,并将该头文件包含在所有需要该函数的 c 文件中。但我的问题是因为编译后的 MISRA C 8.5 规则。它说:

错误[P​​m123]:头文件中不应有对象或函数的定义(MISRA C 2004 规则 8.5)

以下是 common.h 头文件中内联函数的定义:

有什么问题?

有没有办法摆脱这个问题?