资源简介
atmega64bootload,avr单片机自动升级程序,本程序是通过串口发送升级程序代码到单片机,来实现更新升级单片机自身程序.
代码片段和文件信息
/**********************************************************************************/
//NOTE :
// 函数使用寄存器返回它的值(从 LSB 到 MSB ):
// R30 - 字符型和无符号字符型
// R30 ,R31 - 整型和无符号整型
// R30 ,R31 ,R22 ,R23 - 长整型和无符号长整型
// 寄存器 R0 R1 R22 R23 R24 R25 R26 R27 R30 和 R31 可以在汇编子程序中自由使
// 用。如果在中断过程使用这些寄存器,就必须在进入时保存,返回时恢复
// 编译器使用了其中的 R0 R1 R22 R23 R24 R25
// R26 R27 R28 R29 R30 和 R31。 R2 到 R15 中的一些寄存器可能会用来存放全局位变
// 量。剩下的寄存器会分配给全局字符型变量和全局整型变量。 R16 到 R21 分配给局部字符型变量
// 和局部整型变量
// auto : zzz
/**********************************************************************************/
#asm
.EQU SPMCR = 0x57
#endasm
#pragma warn-
//Flash write or erasure
//write :funtion = 0x05
//erasure: funtion = 0x03
void WritePage (unsigned int adrunsigned char funtion)
{
#asm
; PUSH R18
write_page :
LDS R27SPMCR
SBRC R270
RJMP write_page ;judge state of the current block
LDD R31Y+2
LDD R30Y+1 ;designation address of current block
LD R27Y
STS SPMCRR27 ;argument 2 decides function
SPM ;perform appointed funtion
; POP R18
#endasm
}
//fill the temporary buffer
void FillTempBuffer (unsigned int adrunsigned int Content)
{
#asm
; PUSH R18
filltemp :
LDS R27SPMCR
SBRC R270
RJMP filltemp ;judge state of the current block
LDD R31Y+3
LDD R30Y+2 ;designation address of current block(R30 = ZLR31 = ZH)
LDD R1 Y+1
LD R0 Y ;fill-in data
LDI R270x01
STS SPMCRR27 ;enable the memorizer
SPM
; POP R18
#endasm
}
//read data form memorymaybe it is datalock bits or fuse bits
//cmd = 0 read dataothers express that read lock bits or fuse bitsas 0x09
unsigned int ReadProgramMemory (unsigned int adrunsigned char cmd)
{
#asm
; PUSH R17
; PUSH R18
; PUSH R0
LDD R31Y+2
LDD R30Y+1 ;designation address of current block
LD R27Y
SBRS R270 ;read lockbits or fuse bits?(second argument is 0x09)
STS SPMCRR27
LPM
MOV R26R0
INC R30
LPM
MOV R27R0
MOV R30R27
MOV R31R26
; POP R0
; POP R18
; POP R17
#endasm
}
/*
void WriteLockBits (unsigned char val)
{
#asm
; PUSH R18
write_lock:
LDS R27SPMCR
SBRC R270
RJMP write_lock
LD R0Y
LDI R270x09
STS SPMCRR27
SPM
POP R18
#endasm
} */
unsigned char ReadFlash (unsigned int adr)
{
#asm
LDD R31Y+1
LD R30Y
LPM R30Z
#endasm
}
void EnableRWW (void)
{
#asm
En_RWW:
LDS R27SPMCR
SBRC R270
RJMP En_RWW
LDI R270x11
STS SPMCRR27
SPM
#endasm
}
#pragma warn+
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1176 2005-11-03 23:45 MEGA64LOAD\1.bin
文件 13829 2005-05-19 08:20 MEGA64LOAD\assmbly.asm
文件 2761 2005-11-03 23:51 MEGA64LOAD\assmbly.c~
文件 358 2005-11-03 23:50 MEGA64LOAD\assmbly.h
文件 30 2005-05-19 08:20 MEGA64LOAD\assmbly.inc
文件 283 2005-05-19 08:20 MEGA64LOAD\assmbly.map
文件 875 2005-05-19 08:20 MEGA64LOAD\assmbly.sym
文件 2204 2005-09-22 00:22 MEGA64LOAD\assmbly.txt
文件 147 2005-05-19 08:20 MEGA64LOAD\assmbly.vec
文件 38876 2005-11-06 01:04 MEGA64LOAD\bootload.asm
文件 20477 2005-10-31 21:20 MEGA64LOAD\bootload.cof
文件 0 2005-11-06 01:04 MEGA64LOAD\bootload.eep
文件 3327 2005-11-06 01:04 MEGA64LOAD\bootload.hex
文件 53 2005-11-06 01:04 MEGA64LOAD\bootload.inc
文件 61676 2005-11-06 01:04 MEGA64LOAD\bootload.lst
文件 424 2005-11-06 01:04 MEGA64LOAD\bootload.map
文件 5358 2005-11-06 01:04 MEGA64LOAD\bootload.obj
文件 7644 2005-11-06 01:04 MEGA64LOAD\bootload.rom
文件 3835 2005-11-06 01:04 MEGA64LOAD\bootload.sym
文件 319 2005-11-06 01:04 MEGA64LOAD\bootload.vec
文件 10913 2005-10-31 21:20 MEGA64LOAD\bootload__.c
文件 3403 2005-10-31 21:22 MEGA64LOAD\bootload_cof.aps
文件 3977 2007-12-11 08:59 MEGA64LOAD\BootLoadFor64.prj
文件 0 2007-12-11 08:59 MEGA64LOAD\BootLoadFor64.txt
文件 32880 2005-05-31 10:37 MEGA64LOAD\main.asm
文件 5978 2005-05-31 10:36 MEGA64LOAD\main.c
文件 66 2005-05-31 10:37 MEGA64LOAD\main.inc
文件 280 2005-05-31 10:37 MEGA64LOAD\main.map
文件 2097 2005-05-31 10:37 MEGA64LOAD\main.sym
文件 319 2005-05-31 10:37 MEGA64LOAD\main.vec
............此处省略11个文件信息
- 上一篇:基于51单片机的智能温控器
- 下一篇:二分搜索(算法 代码)
相关资源
- BootLoader和BSP
- 基于S32K144的CANbootloader
- ARM7TDMI-S在嵌入式系统中的Bootloader代码
- STM32的IAP-Bootloader程序
- STM32例程之Bootloader
- segger j-flash
- S32K144的boot可修改普通CAN
- STM32F105RC_U盘升级bootloader.7z
- 任意串口BootLoader程序升级
- S32KCANbootloader上位机及下位机源码
- 6416bootloader.rar
- STM32 BOOTLOADER IAP 自动跳转
- STM32网络升级BootLoader
- TMS320VC5509A(LQFP)Bootloader测试程序
- MPC5744P CAN Bootloader上位机源码
- MPC5744P CAN Bootloader下位机及用户APP
- TI Cortex-M3 BootLoader资料
- 基于ARM嵌入式系统的通用Bootloader的设
- STM32L151_IAP_Bootloader.rar
- DSP28335串口二阶BOOT源码
- rtthread stm32f1xx hal bsp 偏移地址0x4000
- IAP的BootLoader和app都在里面
- STM32 自动更新程序
- stm32 BootLoader简单跳转
- bootload for stm32f103
- stm32f103_IAPbootloader-1.0及用户app修改好
- freescale S12 S12X Bootloader
- 英飞凌 XC2000系列CAN BOOTLOADER 开发代码
- 基于CAN诊断汽车控制器刷新软件的设
- 基于CAPL的CAN控制器Bootloader上位机系统
评论
共有 条评论