2015-10-29 110 views
3

我正在嘗試在Linux中學習Arduino Uno(Atmel 328p微處理器)的C和彙編中的AVR開發。 我發現了很多關於如何安裝和設置Eclipse的AVR插件的優秀指南,並且我在構建和上傳C代碼方面沒有任何問題。但是,似乎沒有任何用於創建彙編程序項目的菜單選項,我似乎也無法找到使用cli avr的正確語法 - 將我的程序組裝到.hex文件中。在Linux中的AVR彙編程序

+0

您是否正在嘗試使用gnu彙編程序並鏈接您的程序,就像鏈接C程序一樣? –

回答

1

你有幾個選擇。我不知道日食,(我只是使用vim並直接製作),但編譯過程應該是相同的。

您可以:

  • 寫你想要的任何組件的大多數是C項目,在襯裏。這通常是最簡單的方法。查看AVR-GCC Inline Assembler Cookbook
  • 編寫完全不使用鏈接器的純粹ASM應用程序。例如一個文件應用程序(或一個直接包含項目其餘部分的文件)。您必須告訴構建工具如何處理文件,但它可以像調用avra或avr-as一樣簡單。您必須小心地執行所有低級初始化,併爲您正在使用的MCU構建完整的中斷向量表,否則可能會出現意想不到的行爲。
  • 編寫一個混合的C和ASM應用程序鏈接來自兩種語言的對象文件。要做到這一點,你會爲純C項目做同樣的事情,除了某些(可能全部)源文件需要進行彙編。您必須告訴您的構建工具如何將它們組裝到對象文件中。在Makefile中,這將寫入正確的規則(或者更可能設置$ {AS}宏以使用正確的彙編程序)。在eclipse中可能有一個項目設置,但是對於任何IDE YMMV。這可能是最難的選擇,因爲您必須知道編譯器的調用約定和ABI才能成功執行純粹的ASM代碼。