Bootloader是AVR单片机上最有特色的功能之一。下面就在ATmega328P Xplained mini上开始Bootloader的测试了,当然是AVR通用Bootloader了。
因为AS4中使用avrub已经很方便了,所以就不重复了,这里只介绍AS6中使用avrub的方法。先在AS6中创建新项目,然后将avrub中需要的三个文件复制到项目文件夹下,并删除原来的主程序文
使用过avrub的人都知道,使用avrub主要就是要做好参数配置工作,基本不用修改程序的。先设置一下bootloader的地址,方法和AS4中一样,在项目属性的Memeory Setting中,在Flash segment下添加一行:
这是为了将bootloader设置在0x3C00Word(0x7800Byte)处,也就是Boot区大小是1KW。其它参数就在bootcfg.h中修改了,主要是修改时钟频率、LED引脚、波特率等。
设置完成后保存一下,然后可以编译了。为了验证Bootloader是否在我们需要的位置,可以用avrubd.exe查看一下编译后的HEX文件。下图显示它的确从0x7800Byte处开始的。
下一步就是配置ATmega328P的熔丝位了。这里主要是设置BOOTRST和BOOTSZ两个,其它不用修改。在Device programming中设置好后记得还要program,这样才能设置到芯片中。使用AS自带的编程软件好处就在于如果不小心设置了一些错误而关键的熔丝位,它会提示你。
下一步就是将上面编译好的bootloader程序下载到芯片。然后就是在上位机软件中设置参数和串口,最简单的方法就是直接在选项中导入刚才的bootcfg.h。设置串口时需要注意,必须将DTR选中,不然串口是无法通信的(这是mEDBG要求的)。
最后在打开一个atmega328的例子下载,测试一下。只要没有设置错误,基本都是一次成功,用起来还是很方便的。
因为ATmega328P Xplained mini开发板上没有复位按钮,所以我们还需要准备一个镊子,在需要复位时,将ISP插座的5 6两个脚(RESET和GND)短路一下。
关键字:AVR Bootloader
引用地址:
AVR Bootloader应用介绍
推荐阅读最新更新时间:2024-03-16 14:31
用VMLAB进行AVR单片机硬件/软件协仿真
前言 在单片机应用开发过程中,当源文件的编译成功后,就要进行仿真调试工作。仿真调试可分为两大类--芯片级仿真和代码级仿真。芯片级仿真是指使用仿真软件和ICE硬件工具相配合,在实际硬件上进行仿真调试工作;而代码级仿真则完全在计算机上完成,不需要硬件的参与。两种类型的仿真各有特点,使用的场合不同。本文基于VMLAB,讲述了进行AVR单片机硬件/软件协同仿真的方法。 VMLAB的全称为:VisualMicroLab。它针对于AVR以及ST62系列单片机设计,是一个单片机的虚拟原型(virtualprototype)框架(frame),它可以提供给用户一个真正意义上的虚拟微控制器(MCU)设计实验室。它具有强大的多窗口、多文件的编辑器
[单片机]
ATmega16单片机(AVR)主要特点总结
下面就总结一下AVR单片机ATmega16的主要特点: (注: 括号内有红色 *x* 符号的表示文章下方会有解释/扩展) 1) 采用 RISC 结构的AVR内核单片机. 131 条机器指令, 大多数指令为单个系统时钟周期执行的指令; 32 个 8 位通用工作寄存器; 全静态工作方式(Fully Static Operation). (*A*) 工作在 16 MHz 时具有 16 MIPS 的性能.(注: ATmega16L 系列最大工作频率为 8 MHz); 内部配备有 2 个时钟周期的硬件乘法器. 2)片内自带大容量, 非易失的程序和数据存储器 (*B*) 16KB 在线可编程(ISP, In-Sys
[单片机]
基于ARM的嵌入式系统Bootloader启动流程分析
一. 引言: 对于PC机,其开机后的初始化处理器配置、硬件初始化等操作是由BIOS(Basic Input /Output System)完成的,但对于嵌入式系统来说,出于经济性、价格方面的考虑一般不配置BIOS,因此我们必须自行编写完成这些工作的程序,这就是所需要的开机程序。而在嵌入式系统中,通常并没有像 BIOS 那样的固件程序,启动时用于完成初始化操作的这段代码被称为Bootloader程序,因此整个系统的加载启动任务就完全由Bootloader 来完成。简单地说,通过这段程序,可以初始化硬件设备、建立内存空间的映射图(有的CPU没有内存映射功能如S3C44B0),从而将系统的软硬件环境设定在一个合适的状态,以便为最终调
[单片机]
AVR中如何操作单个IO口
WinAVR中如何操作单个IO口 用PORTA|=(1 7) PORTA|=(1 7) 意思是把00000001左移7位再和porta相或 PORTB |= _BV(n) 和 PORTB &= ~_BV(n) sbi() 可以用的 05版装好后的确不能用 sbi()和cbi()。 仔细看资料后,发现头文件里的确没有这两函数的定义。 发现问题原因后,解决它就不是什么问题了。 方法有无数种。 1. 将下面两行拷到程序中。 #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bi
[单片机]
AVR单片机定时器TIME0普通定时实验程序
/*很简单的问题费了好大的劲,注意中断向量地址和向量号的区别,*/ /*这样的是时钟节拍可以搞到微秒级的,太好了这样对以后搞操作系统是很管用的,节拍直接影响CPU的利用效率*/ /*节拍器越小,时间片就越准确,对于整个系统的统一是绝对有意义的,*/ /*AVR定时器普通定时实验 0415 天津第四项目部宿舍 */ #include iom16v.h #define uchar unsigned char #define uint unsigned int #define set_bit(a,b) a|=(1 b) #define clr_bit(a,b) a&=(1 b) #define get_bit(a,b) a&(
[单片机]
Mouser提供Microchip ATtiny1617系列AVR MCU
贸泽电子(Mouser)近日宣布即日起开始供应Microchip Technology的ATtiny1617微控制器系列。ATtiny1617为Microchip低功率8位AVR微控制器产品组合的其中一个系列,接脚和程序代码均与ATtiny817系列装置兼容,且闪存容量更大。这个8位装置体积轻巧,运作频率最高达20 MHz,提供可自定义的组态与简化流程,适用于电容式触控系统与核心独立周边(CIPs),有助于提高系统的数据传输速率,同时降低整体耗电量。 贸泽电子供应的Microchip ATtiny1617 8位AVR微控制器,具备16KB系统内部可程序闪存、256B EEPROM和2KB的SRAM。这些装置类似于其他的Microc
[半导体设计/制造]
AVR/Arduino定时/计数器、中断入门
在Arduino中,可以使用AnalogWrite来使用硬件产生490Hz/980Hz的pwm波,并可根据参数来设定占空比。不了解这个的同学可以去AnalogWrite学习下,SecretsOfArduinoPWM也是讲了Arduino在avr的定时/计数器上做的封装,我们这里并不讲Arduino相关,而是讲AVR的定时/计数器,如何产生更多PWM波和定时/计数器的中断使用。 AVR Timer/Counter(以下统称Timer) 以ATmega358p为例,其内部拥有一个16位计时器,两个8位计时器,下图则为16位计时器的大致图解: 对于没有接触过avr内部的Arduino同学来说,这张图看不出来任何意思,别急,这些都是AV
[单片机]
基于AVR微控制器的电力机车智能辅保系统的实现
摘要: 给出了以AVR微控制器为核心的电力机车智能辅保系统的设计方案,并介绍了系统硬件及软件的具体实现方法。
关键词: 智能辅保系统 AVR微控制器 硬件 软件
电气机车辅助系统中有劈相机、空气压缩机、通风机及制动风机等各种类型的电机。运行中为了防止出现短路、过流等异常情况而烧毁电机,通常配置辅助保护系统,起到及时监测电机故障并加以处理的作用。目前电力机车上安装的辅保系统都是模拟电路装置,系统硬件复杂,又不方便司机使用和维修。因此,设计一种实时性高、性能可靠的智能辅保系统替代原有的模拟电路装置势在必行。本文将介绍笔者开发的用于韶山型电力机车的智能辅助保护系统的设计及实现。
1 系统的主要功能
[嵌入式]