我正在尝试学习 C 语言的 AVR 开发和 Linux 中 Arduino Uno(Atmel 328p 微处理器)的汇编语言。 我找到了很多关于如何为 Eclipse 安装和设置 AVR 插件的好指南,而且我在构建和上传 C 代码时没有问题。然而,似乎没有任何用于创建汇编程序项目的菜单选项,我似乎也找不到使用 cli avr-as 将我的程序组装成 .hex 文件的正确语法。
最佳答案
您有几个选择。 eclipse我不懂,(我只是用vim,直接make)不过编译过程应该是一样的。
您可以:
- 编写一个以 C 语言为主的项目,内联您想要的任何程序集。这通常是最简单的方法。查看 AVR-GCC Inline Assembler Cookbook .
- 编写一个完全不使用链接器的纯 ASM 应用程序。例如一个单文件应用程序(或一个直接包含项目其余部分的文件)。您必须告诉您的构建工具如何处理该文件,但它可以像一次调用 avra 或 avr-as 一样简单。您必须确保仔细执行所有低级初始化并为您使用的 MCU 构建完整的中断向量表,否则您可能会遇到意外行为。
- 编写一个混合的 C 和 ASM 应用程序,在来自两种语言的目标文件之间进行链接。为此,您需要为纯 C 项目做同样的事情,除了您的一些(可能是全部)源文件需要汇编。您必须告诉您的构建工具如何将它们组装到目标文件中。在 Makefile 中,这将是编写正确的规则(或者更可能设置 ${AS} 宏以使用正确的汇编程序)。在 Eclipse 中可能有一个项目设置,但可以使用任何 IDE YMMV。这可能是最困难的选择,因为您必须了解编译器的调用约定和 ABI 才能成功执行纯 ASM 代码。
关于linux - Linux 中的 AVR 汇编器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33412135/