avr-gcc是Atmel AVR RISC处理器的一套可执行软件开发工具
我的代码未成功构建,并显示以下错误消息: 宏“hton_us”传递了 2 个参数,但只需要 1 个 它发生在这一行: hton_us( &fi.size, 1 ); 这是
我正在尝试为arduino编写一个程序,它可以可变地计算绝对地址,然后跳转到它(这是具有更大用途的更大程序的一部分),但是我有一点
为什么这段代码是由 avr-gcc 生成的,它是如何工作的?
这是我正在从事的一个 C 项目中的反汇编 AVR 代码片段。我注意到生成了这个奇怪的代码,但我无法理解它是如何工作的。我认为这有点荒谬
我正在经历一种奇怪的现象。我正在尝试让 ATtiny24A 进入睡眠模式。我之前有一个工作代码,但通过对程序其他部分的修改和测试,似乎
使用 avr-gcc 在 C++ 中读取意外的全局变量结果(局部变量访问符合预期)
在 ATmega328 的 avr-gcc 4.6.2 中编译以下代码时,出现意外的全局变量读取结果: #包括 #包括 #定义 LED_PORT ...
avr-gcc 中 Y 寄存器与调用/堆栈帧的偏移量来自哪里?
在 avr-gcc 网站(https://gcc.gnu.org/wiki/avr-gcc#Frame_Layout)上,它说帧指针(Y 寄存器)偏移了一个字节,因此 Y+1 指向框架的底部。但是当我编译时...
单片机:Atmega2560 IDE:Microchip Studio v7.0.2594 工具链:WinAVR(也尝试过 Native) 我正在尝试通过 UART 与我的 MCU 通信。我已经通过 UART 编写了两个非常基本的函数来传输
avr-gcc ATmega4809 `.rodata` 部分出现问题
(这是这个问题的后续) 以下程序不起作用(在ATmega4809中) #包括 无效 f(const char str[]) { if (str[0] == 'a') // <-- here is the problem...
avr-ld 错误;找不到 crtatmega328p,找不到 -lm 等
我试图从 Makefile 链接两个目标文件,但链接器不断向我抛出错误。我在网上搜索时似乎找不到这个错误,所以我希望这里的任何人都可以提供帮助。 在我的 Makefile 中,我
我正在使用Atmel studio 7对Atmega芯片进行编程。我尝试在main.c文件的第一行定义F_CPU。此 F_CPU 定义在其他文件中使用。然而,当我编译程序时...
带有参数包的模板使用avr-gcc编译,但不使用Arduino IDE
我正在尝试为 Arduino 项目编写一个通用的打印模板。这样做时,我遇到了一个我不理解的编译器错误,所以我做了一个最小的可重现示例。 模板 我正在尝试为 Arduino 项目的 Print 编写通用模板。这样做时,我遇到了一个我不理解的编译器错误,所以我做了一个最小的可重现示例。 template <typename T, typename... T2> void print_all(Print* const (&ps)[2], T v1, T2... v2) { ps[0]->print(v1); ps[0]->flush(); ps[1]->print(v1); ps[1]->flush(); print_all(ps, v2...); } void print_all(Print* const (&ps)[2]) { return; } void setup() { print_all({&Serial1, &Serial2}, 1.0, "abc", 5ul); } void loop() { } 我得到的错误是error: expected ')' before ';' token,没有行号信息。如果我在文件开头插入空行,编译器错误将更改为 error: expected ')' before ';' token 1 | | ^ | ) 我用 avr-gcc 版本 7.3.0(官方 arduino avr 板)和 14.1.0(使用 arch linux arduino avr 板)尝试过此操作,但无论哪种方式都得到相同的错误。 我试验了一段时间,最终将代码放在Compiler Explorer上,使用avr-gcc而不是Arduino IDE进行编译。我必须提供一些存根才能编译所有内容,但它似乎按我的预期工作。那么为什么我的代码可以在编译器资源管理器上运行,但不能在 Arduino IDE 中运行? 带有支持方法存根的代码 class Print{ public: virtual void print(unsigned long i) { } virtual void print(double i) { } virtual void print(const char* i) { } virtual void flush() { } }; class Serial: public Print {}; Serial serial1 = Serial{}; Serial serial2 = Serial{}; template <typename T, typename... T2> void print_all(Print* const (&ps)[2], T v1, T2... v2) { ps[0]->print(v1); ps[0]->flush(); ps[1]->print(v1); ps[1]->flush(); print_all(ps, v2...); } void print_all(Print* const (&ps)[2]) { return; } int main() { Print* const ps[] = {&serial1, &serial2}; print_all(ps, 1.0, "abc", 5ul); } 来自文档: 首先,Arduino 开发软件会执行一些小的预处理,将您的草图转换为 C++ 程序 所以你的 Arduino 代码不是真正的 C++ 程序。它是 Arduino 预处理器的输入,输出 C++ 程序。 预处理器做什么?除此之外: 为 .ino/.pde 文件中尚未具有原型的所有函数定义生成原型。在极少数情况下,某些功能的原型生成可能会失败。要解决这个问题,您可以为这些函数提供您自己的原型 好吧,我想恭喜你了?您偶然发现了这些“罕见”案例之一。不幸的是,提供单独的模板没有帮助。但是,还有另一种解决方法:将模板标题放在一行上。是的,你没有看错。 // this works template <typename T, typename... T2> void print_all(Print* const (&ps)[2], T v1, T2... v2) { // this doesn't template <typename T, typename... T2> void print_all(Print* const (&ps)[2], T v1, T2... v2) {
可以在Android中使用包含Arduino1.0.5的AVR-GCC编译器吗? 我正在尝试在 Android 上运行 Arduino 1.0.5 中包含的 AVR-GCC,但这不起作用!我使用适用于 Linux 的 Arduino 1.0.5,
使用 atmega328 的 avr-gcc 上的链接时间优化 (LTO) 问题
我正在开发一个使用 ATmega328 并使用 avr-gcc/g++ 的项目。我正在尝试启用链接时间优化 (LTO),但在链接过程中遇到问题。 这是一个简化的示例: • 斯塔...
编译器在 Eclipse AVR 插件中截断 ATMEGA328PB 的中断向量
我通常会使用 Eclipse avr-gcc 插件和(zaks 的 avr-gcc 编译器 https://blog.zakkemble.net/avr-gcc-builds)来开发 AVR MCU 的固件。 MCU ATMEGA328PB 有额外的定时器 (3,4)、S...
我正在为ATtiny13编程,我必须做很多饱和的添加。 试图优化它们,似乎 avr-gcc 根本不知道如何优化任何东西。所有这些都试过了...
如何使用 Ada 的 Alire 包管理器安装 AVR 的 ZFP(零占用空间)RTS(运行时系统)?
如何使用 Ada 的 Alire 包管理器安装 AVR 的 ZFP(零占用空间)RTS(运行时系统)? 我认为正确的是,我的项目文件包含: 项目 Avr 是 对于运行时(“阿达&
在使用 avr-gcc 编译时,我遇到了如下链接器错误: 对“__cxa_pure_virtual”的未定义引用 我发现这份文件指出: __cxa_pure_virtual 的乐趣...
__attribute__((io)), __attribute__((address)) 似乎没有任何效果
我正在尝试使用AVR风格的gcc专门提供的变量属性(https://gcc.gnu.org/onlinedocs/gcc/AVR-Variable-Attributes.html#AVR-Variable-Attributes)。 说明书上说...
我正在尝试为 ATmega328P 编写一些内联汇编代码 我发现我的输出变量的变化与我预期的不同。所以我将原始代码简化为: uint8_t a = 0; __asm__ ( “……
`asm("" : "+r" (myVar));` 在 AVR-GCC 中是什么意思?
我在别人的代码中发现了以下几行: uint16_t someConstantFactorVariable = ...; asm("" : "+r" (someConstantFactorVariable)); someConstantFactorVariable 经常出现在...