boot.h File Reference


Defines

#define _AVR_BOOT_H_ 1
#define BOOTLOADER_SECTION __attribute__ ((section (".bootloader")))
#define __COMMON_ASB RWWSB
#define __COMMON_ASRE RWWSRE
#define BLB12 5
#define BLB11 4
#define BLB02 3
#define BLB01 2
#define boot_spm_interrupt_enable() (__SPM_REG |= (uint8_t)_BV(SPMIE))
#define boot_spm_interrupt_disable() (__SPM_REG &= (uint8_t)~_BV(SPMIE))
#define boot_is_spm_interrupt() (__SPM_REG & (uint8_t)_BV(SPMIE))
#define boot_rww_busy() (__SPM_REG & (uint8_t)_BV(__COMMON_ASB))
#define boot_spm_busy() (__SPM_REG & (uint8_t)_BV(__SPM_ENABLE))
#define boot_spm_busy_wait() do{}while(boot_spm_busy())
#define __BOOT_PAGE_ERASE (_BV(__SPM_ENABLE) | _BV(PGERS))
#define __BOOT_PAGE_WRITE (_BV(__SPM_ENABLE) | _BV(PGWRT))
#define __BOOT_PAGE_FILL _BV(__SPM_ENABLE)
#define __BOOT_RWW_ENABLE (_BV(__SPM_ENABLE) | _BV(__COMMON_ASRE))
#define __BOOT_LOCK_BITS_SET (_BV(__SPM_ENABLE) | _BV(BLBSET))
#define __boot_page_fill_normal(address, data)
#define __boot_page_fill_alternate(address, data)
#define __boot_page_fill_extended(address, data)
#define __boot_page_erase_normal(address)
#define __boot_page_erase_alternate(address)
#define __boot_page_erase_extended(address)
#define __boot_page_write_normal(address)
#define __boot_page_write_alternate(address)
#define __boot_page_write_extended(address)
#define __boot_rww_enable()
#define __boot_rww_enable_alternate()
#define __boot_lock_bits_set(lock_bits)
#define __boot_lock_bits_set_alternate(lock_bits)
#define GET_LOW_FUSE_BITS (0x0000)
#define GET_LOCK_BITS (0x0001)
#define GET_EXTENDED_FUSE_BITS (0x0002)
#define GET_HIGH_FUSE_BITS (0x0003)
#define boot_lock_fuse_bits_get(address)
#define __BOOT_SIGROW_READ (_BV(__SPM_ENABLE) | _BV(SIGRD))
#define boot_page_fill(address, data) __boot_page_fill_normal(address, data)
#define boot_page_erase(address) __boot_page_erase_normal(address)
#define boot_page_write(address) __boot_page_write_normal(address)
#define boot_rww_enable() __boot_rww_enable()
#define boot_lock_bits_set(lock_bits) __boot_lock_bits_set(lock_bits)
#define boot_page_fill_safe(address, data)
#define boot_page_erase_safe(address)
#define boot_page_write_safe(address)
#define boot_lock_bits_set_safe(lock_bits)

Detailed Description


Define Documentation

#define __boot_lock_bits_set ( lock_bits )

Value:

