AVR Assembler in Linux
我正在尝试学习Linux中Arduino Uno(Atmel 328p微处理器)的C语言和汇编语言中的AVR开发。
我已经找到了许多有关如何为Eclipse安装和设置AVR插件的很好的指南,并且我对构建和上传C代码没有任何疑问。但是,似乎没有用于创建汇编程序项目的任何菜单选项,我似乎也找不到使用cli avr的正确语法,就像将程序汇编到.hex文件中一样。
您有两种选择。我不了解eclipse,(我只是使用vim并直接进行make),但是编译过程应该是相同的。
您可以:
- 编写一个大部分为C的项目,内联所需的任何程序集。这通常是最简单的方法。查阅《 AVR-GCC内联汇编器食谱》。
- 编写一个完全不使用链接器的纯ASM应用程序。例如一个文件的应用程序(或一个直接包含项目其余部分的文件)。您必须告诉您的构建工具处理文件的方法,但是它可以像一次调用avra或avr-as一样简单。您必须确保仔细进行所有的低层初始化,并为正在使用的MCU建立完整的中断向量表,否则您可能会遇到意想不到的行为。
- 编写两种语言的目标文件之间链接的C和ASM混合应用程序。为此,您将执行与纯C项目相同的操作,不同之处在于某些(也许是全部)源文件需要汇编。您必须告诉您的构建工具如何将它们组装到目标文件中。在Makefile中,这将编写正确的规则(或更可能是设置$ {AS}宏以使用正确的汇编器)。在eclipse中,可能有一个项目设置,但是使用任何IDE YMMV。这可能是最困难的选择,因为您必须知道编译器的调用约定和ABI,才能成功执行纯ASM代码。