linux - Linux 中的 AVR 汇编器

标签 linux eclipse assembly avr

我正在尝试学习 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/

相关文章:

assembly - x86-64 程序集乘以 4

php - 想通过php文件传递bash文件中的参数

linux - Diff CDF V2 文档

eclipse - 在 Eclipse 中从 SVN check out Maven 项目

eclipse - 无需停止和启动即可将 Eclipse Spring MVC 项目部署到 Tomcat

java - 为什么我的 Android MP3 播放器代码不起作用?

c - avr中的内联汇编

assembly - 为什么要避免使用 POPF 来恢复中断标志状态?

linux - 我怎样才能让 bash 阻止从我产生的工作中获取一行标准输出

linux - grep 命令试图获取数值