标签: iar

ARM数据中止错误异常调试

所以现在我明白我得到一个ARM数据中止异常 - 我看到如何捕获异常本身(STL库中的错误地址),但我想在异常之前向后移回堆栈帧.我正在使用IAR工具链,它告诉我在异常后调用堆栈不可用 - 是否有一种技巧方法可以说服工具向我显示调用堆栈?感谢您的所有快速帮助!

embedded debugging arm iar

5
推荐指数
1
解决办法
9740
查看次数

IAR Embedded工作台创建库

我想在IAR Embedded Workbench中创建一个简单的库(C/ANSI),然后在另一个项目中使用该库.我在他们的网站上找到了一些文档.虽然我不完全理解它,但我设法让自己成为一个.r90文件,据我所知,这将是图书馆.请注意,我是这个领域的初学者.总之,我想逐步介绍如何创建库,然后如何在另一个项目中导入它.谢谢.

PS:我正在使用IAR Embedded Workbench for AVR,这个版本没有下面的Library选项卡Linker.

c embedded ansi iar workbench

5
推荐指数
2
解决办法
7204
查看次数

是否使用一个编译器与另一个编译器兼容创建静态c库

在我的例子中,我有一个使用代码源gcc定位arm cortex-m4构建的库.我试图将该库链接到使用IAR编译器编译的项目.

是否可以这样做或者是否必须使用新工具重建库?哪些因素会影响这个?

c linker gcc iar

5
推荐指数
1
解决办法
1277
查看次数

如何解决IAR'Reset_Handler'中的警告

我正在使用IAR ARM 7.10并收到警告:

警告[25]:标签'Reset_Handler'在隐式声明为root的部分中被定义为pubweak ...

这有时会导致系统重置.

我该如何解决此警告?

iar

5
推荐指数
2
解决办法
6210
查看次数

如何通过IAR IDE Watch窗口中的指针显示数组范围?

在IAR Embedded Workbench中,我有一个指针指向内存中的缓冲区.观看指针时,我可以看到它指向的单词的内容.如何判断Watch视图是否从指针开始列出了一定范围的缓冲区,用于指定长度的元素?

例如,输入表达式:

myPtr[0..2]
Run Code Online (Sandbox Code Playgroud)

将显示相当于三个表达式的信息:

myPtr[0]
myPtr[1]
myPtr[2]
Run Code Online (Sandbox Code Playgroud)

c embedded debugging watch iar

5
推荐指数
1
解决办法
2597
查看次数

为什么IAR编译器卡住了?

在我的嵌入式项目中,使用IAR EWARM开发工具(v7.10.3),我有以下代码:

/*  1 */   uint32_t packet_sync = 0;
/*  2 */   uint32_t synced      = 0;
/*  3 */   uint32_t gpio        = 0;

/*  4 */   while (1) {
/*  5 */     if ((packet_sync != 0) && ((packet_sync = gpio) == 0)) {
/*  6 */       if (synced < 2) {
/*  7 */         synced++;
/*  8 */       }
/*  9 */     }
/* 10 */   };
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当我编译代码时,编译器会在编译过程中陷入困境.我尝试使用各种构造,似乎我做了任何微小的改变,消除了问题(但也可能使代码不正确).例如,在#6a中添加NOP,代码确实成功编译:

/*  6 */       if (synced < 2) { …
Run Code Online (Sandbox Code Playgroud)

c embedded compilation c99 iar

5
推荐指数
1
解决办法
1661
查看次数

在MSP430上,当我取消引用空指针时会发生什么?

我知道取消引用空指针是未定义的 - 但我想知道在特定目标上发生了什么 - 一个MSP430.

我现在没有一块板可以在我面前加载它来测试它.

如果我这样做(或者类似的话)会发生什么?

int * foo = NULL;
(*foo)++; //Crash?
Run Code Online (Sandbox Code Playgroud)

位置0x0在SFR范围内并保留.

它会产生PUC/POR吗?还是会默默地"工作"?

生成的程序集是

;int * foo = NULL;
clr.w   R15
;(*foo)++;
inc.w   R15
Run Code Online (Sandbox Code Playgroud)

因此,位置0x0实际上是递增1.

当我在模拟器中运行它时,我看到地址0x0的值从0变为1.我在调试日志中没有警告,程序正常退出.

我正在使用IAR EW430编译器/汇编器/模拟器.

c pointers msp430 null-pointer iar

5
推荐指数
1
解决办法
412
查看次数

使用UART时,BREAK的实际含义是什么?

与RS-232通讯时,断点和错误指示实际上会亮起。有时,CTS也会发光。

因此,一段时间内打印的数据会变成垃圾。稍后,在重置一些实际条款后,它会得到纠正。

这是显示错误的屏幕截图

屏幕截图显示错误

BREAK的真正含义是什么?休息一下会怎样?

c arduino iar uart

5
推荐指数
1
解决办法
4193
查看次数

如何将`__ramfunc` instrinsic应用于构造函数?

我需要将所有代码都放在ram中(我正在编写Flash)。我正在使用IAR 7.80,并且所有__ramfunc功能都可以在每个函数中使用内在函数,但不适用于C ++构造函数。

例如,我有以下课程:

class Os_Timer {
  private:
    os_tmrcnt_t tmr;
  public:
    __ramfunc Os_Timer() { reset(); }
    __ramfunc void reset() { os_TimerStart( &tmr ); }
};
Run Code Online (Sandbox Code Playgroud)

我还没有找到在ram中定义构造函数Os_Timer的方法。编译器抱怨

期望一个标识符

不允许对象属性

在构造函数行上。

IAR手册指出,__ramfunc必须将放在返回值之前,但构造函数没有返回值。

我尝试不成功地强迫这种__ramfunc行为:

_Pragma("location=\"section  .textrw\"") 
Run Code Online (Sandbox Code Playgroud)

_Pragma("location=\"RAM_region\"") 
Run Code Online (Sandbox Code Playgroud)

有人知道该怎么做吗?

c++ embedded constructor iar

5
推荐指数
1
解决办法
98
查看次数

在IAR ARM V8编译器中更改DWARF elf格式

在我们的开发中,我们从IAR ARM V7.40切换到IAR ARM V8.40

我们使用 python 包pyelftools对调试信息进行后处理。不幸的是,现在这似乎被打破了,因为 V8 编译器似乎使用 DWARF4 语法,而 pyelftools 并未完全涵盖该语法。V7 编译器使用 DWARF3,这很好。

IAR V8 是否有任何编译器选项可以更改 DWARF 格式?在IAR C/C++开发指南中,我只找到了--debug, -r启用调试信息的选项,但没有进一步的微调(例如-gdwarf-3arm-clang编译器的选项)。

c elf dwarf iar

4
推荐指数
1
解决办法
889
查看次数

标签 统计

iar ×10

c ×7

embedded ×5

debugging ×2

ansi ×1

arduino ×1

arm ×1

c++ ×1

c99 ×1

compilation ×1

constructor ×1

dwarf ×1

elf ×1

gcc ×1

linker ×1

msp430 ×1

null-pointer ×1

pointers ×1

uart ×1

watch ×1

workbench ×1