历史上的今天
返回首页

历史上的今天

今天是: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 $@

推荐阅读

史海拾趣

FCI / Amphenol公司的发展小趣事

随着公司规模的扩大和市场的拓展,Amphenol公司开始实施全球扩张和多元化战略。公司不仅在美国本土设立了多个生产基地,还在欧洲、亚洲等地建立了分公司和研发中心。此外,Amphenol公司还积极涉足电子连接器等其他领域,进一步丰富了公司的产品线。这些举措不仅增强了公司的市场竞争力,也为公司的长期发展奠定了坚实的基础。

Electro-Optical Systems Inc公司的发展小趣事

EOS公司成立于1983年,创始人是一群热衷于红外技术的专家。他们深知红外探测器在军事、科研和工业领域的重要性,于是决定投身于这一领域。初创时期,EOS面临着资金短缺、技术难度大等挑战,但团队成员凭借着对技术的执着和对市场的敏锐洞察,逐步攻克难关,成功研制出第一批红外探测器产品。

Genesis Microchip公司的发展小趣事

在20世纪中期,GI作为一家新兴的电子设备制造商,以其对新兴技术的敏锐洞察力和创新精神而崭露头角。公司创始人意识到半导体技术的巨大潜力,决定投入大量资源进行研发。通过不懈努力,GI成功推出了多款基于半导体技术的创新产品,如早期的晶体管收音机和电视机,这些产品不仅在当时市场上引起了轰动,也为公司后续的快速发展奠定了坚实基础。这一阶段的成功,标志着GI在电子行业技术创新的道路上迈出了坚实的一步。

Filtran Ltd公司的发展小趣事

面对日益严峻的环保压力,Filtran Ltd积极响应可持续发展号召,将环保理念融入产品设计中。公司研发出了一系列绿色滤波器产品,采用可回收材料制造,并在生产过程中减少能源消耗和废弃物排放。这些环保产品不仅满足了市场对高性能滤波器的需求,还赢得了客户的广泛赞誉和信任。Filtran Ltd因此成为了电子行业环保实践的典范。

Amphenol Aerospace公司的发展小趣事

为了寻找新的增长点,Filtran Ltd开始探索跨界合作的可能性。公司与一家领先的物联网解决方案提供商建立了战略合作关系,共同开发面向智能家居市场的无线连接模块。这一合作不仅将Filtran Ltd的滤波器技术应用于新的领域,还为公司带来了全新的市场机遇。通过跨界合作,Filtran Ltd成功实现了从单一产品供应商向综合解决方案提供商的转变。

联捷(Elinker)公司的发展小趣事

近年来,随着人工智能和物联网技术的快速发展,电子行业迎来了转型升级的机遇。联捷(Elinker)紧跟时代潮流,积极推进智能制造和数字化转型。公司引进了先进的自动化生产线和智能化设备,提高了生产效率和产品质量。同时,公司还加大了对人工智能和物联网技术的研发力度,推出了一系列具有创新性的智能电子产品。

问答坊 | AI 解惑

通信工程的管理

工程实施控制管理流程 随着信息行业腾飞猛进的发展,各个行业对通讯行业服务的依赖性日益增具,满足客户越来越高的要求是对我们严峻的考验。通信建设管理在通信领域也就是一个至关重要的环节,如果由于那一个步伐拖延受阻,影响的将是大面 ...…

查看全部问答>

如何使用C语言开发DSP

如何使用C语言开发DSP…

查看全部问答>

求助:c51串行通讯丢数据

c51和电脑通讯用rs232通讯 但是总是在通讯了几十次之后会出现数据丢数的情况 单片机收的数据不全 我PC上的软件是显示已经发送数据过去了 问题出在哪呢?…

查看全部问答>

【F.H.】LM2576电源翻转电路(稳定版)(工作原理在protel图里)

3A正压转负压电路.ddb 主要是为把+5V电压 转换出一个-5V电压用 采用 LM2576-ADJ 3A输出可调电源芯片制作,开关频率50KHZ 该电路的典型应用是降压,因为是斩波式降压,所以效率比较高能达到80% 输入电压5V~40V,输出1.2V~37V 代替DCDC模块 ...…

查看全部问答>

基于FPGA的音频采集系统

基于红色飓风 Xilinx 3S400 开发平台的设计文档. 欢迎下载.…

查看全部问答>

汽车CAN数据传输系统的原理及故障实例

(1)什么是数据总线     一辆汽车不管有多少块电控单元,不管信息容量有多大,每块电控单元都只需引出两条线共同接在两个节点上,这两条导线就称作数据总线。以前各电控单元之间好比有许多人骑着自行车来来往往,现在是这些人乘坐公共汽 ...…

查看全部问答>

GPRS模块发送文本文件?

怎么用GPRS模块发送文本文件到智能手机?(由于是采集的数据太多,用短信好像很烦哦)彩信协议可不可以直接发送这个txt文件呢?(AT命令好像只有图片的)请教各位具体at命令,或者是其他方法?…

查看全部问答>

高分求wifi驱动开发资料

如题!有做过wifi驱动开发的大虾们么,给些资料学习学习!有的话发到邮箱里!小弟不胜感谢!…

查看全部问答>

【求助】这个错误是什么意思,有谁遇到过吗?

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今天放出了谷歌眼镜的开箱组图和视频。这款设备或许还要等上几 ...…

查看全部问答>