Eclipse helios 上編寫arduino程序并進行燒錄
剛接觸arduino,很不錯。
arduino 的ide我一開始使用的是0022版本,它的編輯器實在是難受,沒有提示沒有自動補全,由于一直使用eclipse開發,就找找辦法了。
我的板子是 Arduino UNO..
按照官方的辦法,無果。。。。
按照arduino.tw的辦法,無果...
最終,終于找到一個辦法,在無盡的折騰中,終于搞定了,下面是Arduino UNO的配置步驟:
準備工作:
* Eclipse CPP (我的版本是 eclipse-cpp-helios-SR2-win32)
* AVR Eclipse Plugin (我的版本是 avreclipse-p2-repository-2.3.4.20100807PRD)
* WinAVR (我的版本是 WinAVR-20100110)
* Arduino IDE (我的版本是 arduino-0022)
Step 1 --配置arduino編譯環境:
第一步:
(嫌麻煩,可以直接跳到第二步)
依次裝好winAvr和eclipse-cpp后,把下載到的avr eclipse plugin這個壓縮包解壓,放到 eclipse/dropins這個目錄里,重啟eclipse后,就會有avr的選項了。
首先進入eclipse的屬性設置:

然后在avr的path選項,會像這樣,路徑是你的安裝路徑,如圖,AVR-GCC,GNU make,AVR header files 都是winavr的路徑,自己推算

然后導入這個工程,首先是為了各種gcc 參數的簡化配置,自己從頭來的話,配置很麻煩,直接導入很省事,只要少量更改。其次,這個工程是編譯arduino core這個庫文件,以后編譯arduino工程的時候,就不用手動導入那么多頭文件了。
import導入工程后,要對工程屬性進行一些更改,工程->右鍵->屬性
把target hardware的參數配置成這樣:
MCU type: ATmega328P
MCU Clock Frequency:16000000 (六個〇)

然后設置工程引入的庫文件, 還是在工程的屬性設置里 C/C++ Build -> Setting
將要對 AVR Complier和AVR C++ Complier的Directories設置,目錄就是Arduino IDE下面相關的路徑,請看圖:

兩個路徑設置是相同的

至此,就可以編譯了,點擊 project -> make all ,eclipse應該可以編譯成功,輸出如下:
**** Clean-only build of configuration Release for project Blinky ****
make clean
rm -rf ./main.o Blinky.eep Blinky.hex Blinky.lss ./main.d sizedummy Blinky.elf
**** Build of configuration Release for project Blinky ****
make all
Building file: ../main.cpp
Invoking: AVR C++ Compiler
avr-g++ -I"D:\Program Files\arduino-0022\hardware\arduino\cores\arduino" -Wall -Os -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega328p -DF_CPU=16000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o"main.o" "../main.cpp"
Finished building: ../main.cpp
Building target: Blinky.elf
Invoking: AVR C++ Linker
avr-gcc --cref -s -Os -o"Blinky.elf" ./main.o -lArduinoCore -lm -Wl,-Map,Blinky.map,--cref -L"C:\Users\hang\Desktop\Blinky" -mmcu=atmega328p
Finished building target: Blinky.elf
Invoking: AVR Create Extended Listing
avr-objdump -h -S Blinky.elf >"Blinky.lss"
Finished building: Blinky.lss
Create Flash image (ihex format)
avr-objcopy -R .eeprom -O ihex Blinky.elf "Blinky.hex"
Finished building: Blinky.hex
Create eeprom image (ihex format)
avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex Blinky.elf "Blinky.eep"
Finished building: Blinky.eep
Invoking: Print Size
avr-size --format=avr --mcu=atmega328p Blinky.elf
AVR Memory Usage
----------------
Device: atmega328p
Program: 7594 bytes (23.2% Full)
(.text + .data + .bootloader)
Data: 202 bytes (9.9% Full)
(.data + .bss + .noinit)
Finished building: sizedummy
在工程的 Release目錄下會有一個 libArduinoCore.a 文件生成,這個就是編譯好的庫文件,以后用得著。
第二步:
下載:Blinky.rar
!!!注意,這個工程的main.cpp中,和arduino中的方法雷同,自行更改setup() loop()等等內容,以便以自己方便的方式來測試。
和上面的方法一樣,將他導入eclipse,并把上面生成的 libArduinoCore.a 復制到這個工程中并且覆蓋,然后就是配置編譯參數了,只是更改幾個路徑而已,方法同上。
最后 make all,成功編譯,輸出和上面的差不多,會在release目錄中看到目標文件 Blinky.elf。
剩下就是燒錄了。
Step 2 --配置燒錄環境:
進入eclipse 的屬性設置里面(看step的圖),設置下圖中的參數為你本機相應地址

然后,設置AvrDude的配置文件的路徑,更改為自己的arduinoIDE目錄下,最后就是添加一個AVRDude的配置了:

AVRDude配置參數:其中串口設置為自己的,我的com3,插上板子后,在系統的設別管理器里面就會看到 arduino uno,后面會顯示出是哪個串口

最后,ok,將編譯好后的elf燒錄,點擊這個
自動完成,輸出大致如下:
Launching D:\Program Files\arduino-0022\hardware\tools\avr\bin\avrdude -pm328p -cstk500v1 -Pcom3 -b115200 -F -Uflash:w:Blinky.hex:a "-CD:\Program Files\arduino-0022\hardware\tools\avr\etc\avrdude.conf"
Output:
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e950f
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "Blinky.hex"
avrdude: input file Blinky.hex auto detected as Intel Hex
avrdude: writing flash (7594 bytes):
Writing | ################################################## | 100% 1.23s
avrdude: 7594 bytes of flash written
avrdude: verifying flash memory against Blinky.hex:
avrdude: load data flash data from input file Blinky.hex:
avrdude: input file Blinky.hex auto detected as Intel Hex
avrdude: input file Blinky.hex contains 7594 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.98s
avrdude: verifying ...
avrdude: 7594 bytes of flash verified
avrdude done. Thank you.
avrdude finished
finally:
以后沒寫一個程序,只需復制Blinky這個工程,并更改main.cpp中相關方法內的代碼就行了,很方便,與ArduinoIDE的編輯器比,已經算是享受了。
等發了工資,配個藍牙模塊,慢慢搭建,就可以用Android遙控它了,隨心所欲的干各種geek的那些事了
浙公網安備 33010602011771號