avr-gcc相关内容

如何正确链接符号

我想这是这个延续问题。 我编译了我的中间bootloader库并验证了它的正常工作,现在是时候写一些应用程序代码了。 我能够生成使用 $(OBJCOPY)生成的引导加载程序生成的 .hex 文件中的符号列表--swapcard --strip-symbol = main --strip-symbol = “_ *”$(TARGET).elf $(TARGET).syms ,这给了我 boo ..
发布时间:2018-04-21 10:40:00 其他开发

AVR-GCC:错误:垃圾在行尾

我的堆栈init行有问题,因为avr-gcc返回 LED_Blink.asm:10:错误:行末垃圾 行: ldi r17,低(RAMEND) ldi r17,高(RAMEND) 我是困惑。我已经定义了RAMEND。我用这个命令使用了avr-gcc: avr-gcc -x汇编器-mmcu = atmega328p LED_Blink.asm ..
发布时间:2018-04-20 17:33:56 其他开发

我如何防止复制传递给avr-gcc C ++构造函数的字符串的需要?

在 ArduinoUnit 单元测试库中,我提供了一种为TestSuite提供名称的机制。图书馆的用户可以写出以下内容: TestSuite套件(“我的测试套件”); // ... suite.run(); //这里使用套件名称 这是预期的用法 - TestSuite的名称是一个字符串文字。然而,为了防止难以找到的错误,我觉得有必要满足不同的用法,例如: ..
发布时间:2017-08-15 21:04:15 C/C++开发

我如何单元测试Arduino代码?

我想能够单元测试我的Arduino代码。理想情况下,我可以运行任何测试,而无需将代码上传到Arduino。什么工具或图书馆可以帮助我? 有一个 Arduino模拟器在开发中,这可能是有用的,但它似乎还没有准备好使用。 AVR Studio 包含一个可以有用的芯片模拟器,但是我可以'看看我如何与Arduino IDE结合使用。 解决方案 在没有任何预先存在的单元测试框架对于Ard ..
发布时间:2017-08-15 19:44:41 HTML/CSS

将二进制与存储器中特定位置的功能/数据链接

