Tag: avr gcc

__cxa_pure_virtual的目的是什么?

在编译avr-gcc的同时,我遇到了如下的链接错误: undefined reference to `__cxa_pure_virtual' 我发现这个文件说: __cxa_pure_virtual函数是调用纯虚函数时调用的error handling函数。 如果您正在编写具有纯虚函数的C ++应用程序,则必须提供您自己的__cxa_pure_virtualerror handling函数。 例如: extern "C" void __cxa_pure_virtual() { while (1); } 定义这个函数build议修复错误,但我想知道: 这个function的目的是什么, 为什么我需要自己定义它 为什么把它编码成一个无限循环是可以接受的?

如何防止GCC优化出一个繁忙的等待循环?

我想为Atmel AVR微控制器编写一个C代码固件。 我将使用GCC进行编译。 另外,我想启用编译器优化( -Os或-O2 ),因为我没有理由不启用它们,并且它们可能会比手动编写汇编产生更好的汇编方式。 但是我想要一小段代码没有优化。 我想推迟一段时间的函数执行,因此我想写一个什么都不做的循环,只是浪费一些时间。 不需要精确,只需等待一段时间。 /* How to NOT optimize this, while optimizing other code? */ unsigned char i, j; j = 0; while(–j) { i = 0; while(–i); } 由于AVR中的内存访问速度要慢很多,所以我希望将i和j保存在CPU寄存器中。 更新:我刚刚从AVR Libc发现util / delay.h和util / delay_basic.h 。 虽然大多数时候使用这些函数可能是一个更好的主意,但这个问题仍然有效且有趣。

我怎样才能unit testingArduino代码?

我想能够unit testing我的Arduino代码。 理想情况下,我将能够运行任何testing,而不必将代码上传到Arduino。 什么工具或图书馆可以帮助我呢? 在开发中有一个Arduino仿真器可能是有用的,但它似乎还没有准备好使用。 来自Atmel的AVR Studio包含一个可能有用的芯片模拟器,但是我不知道如何将它与Arduino IDE结合使用。

在8位embedded式系统上可以使用flex / bison吗?

我正在使用avr-gcc工具链为C语言的AVR微控制器编写一个简单的BASIC语言的解释器。 不过,我想知道是否有任何开源工具可以帮助我编写词法分析器。 如果我写这个在我的Linux机器上运行,我可以使用flex / bison。 现在我把自己限制在一个8位的平台上,我必须全部手工完成,否则呢?