7得票3回答
avr-gcc: 简单函数中似乎不需要的序言/尾声

尝试在uint64内部寻址个别字节时,AVR gcc会给出奇怪的序言/尾声,而使用uint32_t编写的同一函数仅返回一个ret(示例函数为NOP)。 为什么gcc要这样做呢?如何去除这种情况? 您可以在Compiler Explorer中查看此处的代码。 ⁽¹⁾Arduino 1.8....

9得票4回答
如何使两个本质相同的指针类型不兼容?

在某些架构中,对于本质相同的对象可能需要具有不同的指针类型。特别是对于哈佛体系结构的 CPU,您可能需要类似以下内容: uint8_t const ram* data1; uint8_t const rom* data2; 特别是在MPLAB C18(现已停用)中,指向ROM / RAM...

7得票2回答
浏览AVR汇编语言的“hello world”代码

我正在尝试为Arduino Duemilanove (AVR ATmega328P)编写一些汇编语言。 在编译和反汇编C代码的同时学习汇编语言,我得到了以下内容: (使用AVR_GCC进行编译) int main() { volatile int a = 0; while (1) ...

8得票8回答
AVR链接错误,“重定位被截断以适应”

我正在尝试为ATmega328微控制器编译一些代码,并希望使用Arduino的库和核心。我正在使用CMake。我已经成功编译了核心库、我的代码对象以及Arduino的库。但是在链接时,出现了以下错误:..."relocation truncated to fit: R_AVR_13_PCREL...

66得票2回答
__cxa_pure_virtual的目的是什么?

在使用avr-gcc编译时,我遇到了以下链接器错误:undefined reference to `__cxa_pure_virtual' 我发现了这份文档,其中声明: __cxa_pure_virtual函数是一个错误处理程序,当调用纯虚函数时将被调用。 如果您正在编写一个有纯虚函数的C+...

224得票20回答
如何对Arduino代码进行单元测试?

我希望能够对我的Arduino代码进行单元测试。理想情况下,我希望能够运行任何测试而不必上传代码到Arduino。有哪些工具或库可以帮助我完成这个任务? 目前正在开发一款Arduino模拟器(Arduemu),这可能会有所帮助,但它似乎还没有准备好供使用。 Atmel的AVR Studio...

9得票1回答
GCC无法报告constexpr lambda调用的错误形式

以下是两个关于未定义行为的测试用例,以IIFE(立即调用的Lambda表达式)形式表示: constexpr auto test3 = []{ int* p{}; { int x{}; p = &x; } retu...

8得票2回答
Avr-GCC与Arduino技术的集成

如何在Ubuntu上使用C语言编程我的Arduino?我听说过avr-gcc,但所有在线教程都非常繁琐,并没有针对带有Arduino引导程序的AVR芯片的选项。有没有人可以帮助我更简单地安装avr-gcc并开始为Arduino使用C语言进行编程?

45得票1回答
crt0.o和crt1.o有什么区别?

最近我一直在尝试调试一些低级的代码,但是我找不到编译器(avr-gcc)的 crt0.S 文件,但我找到了一个crt1.S文件(以及相应的 .o 文件)。 这两个文件有什么区别? crt1 是不是完全不同的东西? 它们似乎都与 '引导' 有关(设置 stack frame 等),但为什么要区分?

7得票3回答
AVR上C语言中使用printf()函数处理浮点数的问题

我最近重新开始学习C语言,并且正在进行一个“学术性”的练习,以再次磨练一些旧技能。我的项目围绕着生成正弦波的相对简单的过程展开。一开始我只是在x86上使用命令行编码(Fedora Core 20),一切都很顺利。然后我将代码迁移到AVR上,我开始学到了很多东西。例如,如何将UART设置为标准输...