东华小虎 发表于 2014-4-1 23:22:36

求助自制arduino烧写bootloader有困难

自己用ATmega16A焊了一块板子,用了这位兄台的bootloader
(http://www.geek-workshop.com/forum.php?mod=viewthread&tid=3017戳这里)

可能是因为我的usbasp里面的代码不是公版的,直接用ide烧bootloader会报错:

像这样
avrdude: warning: cannot set sck period. please check for usbasp firmware update.

我确定板子焊接的没什么问题,我用progisp写个程序啊写个熔丝位啊都没问题。
之前没有接触过arduino,也没用过bootloader。用过atmel studio 直接用C写程序。


按我目前的理解,bootloader好像就是引导一下从串口进来的代码,完了往芯片上写。是这个意思吧?

那我能不能直接用progisp把bootloader的hex烧进去呢?


求大神帮助

pathletboy 发表于 2014-4-1 23:35:35

本帖最后由 pathletboy 于 2014-4-1 23:39 编辑

bootloader要通过烧写器写入,不能通过串口了。
另确认晶振,你外接16M晶振了么?片内的是8M。

东华小虎 发表于 2014-4-1 23:40:32

pathletboy 发表于 2014-4-1 23:35 static/image/common/back.gif
bootloader要通过烧写器写入,不能通过串口了。
另确认晶振,你外接16M晶振了么?片内的是8M。

跟晶振没关系,我用的11.0592的

pathletboy 发表于 2014-4-1 23:43:55

东华小虎 发表于 2014-4-1 23:40 static/image/common/back.gif
跟晶振没关系,我用的11.0592的

串口通讯和晶振有关,bootloader编译时候要在makefile里设置晶振,你用了人家编译的16M版本,完全可以用烧写器写入片内,但是你通过arduino写程序是通过bootloader里的串口通讯的,你波特率都不对,肯定无法正常写入。

东华小虎 发表于 2014-4-1 23:46:31

pathletboy 发表于 2014-4-1 23:43 static/image/common/back.gif
串口通讯和晶振有关,bootloader编译时候要在makefile里设置晶振,你用了人家编译的16M版本,完全可以用烧 ...

嗯 是的。就是我现在连bootloader都没写进去呢。。。。。我就想知道直接用软件写行不行,好像还得自己把bootloader重新修改编译一下

pathletboy 发表于 2014-4-1 23:49:45

东华小虎 发表于 2014-4-1 23:46 static/image/common/back.gif
嗯 是的。就是我现在连bootloader都没写进去呢。。。。。我就想知道直接用软件写行不行,好像还得自己把b ...

设置好熔丝位,烧写器写入BOOTLOADER,晶振设置正确的话没问题的。

东华小虎 发表于 2014-4-1 23:51:39

pathletboy 发表于 2014-4-1 23:43 static/image/common/back.gif
串口通讯和晶振有关,bootloader编译时候要在makefile里设置晶振,你用了人家编译的16M版本,完全可以用烧 ...

而且吧,我很想知道这个bootloader到底是在什么时候编译的,用ide烧的时候编译的还是怎么样?还有那个boards配置文件里面的波特率又是给谁的?或者说是给ide的?所以在这里和bootloader统一么?

pathletboy 发表于 2014-4-1 23:59:56

C:\Program Files\Arduino\hardware\arduino\bootloaders\atmega8
你看下这个目录下的makefile
DEFS       = -DF_CPU=16000000 -DBAUD_RATE=19200
这个就是用来设置bootloader串口通讯的波特率,他依据F_CPU的值产生19200的波特率。如果编译的16M的版本,而你的晶振不是16M,那么产生出的波特率将不会是19200。
这个是mega8的bootloader,在这个版本上修改下就能make出mega16的bootloader来。
页: [1]
查看完整版本: 求助自制arduino烧写bootloader有困难