历史上的今天
今天是:2025年03月31日(星期一)
2020年03月31日 | 建立linux下avr单片机开发环境
2020-03-31 来源:eefocus
有一块ATmega128开发板,自从用了ubuntu后就开始吃灰了。其实linux进行avr单片机开发还是很方便的,就跟嵌入式一样,只是将编译器由arm-linux-gcc改为avr-gcc.
主要参考:apt-blog.net/developing_avr_under_linux
环境:ubuntu13.04
一、安装avrdude
sudo apt-get install avrdude
这样USBasp就被linux所支持了。
二、安装编译器:
sudo apt-get install gcc-avr binutils-avr avr-libc
这样就可以了,开始linux下avr之旅吧
编译程序命令:
avr-gcc -mmcu=atmega128 -Wall -Os -o led.o led.c
-mmcu即avr型号。
转化为hex
avr-objcopy -j .text -j .data -O ihex led.o led.hex
.data主要用于存放数据;
三、烧写程序:
sudo avrdude -p m128 -c usbasp -e -U flash:w:led.hex
m128即我的atmega128
linux下程序开发比较好的思想是写Makefile
放个例子:
引自:omegav.no/wiki/index.php/AVR_on_linux#Makefile_example
###################################
# Makefile, for AVR Programming
PROJECT =
# Target name:
TARGET =
# Target type
MCU = atmega128
PROGRAMMER = usbasp
F_CPU = 16000000UL
SRC =
OBJ = $(SRC:.c=.o)
# Compiler / Linker flags:
CFLAGS = -mmcu=$(MCU) -Wall -Os -std=gnu99 -D F_CPU=$(F_CPU) -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
LDFLAGS = -mmcu=$(MCU) -Wl,-Map=$(TARGET).map
###################################
# Makerules:
.PHONY: compile flash clean
compile:$(TARGET).hex $(TARGET).eep $(TARGET).lss
flash: compile
avrdude -c $(PROGRAMMER) -P usb -p $(MCU) -U flash:w:$(TARGET).hex
# sleep 2
# avrdude -c $(PROGRAMMER) -P usb -p $(MCU) -U eeprom:w:$(TARGET).eep
clean:
rm -f $(OBJ) $(TARGET).*
###################################
# Psudorules:
%.eep: %.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex $< $@
%.hex: %.elf
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature $< $@
%.lss: %.elf
avr-objdump -h -S $< > $@
%.elf: $(OBJ)
avr-gcc $^ $(LDFLAGS) -o $@
%.o : %.c
avr-gcc $(CFLAGS) -c $< -o $@
史海拾趣
|
c51和电脑通讯用rs232通讯 但是总是在通讯了几十次之后会出现数据丢数的情况 单片机收的数据不全 我PC上的软件是显示已经发送数据过去了 问题出在哪呢?… 查看全部问答> |
|
【F.H.】LM2576电源翻转电路(稳定版)(工作原理在protel图里) 3A正压转负压电路.ddb 主要是为把+5V电压 转换出一个-5V电压用 采用 LM2576-ADJ 3A输出可调电源芯片制作,开关频率50KHZ 该电路的典型应用是降压,因为是斩波式降压,所以效率比较高能达到80% 输入电压5V~40V,输出1.2V~37V 代替DCDC模块 ...… 查看全部问答> |
|
(1)什么是数据总线 一辆汽车不管有多少块电控单元,不管信息容量有多大,每块电控单元都只需引出两条线共同接在两个节点上,这两条导线就称作数据总线。以前各电控单元之间好比有许多人骑着自行车来来往往,现在是这些人乘坐公共汽 ...… 查看全部问答> |
|
怎么用GPRS模块发送文本文件到智能手机?(由于是采集的数据太多,用短信好像很烦哦)彩信协议可不可以直接发送这个txt文件呢?(AT命令好像只有图片的)请教各位具体at命令,或者是其他方法?… 查看全部问答> |
|
Error[e16]: Segment INTVEC (size: 0x20 align: 0x1) is too long for segment definition. At least 0x12 more bytes needed. The pro××em occurred while processing the segment placement command "-Z(CONST)INTVEC=FFE0-FFFF", w ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 20:04 编辑 北京时间4月17日下午消息,随着谷歌眼镜开始向开发者发货,这款产品的开箱照片和视频也陆续在网上流传开来。科技博客Androidos.in今天放出了谷歌眼镜的开箱组图和视频。这款设备或许还要等上几 ...… 查看全部问答> |




