Linux 中的 AVR 汇编器

AVR Assembler in Linux

我正尝试在 Linux 中为 Arduino Uno(Atmel 328p 微处理器)学习 C 语言和汇编语言的 AVR 开发。 我找到了很多关于如何为 Eclipse 安装和设置 AVR 插件的好指南,而且我在构建和上传 C 代码时没有问题。然而,似乎没有任何用于创建汇编程序项目的菜单选项,我似乎也找不到使用 cli avr-as 将我的程序组装成 .hex 文件的正确语法。

你有几个选择。 eclipse我不懂,(直接用vim直接make)不过编译过程应该是一样的。

您可以:

  • 编写一个主要是 C 的项目,内联任何你想要的程序集。这通常是最简单的方法。查看 AVR-GCC Inline Assembler Cookbook.
  • 编写一个完全不使用链接器的纯 ASM 应用程序。例如一个单文件应用程序(或一个直接包含项目其余部分的文件)。您必须告诉您的构建工具如何处理该文件,但它可以像一次调用 avra 或 avr-as 一样简单。您必须确保仔细执行所有低级初始化并为您正在使用的 MCU 构建完整的中断向量 table,否则您可能会出现意外行为。
  • 编写一个混合的 C 和 ASM 应用程序,在两种语言的目标文件之间进行链接。为此,您需要为纯 C 项目做同样的事情,除了您的一些(可能是全部)源文件需要汇编。你必须告诉你的构建工具如何 assemble 它们进入目标文件。在 Makefile 中,这将是编写正确的规则(或者更有可能设置 ${AS} 宏以使用正确的 assembler)。在 Eclipse 中可能有一个项目设置,但是有任何 IDE YMMV。这可能是最难的选择,因为您必须了解编译器的调用约定和 ABI 才能成功执行纯 ASM 代码。