新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Ubuntu上AVR單片機(jī)開發(fā)環(huán)境設(shè)置

Ubuntu上AVR單片機(jī)開發(fā)環(huán)境設(shè)置

作者: 時間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
操作系統(tǒng):ubuntu 13.04(32 bits)

AVR單片機(jī):ATmega644pa

本文引用地址:http://butianyuan.cn/article/201611/318405.htm

首先要明確,我們在Ubuntu(或者Linux)上開發(fā)AVR單片機(jī)應(yīng)包括兩大部分:

程序編譯、程序下載。

環(huán)境布置:

程序編譯使用Linux下的編譯器——avr-gcc,通過以下指令安裝:
sudo apt-get install gcc-avr   #這是avr的交叉編譯器

sudo apt-get install avr-libc  #這是編譯要用的庫

另外還有一個工具,目前感覺沒什么用,先記下來
sudo apt-get install gdb-avr   #gdb反向調(diào)試工具,反匯編

程序的下載使用avrdude,安裝命令:

sudo apt-get install avrdude



程序的編譯和下載步驟

第一步:編譯程序

avr-gcc -mmcu=atmega644p -Wall -Os -o main.o main.c

第二步:到HEX文件里面


avr-objcopy -j .text -j .data -O ihex  main.o main.hex

至于這一步到底做了什么,我也只知道大概是把 .o 文件中的特定部分(例如 .text 和 .data段)

到 .hex 文件中。

詳見 avr-objcopy --help 和 readelf -a main.o

第三步:下載程序到單片機(jī)


sudo avrdude -p m644p -c usbasp -e -U flash:w:main.hex


其中
-p 表示選擇芯片,例如m644p
-c 選擇下載器,例如usbasp
-e 表示燒錄前清空
-U 表示存儲器操作類型,使用方式:-U memtype:op:filename[:format]

詳見 man avrdude

另外,有時我們還需要讀取或者寫入單片機(jī)的熔絲位(熔絲高位:hfuse;熔絲低位:lfuse;熔絲擴(kuò)展位:efuse)

可以通過以下命令得到

讀取熔絲高位

sudo avrdude -p m644p -c usbasp -e -U hfuse:r:hfuse.hex:h

寫熔絲位:

sudo avrdude -p m644p -c usbasp -e -U hfuse:w:0xde:m


評論


技術(shù)專區(qū)

關(guān)閉