操作系统:ubuntu 13.04(32 bits)
AVR单片机:ATmega644pa
首先要清晰,咱们在Ubuntu(或许Linux)上开发AVR单片机应包含两大部分:
程序编译、程序下载。
环境安置:
程序编译运用Linux下的编译器——avr-gcc,经过以下指令装置:
sudo apt-get install gcc-avr #这是avr的穿插编译器
sudo apt-get install avr-libc #这是编译要用的库
别的还有一个东西,现在感觉没什么用,先记下来
sudo apt-get install gdb-avr #gdb反向调试东西,反汇编
程序的下载运用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
第三步:下载程序到单片机
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
别的,有时咱们还需要读取或许写入单片机的熔丝位(熔丝高位:hfuse;熔丝低位:lfuse;熔丝扩展位: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