问题标签 [iar]

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 投票
4 回答
7269 浏览

c - 如何在 IAR Workbench 中调试 C 中的堆栈溢出

我正在使用 IAR Embedded Workbench IDE 和 TI CC2540 蓝牙低功耗 8051 芯片进行 C 项目。

在处理项目时,我似乎遇到了大量的 XData 堆栈和 Idata 堆栈溢出,而且我很难确定溢出的来源。我正在通过 UART 端口处理大量字符串。

我想知道是否有人对如何确保在分配内存后释放内存并确保我留在堆栈和堆的边界内有任何提示。

谢谢

0 投票
1 回答
1779 浏览

c - 不了解 ARM 硬件堆栈(使用 IAR)

我目前正在使用 IAR Embedded Workbench 为 NXP LPC2378 micro 进行开发。我想我遇到了我的 IRQ 和 CSTACK 需要更大的问题,因为 CPU 不断崩溃,我注意到这些区域会“溢出”到周围的内存区域。我想我真的不明白这些和其他内存区域的用途是什么?我使用为 ISR 保留 RAM 的 RTOS (CMX),但这似乎是为了不同的东西。

当我使用 RTOS 时,IRQ_STACK、CSTACK、SVC_STACK、FIQ_STACK、UND_STACK 和 ABT_STACK 是什么,或者它们是完全独立的?

0 投票
3 回答
116 浏览

c - 这个递增和递减分配试图做什么?

谁能向我解释以上两行试图做什么?pSpiTxBuf是一个uint8_t *

0 投票
1 回答
432 浏览

c - 启用功能时代码行为异常(可能的大小约束)

我知道这个话题很模糊......所以我会试着解释一下。

我正在 IAR Workbench 中开发一个项目。我已经到了如果我添加一个新特性,比如一个简单的 if 语句,整个代码结构就会中断的地步。代码可以正常编译并下载到 8051 设备,但是在代码启动序列的中途,我失去了连接。好像发生了堆栈溢出。如果我暂停调试器,我会看到我的 XdataStack 和 IdataStack 值很低(小于 50%)并且没有要报告的堆栈溢出。

事实上,导致问题的代码甚至没有被应用程序调用。

如果我启用代码中的调试#define 常量,这一点会更加明显。启用此功能会导致将更多字符串常量内置到 UART 调试代码中。

我执行的另一个测试是在一个已经存在的函数中创建一个包含 100 个字符的数组

这似乎也破坏了代码。

我想知道是否有我应该查看的内存区域,看看我是否已经填满了这个设备(CC2540,闪存大小为 128Kb)

IAR 让我调查:

  • IDATA
  • XDATA
  • SFR
  • 逻辑代码
  • 代码
  • 数据
  • 数据

就我的项目配置而言:

堆栈大小:

  • 数据:0xC0
  • 数据:0x00
  • X数据:0x280

堆大小:

  • XDATA:0xFF
  • 远:0xFFF
  • Far22:0xFFF 巨大:0xFFF
0 投票
3 回答
1268 浏览

c - 重建开始时的 IAR 自定义构建

我在 IAR 中配置了一个自定义构建工具。它接受一个文本文件并输出一个供其他 C 文件使用的 .h 文件。当我将 .h 文件添加到输出文件列表时,它作为完整重建的第一步被删除。自定义构建步骤在链接后构建结束时执行。这会导致根据 .h 编译 .c 文件失败。

另一种选择是将自定义构建步骤放在项目的预构建步骤中。但是,无论 .txt 文件是否更改,都会执行此操作。

问题:

  1. 我可以让 IAR 了解 .c 文件对 .h 文件的依赖关系并在编译之前运行自定义构建步骤吗?

  2. 如果那不可能,我至少可以强制自定义构建步骤在开始时发生吗?

0 投票
3 回答
13631 浏览

c - 如何在 stm32f107 芯片上禁用/启用中断?

我有一个 ARM stm32f107 芯片。我正在将一个项目从 IAR 移植到 GCC

IAR 提供以下函数来启用和禁用中断:

如何使用 GCC 为我的芯片启用/禁用中断?

0 投票
1 回答
15838 浏览

embedded - IAR 初始化函数放置

有谁知道如何处理以下问题:
我有一个 IAR Embedded 工作台。该项目也使用 SDRAM 来运行它的代码和 Flash ROM。SDRAM 的代码是从 SD 卡加载的。但是,在 SDRAM 中也存储了一些数据,例如全局变量或静态变量。其中一些必须初始化。初始化步骤,iar_data_init3函数调用,在low_level_init函数之后进行。所以问题是,为了初始化 SDRAM 中的一些变量,初始化函数是从 调用的iar_data_init3,其代码在 SDRAM 本身内部。这是错误的,因为尚未从 SD 卡加载 SDRAM 代码。

我已尝试按照 C/C++ 开发指南中的说明进行手动初始化,但这并没有帮助。

被调用的函数是__sti__routine,它提供变量的初始化。所有这些功能都是由 IAR 生成的。有没有办法告诉链接器将初始化函数放入 Flash ROM?

编辑 1: 这是来自 IAR 手册的 C/C++ 信息。这是一个如何使用手动初始化的示例。

在链接器配置文件中:

然后 IAR 文档说:

您可以使用此源代码示例来初始化该部分:

但是,我不明白,首先,MYSECTION_init 和 MYSECTION 之间有什么区别。另外,如果我有一个全局变量:

而且它应该放在SDRAM中,那么它的初始化是怎么做的呢?我想手动初始化变量,并将初始化函数放入闪存 ROM。(问题是通过将变量放置到 SDRAM 中,它的初始化函数也放置到了 SDRAM 中)。

0 投票
1 回答
340 浏览

for-loop - 模拟器的 IAR 指令

我正在使用 IAR EWARM 5.4 ,我想知道是否有一个指令可以在模拟器模式下显示编译器。例如,我希望我的一部分代码仅在模拟器模式下编译,但在目标模式下将被忽略。

谢谢,

0 投票
1 回答
820 浏览

c - STM32L LCD接口

谁能告诉我如何与连接到 STM32L151RD 的 LCD 接口?我正在使用 IAR 工作台,示例项目没有产生任何结果。此外,我浏览了在线文档和教程,但它们都包含有关 STM32L152xD 的信息,而不是 151,它没有任何内置 LCD,但有 LCD 驱动程序。

谢谢。

0 投票
3 回答
4372 浏览

c - 嵌入式 C:寄存器访问

假设我们想写地址 say 0xc000,我们可以在 C 中定义一个宏为:

我的问题是,当使用任何微控制器时,考虑一个示例 MSP430,P1OUT 寄存器地址为 0x0021。

但是当我们使用 P1OUT=0xFFFF; // 它为 P1OUT 分配一个值 0xFFFF。

我的问题是它如何写入该地址,例如在本例中为 0x0021。IDE 是 IAR。我在下面定义的头文件 msp430g2553.h 中找到:

我想它正在定义地址,但是要写入或读取的其他宏在哪里。

谁能解释一下 P1OUT 如何在该特定地址位置写入的流程?还要让我知道你在 0x0021u 中是什么意思?

谢谢


到目前为止,我发现的细节是:

在 msp430g2553.h

io430g2553.h 说

有人可以解释上述定义的作用吗?我在 MSP430 IAR C/C++ 编译器中找到的详细信息:

有人知道吗?