(__extension__({ \
 uint8_t value = (uint8_t)(~(lock_bits)); \
 __asm__ __volatile__ \
 ( \
 "ldi r30, 1\n\t" \
 "ldi r31, 0\n\t" \
 "mov r0, %2\n\t" \
 "sts %0, %1\n\t" \
 "spm\n\t" \
 : \
 : "i" (_SFR_MEM_ADDR(__SPM_REG)), \
 "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \
 "r" (value) \
 : "r0", "r30", "r31" \
 ); \
}))

#define __boot_lock_bits_set_alternate ( lock_bits )

Value:

(__extension__({ \
 uint8_t value = (uint8_t)(~(lock_bits)); \
 __asm__ __volatile__ \
 ( \
 "ldi r30, 1\n\t" \
 "ldi r31, 0\n\t" \
 "mov r0, %2\n\t" \
 "sts %0, %1\n\t" \
 "spm\n\t" \
 ".word 0xffff\n\t" \
 "nop\n\t" \
 : \
 : "i" (_SFR_MEM_ADDR(__SPM_REG)), \
 "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \
 "r" (value) \
 : "r0", "r30", "r31" \
 ); \
}))

#define __boot_page_erase_alternate ( address )

Value:

(__extension__({ \
 __asm__ __volatile__ \
 ( \
 "sts %0, %1\n\t" \
 "spm\n\t" \
 ".word 0xffff\n\t" \
 "nop\n\t" \
 : \
 : "i" (_SFR_MEM_ADDR(__SPM_REG)), \
 "r" ((uint8_t)__BOOT_PAGE_ERASE), \
 "z" ((uint16_t)address) \
 ); \
}))

#define __boot_page_erase_extended ( address )

Value:

(__extension__({ \
 __asm__ __volatile__ \
 ( \
 "movw r30, %A3\n\t" \
 "sts %1, %C3\n\t" \
 "sts %0, %2\n\t" \
 "spm\n\t" \
 : \
 : "i" (_SFR_MEM_ADDR(__SPM_REG)), \
 "i" (_SFR_MEM_ADDR(RAMPZ)), \
 "r" ((uint8_t)__BOOT_PAGE_ERASE), \
 "r" ((uint32_t)address) \
 : "r30", "r31" \
 ); \
}))

#define __boot_page_erase_normal ( address )

Value:

(__extension__({ \
 __asm__ __volatile__ \
 ( \
 "sts %0, %1\n\t" \
 "spm\n\t" \
 : \
 : "i" (_SFR_MEM_ADDR(__SPM_REG)), \
 "r" ((uint8_t)__BOOT_PAGE_ERASE), \
 "z" ((uint16_t)address) \
 ); \
}))

#define __boot_page_fill_alternate ( address,
data )

Value:

(__extension__({ \
 __asm__ __volatile__ \
 ( \
 "movw r0, %3\n\t" \
 "sts %0, %1\n\t" \
 "spm\n\t" \
 ".word 0xffff\n\t" \
 "nop\n\t" \
 "clr r1\n\t" \
 : \
 : "i" (_SFR_MEM_ADDR(__SPM_REG)), \
 "r" ((uint8_t)__BOOT_PAGE_FILL), \
 "z" ((uint16_t)address), \
 "r" ((uint16_t)data) \
 : "r0" \
 ); \
}))

#define __boot_page_fill_extended ( address,
data )

Value:

(__extension__({ \
 __asm__ __volatile__ \
 ( \
 "movw r0, %4\n\t" \
 "movw r30, %A3\n\t" \
 "sts %1, %C3\n\t" \
 "sts %0, %2\n\t" \
 "spm\n\t" \
 "clr r1\n\t" \
 : \
 : "i" (_SFR_MEM_ADDR(__SPM_REG)), \
 "i" (_SFR_MEM_ADDR(RAMPZ)), \
 "r" ((uint8_t)__BOOT_PAGE_FILL), \
 "r" ((uint32_t)address), \
 "r" ((uint16_t)data) \
 : "r0", "r30", "r31" \
 ); \
}))

#define __boot_page_fill_normal ( address,
data )

Value:

(__extension__({ \
 __asm__ __volatile__ \
 ( \
 "movw r0, %3\n\t" \
 "sts %0, %1\n\t" \
 "spm\n\t" \
 "clr r1\n\t" \
 : \
 : "i" (_SFR_MEM_ADDR(__SPM_REG)), \
 "r" ((uint8_t)__BOOT_PAGE_FILL), \
 "z" ((uint16_t)address), \
 "r" ((uint16_t)data) \
 : "r0" \
 ); \
}))

#define __boot_page_write_alternate ( address )

Value:

(__extension__({ \
 __asm__ __volatile__ \
 ( \
 "sts %0, %1\n\t" \
 "spm\n\t" \
 ".word 0xffff\n\t" \
 "nop\n\t" \
 : \
 : "i" (_SFR_MEM_ADDR(__SPM_REG)), \
 "r" ((uint8_t)__BOOT_PAGE_WRITE), \
 "z" ((uint16_t)address) \
 ); \
}))

#define __boot_page_write_extended ( address )

Value:

(__extension__({ \
 __asm__ __volatile__ \
 ( \
 "movw r30, %A3\n\t" \
 "sts %1, %C3\n\t" \
 "sts %0, %2\n\t" \
 "spm\n\t" \
 : \
 : "i" (_SFR_MEM_ADDR(__SPM_REG)), \
 "i" (_SFR_MEM_ADDR(RAMPZ)), \
 "r" ((uint8_t)__BOOT_PAGE_WRITE), \
 "r" ((uint32_t)address) \
 : "r30", "r31" \
 ); \
}))

#define __boot_page_write_normal ( address )

Value:

(__extension__({ \
 __asm__ __volatile__ \
 ( \
 "sts %0, %1\n\t" \
 "spm\n\t" \
 : \
 : "i" (_SFR_MEM_ADDR(__SPM_REG)), \
 "r" ((uint8_t)__BOOT_PAGE_WRITE), \
 "z" ((uint16_t)address) \
 ); \
}))

#define __boot_rww_enable ( )

Value:

(__extension__({ \
 __asm__ __volatile__ \
 ( \
 "sts %0, %1\n\t" \
 "spm\n\t" \
 : \
 : "i" (_SFR_MEM_ADDR(__SPM_REG)), \
 "r" ((uint8_t)__BOOT_RWW_ENABLE) \
 ); \
}))

#define __boot_rww_enable_alternate ( )

Value:

(__extension__({ \
 __asm__ __volatile__ \
 ( \
 "sts %0, %1\n\t" \
 "spm\n\t" \
 ".word 0xffff\n\t" \
 "nop\n\t" \
 : \
 : "i" (_SFR_MEM_ADDR(__SPM_REG)), \
 "r" ((uint8_t)__BOOT_RWW_ENABLE) \
 ); \
}))


Automatically generated by Doxygen 1.5.7 on 6 Nov 2008.

AltStyle によって変換されたページ (->オリジナル) /