avr-libc
2.0.0
Standard C library for AVR-GCC
|
AVR Libc Home Page |
AVR Libc Development Pages |
||||
Main Page |
User Manual |
Library Reference |
FAQ |
Example Projects |
マクロ | |
#define | BOOTLOADER_SECTION __attribute__ ((section (".bootloader"))) |
#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 | 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_signature_byte_get(addr) |
#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_rww_enable_safe() |
#define | boot_lock_bits_set_safe(lock_bits) |
C言語インタフェースで、AVRプロセッサのブートローダをサポートするための機能を提供するマクロです。これらのマクロは、フラッシュメモリのすべてのサイズで機能するようになっています。
グローバル割込みは、これらのマクロに関して自動的に抑制(disable)されません。これらは、プログラマに任せられています。次のコード例を確認してください。フラッシュを書き込む間に、グローバル割込みを許可しておくことの注意点は、プロセッサのデータシートを参照してください。
#define boot_lock_bits_set | ( | lock_bits | ) | __boot_lock_bits_set(lock_bits) |
ブートローダ・ロックビットを設定
lock_bits | どのブートローダ・ロックビットを設定するべきかのマスク |
例えば、フラッシュのブートローダメモリセクションの書込みにSPM命令を許可しないためには、次のようにマクロを使用してください。
#define boot_lock_bits_set_safe | ( | lock_bits | ) |
ロックビットを設定する前にEEPROMとSPM演算が完了するのを待つ以外は、boot_lock_bits_set()と同じです。
#define boot_lock_fuse_bits_get | ( | address | ) |
address
からロックまたはヒューズビットの読出し
address
パラメータは、GET_LOW_FUSE_BITS、GET_LOCK_BITS、GET_EXTENDED_FUSE_BITSやGET_HIGH_FUSE_BITSが指定できます。
#define boot_page_erase | ( | address | ) | __boot_page_erase_normal(address) |
アドレスに含まれるフラッシュページを消去
#define boot_page_erase_safe | ( | address | ) |
ページを消去する前に、EEPROMとSPM演算が完了するのを待つ以外は、boot_page_erase() と同じです。
#define boot_page_fill | ( | address, | |
data | |||
) | __boot_page_fill_normal(address, data) |
データワードで、フラッシュアドレスのブートローダの一時ページバッファを埋めます。
#define boot_page_fill_safe | ( | address, | |
data | |||
) |
ページを埋める前に、EEPROMとSPM演算が完了するのを待つ以外は、boot_page_fill()と同じです。
#define boot_page_write | ( | address | ) | __boot_page_write_normal(address) |
アドレスに含まれるフラッシュページのブートローダ一時ページバッファに書き込む
#define boot_page_write_safe | ( | address | ) |
ページを書き込む前に、EEPROMとSPM演算が完了するのを待つ以外は、boot_page_write()と同じです。
#define boot_rww_enable | ( | ) | __boot_rww_enable() |
Read-While-Writeメモリセクションを許可する
#define boot_rww_enable_safe | ( | ) |
RWWメモリを許可される前に、EEPROMとSPM演算が完了するのを待つ以外は、boot_rww_enable()と同じです。
#define boot_signature_byte_get | ( | addr | ) |
address
のシグネチャRowバイトの読出し。いくつかのMCUでは、この関数で工場出荷時に設定された発信器校正データを取り出すことができます。
address
パラメータは、データシートに定義されている 0~0x1f が可能です。
#define boot_spm_busy_wait | ( | ) | do{}while(boot_spm_busy()) |
SPM命令ビジー中停止する
#define BOOTLOADER_SECTION __attribute__ ((section (".bootloader"))) |
.bootloaderの新しいセクション内に、関数または変数を宣言するのに用います。このセクションとその内容は、リンク時において別のアドレス(例えばブートローダNRWWエリア)に再配置することができます。
#define GET_EXTENDED_FUSE_BITS (0x0002) |
boot_lock_fuse_bits_getにより、拡張ヒューズビットを読み出すためのアドレス
#define GET_HIGH_FUSE_BITS (0x0003) |
boot_lock_fuse_bits_getにより、上位ヒューズビットを読み出すためのアドレス
#define GET_LOCK_BITS (0x0001) |
boot_lock_fuse_bits_getにより、ロックビットを読み出すためのアドレス
#define GET_LOW_FUSE_BITS (0x0000) |
boot_lock_fuse_bits_getにより、下位ヒューズビットを読み出すためのアドレス