我目前正在为ATMega编写一个中间内存引导程序。 我想放置一些常用的功能和数据在内存中的特定位置,以便: 引导加载程序部分的有限大小无法克服 库函数,驱动程序等不会被应用程序部分复制,从而浪费空间 为了说明的目的,所需的内存布局如下: 在这个线程在avrfreaks,我到了我能够移动所有代码(在我的bootloader +库开发环境 - 应用程序w不能在单独的项目中开发 ..
发布时间:2017-08-15 19:44:28 HTML/CSS

我可以在C ++中实现Factory Method模式,而不使用新的?

我正在嵌入式环境(Arduino / AVR ATMega328)工作,并希望在C ++中实现Factory Method模式。但是,我使用的编译器(avr-gcc)不支持新的关键字。有没有使用新实现此模式的方法? 解决方案 由于AVR编译器基于gcc编译器,因此很可能支持新的关键字。你到底发生了什么错误?我猜这是一个链接/编译器错误,沿着一个未定义的函数,即operator new。新操 ..
发布时间:2017-08-15 19:41:10 C/C++开发

有没有可用于8位嵌入式系统的flex / bison的替代品?

我正在使用avr-gcc工具链,在C语言中使用简单的BASIC类似语言编写一个小型解释器作为AVR微控制器。但是,我想知道是否有任何开源工具可以帮助我编写词法分析器和解析器。 如果我写这个在我的Linux上运行盒子里,我可以用flex / bison。现在我把自己限制在一个8位的平台上,我必须手动完成所有的操作。 解决方案 已经为 ATmega328p 。这个芯片有32k ROM,只 ..
发布时间:2017-08-15 19:26:12 HTML/CSS

如何可视化AVR程序的内存(SRAM)使用情况?

我在AVR微控制器(ATMega328P)上运行的C程序中遇到问题。我相信这是由于堆栈/堆碰撞,但我想能够确认这一点。 有没有办法可以通过堆栈和堆可视化SRAM的使用情况? 注意:使用avr-gcc编译程序并使用avr-libc。 更新:我遇到的实际问题是malloc实现失败(返回 NULL )。所有 malloc ing发生在启动时,所有免费 ing发生在应用程序的末尾(实际上 ..
发布时间:2017-04-17 21:20:54 开发方法

GCC链接/符号名称与C ++和汇编程序文件

我在编译和链接用汇编程序编写的库和我在C ++中的程序代码时遇到了一些麻烦。在我的情况下,它是为使用avr-gcc套件的AVR微控制器,但我想这个问题将适用于GCC一般。 我可以从C ++源码和程序集中得到.o文件,但链接它们会产生错误: > avr-gcc -mmcu = attiny84 -lm -o obj \AvrTest.elf obj \Main.o obj \i2cmas ..
发布时间:2016-10-20 23:26:03 C/C++开发

我可以在C ++中实现工厂方法模式而不使用新的?

我在嵌入式环境(Arduino / AVR ATMega328)中工作,想要在C ++中实现Factory Method模式。但是,我使用的编译器(avr-gcc)不支持 new 关键字。是否有一种实现此模式的方法,而不使用 new ? 解决方案由于AVR编译器基于gcc编译器,因此很可能支持new关键字。你得到的错误是什么。我猜这是一个链接/编译器错误沿未定义的函数,即运算符new。新操作 ..
发布时间:2016-10-14 20:01:11 C/C++开发

多重定义 - GCC虚假错误

我有一个头文件 lcd.h用于与此(缩短): 的#pragma一次 // ... 常量uint8_t有LCD_ROW_ADDR [] = {0×00,0X40,0x14的,0x54}; // ...其他的原型和宏... 和文件可见的lcd.c ,其中该变量用于:的#include< stdbool.h> #包括LT&;&stdint.h GT; // ...#包括“lcd.h用于 ..
发布时间:2016-08-24 14:09:24 C/C++

preprocessor:令牌之前缺少二元运算符

我试图建立在XMEGA微控制器的USART模块,并绊倒了错误,我找不到。为清楚起见,我给你完整的code。所以没有在这个头文件丢失。 ( F_CPU 在主文件中定义) 的#ifndef USART_H_ #定义USART_H_#包括LT&; AVR / io.h>#定义USART_BAUDRATE 4800 #定义USART_BSCALE -3#如果USART_BSCALE< 0 ..
发布时间:2016-08-24 14:08:58 C/C++

PID反馈放大器&;位置控制器与直流电动机/ EN codeR

我有一个很难得到双方PID反馈和定位在同一时间运行。 我认为计算RPM是: 启动一个定时器和使用中断数连接codeR脉冲。 使用一些简单的数学转换为RPM。 重新使用的变量并重新开始。 我可以计算RPM,但后来我只能计算后打电话给我的PID控制器(但长我想等获得良好的分辨率。)这将导致非常混乱code。是否有一个更简单的方法还是我丢失的东西? 信息关于我的应用程序: 我编程到 ..
发布时间:2016-08-23 11:50:53 C/C++

未定义参考AVR-GCC

我的main.c是如下 的#include< AVR / io.h> #包括LT&; AVR / interrupt.h> #包括LT&; UTIL / delay.h> #包括LT&;&string.h中GT; 的#include“main.h” #包括“globle.h” #包括“lcd.h用于”诠释的main(){... ... ...lcdInit(将0xC0); ..
发布时间:2016-08-23 11:43:26 C/C++

更改C全局变量

我正在一个AVR芯片上的C程序。每当串行信号的一声,它运行串行中断ISR(USART_RX_vect)。在这种方法中,应该打开更改 = 1; 。然后在我的主,而循环,应该清除LCD,并显示它,然后设置变化= 0 试。 这是阻止它继续做calulations,并在LCD上显示结果一分钟一百万次。 然而,当中断方法改变改变变量为1,它似乎并没有改变它“全球”,并在主要方法总是0 .. 有在这儿有 ..
发布时间:2016-08-23 11:29:49 C/C++

中的crt0.o和crt1.o - 有什么区别?

最近,我一直在试图调试一些低层次的工作,我无法找到编译器(AVR-GCC)的crt0.s中,但我没有找到一个crt1.S(以及相应的.o文件相同) 什么是这两个文件之间的差异?是CRT1完全不同的东西还是什么?他们都似乎有东西引导做的(设置堆栈帧等等),但为什么区别? 解决方案 这两个信息crt0 / CRT1做同样的事情,基本上是调用之前需要什么样的main()的(如堆栈初始化,设置的 ..
发布时间:2016-08-19 15:49:12 C/C++

在一个字节转换成两个ASCII十六进制字符(ASCII两个字节)

我要两个ASCII字节转换成一个十六进制字节。 例如。 的0x30 0x43中= GT;的0x0C,0x34 =的0x46 GT&; 0x4F ... 的ASCII字节是 0 和 9 或之间的字母A之间的数字。 和˚F(仅大写),所以之间的的0x30 ... 0x39 和×41 ... 0×46 我知道如何“构建” 0x4F 与数字 0x34 和 0×46: 0x4F = 0x34 *为0 ..
发布时间:2016-08-18 15:00:54 C/C++

如何从优化了忙等循环prevent GCC?

我想写爱特梅尔AVR微控制器是C code固件。我将使用GCC编译它。另外,我想启用编译器优化( -Os 或 -O2 ),因为我看不出有什么理由不启用他们,他们可能会产生更好的装配方式比手动装配写速度更快。 不过,我想一小块code的未优化。我想通过一段时间的延迟函数的执行,因此我想写一个什么都不做只是循环浪费一些时间。没有必要precise,只是等待一段时间。 / *如何不优化这一点,同时 ..
发布时间:2016-08-17 21:35:15 C/C++

大会code使用AVR-GCC switch语句

嗨,我无法理解大会code编译器为以下开关statemet省略。它比一般的组装code我使用看到不同的gcc等。 开关(INSTR){ OP_NOP操作码的情况下: 打破; 案例OP_BIPUSH: stack_push(arg0.z.bh); pc_inc = 2;突破 } 大会code为上述C code:开关(INSTR){ 00001482:8529 LDD R1 ..
发布时间:2016-07-18 21:13:10 .NET Framework