neingeist
/
arduinisten
Archived
1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

608 lines
38 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>avr-libc: boot.h File Reference</title>
<link href="dox.css" rel="stylesheet" type="text/css">
</head>
<body>
<center>
<table width="80%">
<tr>
<td align="left"><a href="http://www.nongnu.org/avr-libc/">AVR Libc Home Page</a></td>
<td align="center" colspan=4><img src="avrs.png" alt="AVRs" align="middle" border="0"></td>
<td align="right"><a href="https://savannah.nongnu.org/projects/avr-libc/">AVR Libc Development Pages</a></td>
</tr>
<tr>
<td align="center" width="13%"><a href="index.html">Main Page</a></td>
<td align="center" width="13%"><a href="pages.html">User Manual</a></td>
<td align="center" width="13%"><a href="modules.html">Library Reference</a></td>
<td align="center" width="13%"><a href="FAQ.html">FAQ</a></td>
<td align="center" width="13%"><a href="globals.html">Alphabetical Index</a></td>
<td align="center" width="13%"><a href="group__demos.html">Example Projects</a></td>
</tr>
</table>
</center>
<hr width="80%">
<!-- Generated by Doxygen 1.5.6 -->
<div class="contents">
<h1>boot.h File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4192e18f2c1316b05663a3dc75668749"></a><!-- doxytag: member="boot.h::_AVR_BOOT_H_" ref="4192e18f2c1316b05663a3dc75668749" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>_AVR_BOOT_H_</b>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#g8a60eb0985d40ff71c42bb18f0f5789e">BOOTLOADER_SECTION</a>&nbsp;&nbsp;&nbsp;__attribute__ ((section (&quot;.bootloader&quot;)))</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="417fdfe10bd6f57a586226a4d70bdfd7"></a><!-- doxytag: member="boot.h::__COMMON_ASB" ref="417fdfe10bd6f57a586226a4d70bdfd7" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__COMMON_ASB</b>&nbsp;&nbsp;&nbsp;RWWSB</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="da1dd04496c0be43e587298ce0125a17"></a><!-- doxytag: member="boot.h::__COMMON_ASRE" ref="da1dd04496c0be43e587298ce0125a17" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__COMMON_ASRE</b>&nbsp;&nbsp;&nbsp;RWWSRE</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ab4f27d4987cc0270f6bfeb92c1d14ae"></a><!-- doxytag: member="boot.h::BLB12" ref="ab4f27d4987cc0270f6bfeb92c1d14ae" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>BLB12</b>&nbsp;&nbsp;&nbsp;5</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="50edc371d0af8d259ea023b633925113"></a><!-- doxytag: member="boot.h::BLB11" ref="50edc371d0af8d259ea023b633925113" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>BLB11</b>&nbsp;&nbsp;&nbsp;4</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c0f9afa7cbd77075ce25ad1725a29a2d"></a><!-- doxytag: member="boot.h::BLB02" ref="c0f9afa7cbd77075ce25ad1725a29a2d" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>BLB02</b>&nbsp;&nbsp;&nbsp;3</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="04ae036a5a8fbdd5a8fc5a6ec2c7339a"></a><!-- doxytag: member="boot.h::BLB01" ref="04ae036a5a8fbdd5a8fc5a6ec2c7339a" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>BLB01</b>&nbsp;&nbsp;&nbsp;2</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#g072040fce54f112355cb9ebf9ce41dd7">boot_spm_interrupt_enable</a>()&nbsp;&nbsp;&nbsp;(__SPM_REG |= (<a class="el" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)_BV(SPMIE))</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#gf1e01d09c839793a6c0c990b1c5ae8b3">boot_spm_interrupt_disable</a>()&nbsp;&nbsp;&nbsp;(__SPM_REG &amp;= (<a class="el" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)~_BV(SPMIE))</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#gcd6843d51a4fa7d68f3c4bc5aa393a3e">boot_is_spm_interrupt</a>()&nbsp;&nbsp;&nbsp;(__SPM_REG &amp; (<a class="el" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)_BV(SPMIE))</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#gaba5a29359af671a37bccaa6a77bca7c">boot_rww_busy</a>()&nbsp;&nbsp;&nbsp;(__SPM_REG &amp; (<a class="el" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)_BV(__COMMON_ASB))</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#ge50dc01180110f30093a92fe64fe1565">boot_spm_busy</a>()&nbsp;&nbsp;&nbsp;(__SPM_REG &amp; (<a class="el" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)_BV(__SPM_ENABLE))</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#g24900c15109e8b419736d4b81b093fb8">boot_spm_busy_wait</a>()&nbsp;&nbsp;&nbsp;do{}while(boot_spm_busy())</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="21c0241a6cb8118cded320e66cc90560"></a><!-- doxytag: member="boot.h::__BOOT_PAGE_ERASE" ref="21c0241a6cb8118cded320e66cc90560" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__BOOT_PAGE_ERASE</b>&nbsp;&nbsp;&nbsp;(_BV(__SPM_ENABLE) | _BV(PGERS))</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4c8e46cf66a0d11d769d19a2bed8b629"></a><!-- doxytag: member="boot.h::__BOOT_PAGE_WRITE" ref="4c8e46cf66a0d11d769d19a2bed8b629" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__BOOT_PAGE_WRITE</b>&nbsp;&nbsp;&nbsp;(_BV(__SPM_ENABLE) | _BV(PGWRT))</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0188e67d3acdcd85622f5b76030af293"></a><!-- doxytag: member="boot.h::__BOOT_PAGE_FILL" ref="0188e67d3acdcd85622f5b76030af293" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__BOOT_PAGE_FILL</b>&nbsp;&nbsp;&nbsp;_BV(__SPM_ENABLE)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f377d8a2a7d70cc3706792c5ee1fb050"></a><!-- doxytag: member="boot.h::__BOOT_RWW_ENABLE" ref="f377d8a2a7d70cc3706792c5ee1fb050" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__BOOT_RWW_ENABLE</b>&nbsp;&nbsp;&nbsp;(_BV(__SPM_ENABLE) | _BV(__COMMON_ASRE))</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="79758a589013232780017772b8cca5e0"></a><!-- doxytag: member="boot.h::__BOOT_LOCK_BITS_SET" ref="79758a589013232780017772b8cca5e0" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__BOOT_LOCK_BITS_SET</b>&nbsp;&nbsp;&nbsp;(_BV(__SPM_ENABLE) | _BV(BLBSET))</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__boot_page_fill_normal</b>(address, data)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__boot_page_fill_alternate</b>(address, data)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__boot_page_fill_extended</b>(address, data)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__boot_page_erase_normal</b>(address)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__boot_page_erase_alternate</b>(address)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__boot_page_erase_extended</b>(address)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__boot_page_write_normal</b>(address)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__boot_page_write_alternate</b>(address)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__boot_page_write_extended</b>(address)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__boot_rww_enable</b>()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__boot_rww_enable_alternate</b>()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__boot_lock_bits_set</b>(lock_bits)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__boot_lock_bits_set_alternate</b>(lock_bits)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#gc68c37ecf2354ba2af6e08379d65899f">GET_LOW_FUSE_BITS</a>&nbsp;&nbsp;&nbsp;(0x0000)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#ge12d288a22cfbfa9d0cde12b1a779bfe">GET_LOCK_BITS</a>&nbsp;&nbsp;&nbsp;(0x0001)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#gf08aabaebbd69da659357f402d4d28ce">GET_EXTENDED_FUSE_BITS</a>&nbsp;&nbsp;&nbsp;(0x0002)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#g44e70c9662e7ac06484144c15bc69aea">GET_HIGH_FUSE_BITS</a>&nbsp;&nbsp;&nbsp;(0x0003)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#gd2cbdea59ffec2e77ee2e63106459797">boot_lock_fuse_bits_get</a>(address)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="20e2e9e36dec4bf39be5228a0c9c600e"></a><!-- doxytag: member="boot.h::__BOOT_SIGROW_READ" ref="20e2e9e36dec4bf39be5228a0c9c600e" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__BOOT_SIGROW_READ</b>&nbsp;&nbsp;&nbsp;(_BV(__SPM_ENABLE) | _BV(SIGRD))</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#gf375d2543ba38dc56697b4f4bc37a717">boot_signature_byte_get</a>(addr)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#g61add108c778273ff68233d044c3acca">boot_page_fill</a>(address, data)&nbsp;&nbsp;&nbsp;__boot_page_fill_normal(address, data)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#g7249d12e06789cd306583abf7def8176">boot_page_erase</a>(address)&nbsp;&nbsp;&nbsp;__boot_page_erase_normal(address)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#g013d6d8c679ebdbc0e5fac179c38c9aa">boot_page_write</a>(address)&nbsp;&nbsp;&nbsp;__boot_page_write_normal(address)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#g8d2baaca2991318e0b06fdf9a5264923">boot_rww_enable</a>()&nbsp;&nbsp;&nbsp;__boot_rww_enable()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#gdaa352690ac1c82c535da9d8faf77590">boot_lock_bits_set</a>(lock_bits)&nbsp;&nbsp;&nbsp;__boot_lock_bits_set(lock_bits)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#g3f549e2ef9ca0f119a7070064c4dc372">boot_page_fill_safe</a>(address, data)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#g5c345350a2fb349619b859dcf0dc0466">boot_page_erase_safe</a>(address)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#g107ad4c789e5c498062947d394ed98d5">boot_page_write_safe</a>(address)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#geb0dba1dd9d338516a94c0bd8a8db78a">boot_rww_enable_safe</a>()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__boot.html#gc80bd4f863ff7645204adb0eda3556ea">boot_lock_bits_set_safe</a>(lock_bits)</td></tr>
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="7c8625ea47a1bd97442cc882d09c0ed8"></a><!-- doxytag: member="boot.h::__boot_lock_bits_set" ref="7c8625ea47a1bd97442cc882d09c0ed8" args="(lock_bits)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __boot_lock_bits_set </td>
<td>(</td>
<td class="paramtype">lock_bits&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Value:</b><div class="fragment"><pre class="fragment">(__extension__({ \
<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> value = (<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)(~(lock_bits)); \
__asm__ __volatile__ \
( \
<span class="stringliteral">"ldi r30, 1\n\t"</span> \
<span class="stringliteral">"ldi r31, 0\n\t"</span> \
<span class="stringliteral">"mov r0, %2\n\t"</span> \
<span class="stringliteral">"sts %0, %1\n\t"</span> \
<span class="stringliteral">"spm\n\t"</span> \
: \
: <span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(__SPM_REG)), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)__BOOT_LOCK_BITS_SET), \
<span class="stringliteral">"r"</span> (value) \
: <span class="stringliteral">"r0"</span>, <span class="stringliteral">"r30"</span>, <span class="stringliteral">"r31"</span> \
); \
}))
</pre></div>
</div>
</div><p>
<a class="anchor" name="8832a715caf71cd7ef5fb1a944934f25"></a><!-- doxytag: member="boot.h::__boot_lock_bits_set_alternate" ref="8832a715caf71cd7ef5fb1a944934f25" args="(lock_bits)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __boot_lock_bits_set_alternate </td>
<td>(</td>
<td class="paramtype">lock_bits&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Value:</b><div class="fragment"><pre class="fragment">(__extension__({ \
<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> value = (<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)(~(lock_bits)); \
__asm__ __volatile__ \
( \
<span class="stringliteral">"ldi r30, 1\n\t"</span> \
<span class="stringliteral">"ldi r31, 0\n\t"</span> \
<span class="stringliteral">"mov r0, %2\n\t"</span> \
<span class="stringliteral">"sts %0, %1\n\t"</span> \
<span class="stringliteral">"spm\n\t"</span> \
<span class="stringliteral">".word 0xffff\n\t"</span> \
<span class="stringliteral">"nop\n\t"</span> \
: \
: <span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(__SPM_REG)), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)__BOOT_LOCK_BITS_SET), \
<span class="stringliteral">"r"</span> (value) \
: <span class="stringliteral">"r0"</span>, <span class="stringliteral">"r30"</span>, <span class="stringliteral">"r31"</span> \
); \
}))
</pre></div>
</div>
</div><p>
<a class="anchor" name="3e55b284bd76afd73af1616de8df7b12"></a><!-- doxytag: member="boot.h::__boot_page_erase_alternate" ref="3e55b284bd76afd73af1616de8df7b12" args="(address)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __boot_page_erase_alternate </td>
<td>(</td>
<td class="paramtype">address&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Value:</b><div class="fragment"><pre class="fragment">(__extension__({ \
__asm__ __volatile__ \
( \
<span class="stringliteral">"sts %0, %1\n\t"</span> \
<span class="stringliteral">"spm\n\t"</span> \
<span class="stringliteral">".word 0xffff\n\t"</span> \
<span class="stringliteral">"nop\n\t"</span> \
: \
: <span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(__SPM_REG)), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)__BOOT_PAGE_ERASE), \
<span class="stringliteral">"z"</span> ((<a class="code" href="group__avr__stdint.html#g1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)address) \
); \
}))
</pre></div>
</div>
</div><p>
<a class="anchor" name="93a9fe1407566a32fea1fb37277f7c46"></a><!-- doxytag: member="boot.h::__boot_page_erase_extended" ref="93a9fe1407566a32fea1fb37277f7c46" args="(address)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __boot_page_erase_extended </td>
<td>(</td>
<td class="paramtype">address&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Value:</b><div class="fragment"><pre class="fragment">(__extension__({ \
__asm__ __volatile__ \
( \
<span class="stringliteral">"movw r30, %A3\n\t"</span> \
<span class="stringliteral">"sts %1, %C3\n\t"</span> \
<span class="stringliteral">"sts %0, %2\n\t"</span> \
<span class="stringliteral">"spm\n\t"</span> \
: \
: <span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(__SPM_REG)), \
<span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(RAMPZ)), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)__BOOT_PAGE_ERASE), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#g33594304e786b158f3fb30289278f5af">uint32_t</a>)address) \
: <span class="stringliteral">"r30"</span>, <span class="stringliteral">"r31"</span> \
); \
}))
</pre></div>
</div>
</div><p>
<a class="anchor" name="e7acb437e564500a9fa900ca9d52b976"></a><!-- doxytag: member="boot.h::__boot_page_erase_normal" ref="e7acb437e564500a9fa900ca9d52b976" args="(address)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __boot_page_erase_normal </td>
<td>(</td>
<td class="paramtype">address&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Value:</b><div class="fragment"><pre class="fragment">(__extension__({ \
__asm__ __volatile__ \
( \
<span class="stringliteral">"sts %0, %1\n\t"</span> \
<span class="stringliteral">"spm\n\t"</span> \
: \
: <span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(__SPM_REG)), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)__BOOT_PAGE_ERASE), \
<span class="stringliteral">"z"</span> ((<a class="code" href="group__avr__stdint.html#g1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)address) \
); \
}))
</pre></div>
</div>
</div><p>
<a class="anchor" name="5812a8505962f2ef5ef7a2ed6e6e8817"></a><!-- doxytag: member="boot.h::__boot_page_fill_alternate" ref="5812a8505962f2ef5ef7a2ed6e6e8817" args="(address, data)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __boot_page_fill_alternate </td>
<td>(</td>
<td class="paramtype">address, <tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">data&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Value:</b><div class="fragment"><pre class="fragment">(__extension__({ \
__asm__ __volatile__ \
( \
<span class="stringliteral">"movw r0, %3\n\t"</span> \
<span class="stringliteral">"sts %0, %1\n\t"</span> \
<span class="stringliteral">"spm\n\t"</span> \
<span class="stringliteral">".word 0xffff\n\t"</span> \
<span class="stringliteral">"nop\n\t"</span> \
<span class="stringliteral">"clr r1\n\t"</span> \
: \
: <span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(__SPM_REG)), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)__BOOT_PAGE_FILL), \
<span class="stringliteral">"z"</span> ((<a class="code" href="group__avr__stdint.html#g1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)address), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#g1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)data) \
: <span class="stringliteral">"r0"</span> \
); \
}))
</pre></div>
</div>
</div><p>
<a class="anchor" name="f185608898c0e67c913fd900d9d5b1bd"></a><!-- doxytag: member="boot.h::__boot_page_fill_extended" ref="f185608898c0e67c913fd900d9d5b1bd" args="(address, data)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __boot_page_fill_extended </td>
<td>(</td>
<td class="paramtype">address, <tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">data&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Value:</b><div class="fragment"><pre class="fragment">(__extension__({ \
__asm__ __volatile__ \
( \
<span class="stringliteral">"movw r0, %4\n\t"</span> \
<span class="stringliteral">"movw r30, %A3\n\t"</span> \
<span class="stringliteral">"sts %1, %C3\n\t"</span> \
<span class="stringliteral">"sts %0, %2\n\t"</span> \
<span class="stringliteral">"spm\n\t"</span> \
<span class="stringliteral">"clr r1\n\t"</span> \
: \
: <span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(__SPM_REG)), \
<span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(RAMPZ)), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)__BOOT_PAGE_FILL), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#g33594304e786b158f3fb30289278f5af">uint32_t</a>)address), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#g1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)data) \
: <span class="stringliteral">"r0"</span>, <span class="stringliteral">"r30"</span>, <span class="stringliteral">"r31"</span> \
); \
}))
</pre></div>
</div>
</div><p>
<a class="anchor" name="26dd86a7f6a2188d5b3a9bf4e82e4858"></a><!-- doxytag: member="boot.h::__boot_page_fill_normal" ref="26dd86a7f6a2188d5b3a9bf4e82e4858" args="(address, data)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __boot_page_fill_normal </td>
<td>(</td>
<td class="paramtype">address, <tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">data&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Value:</b><div class="fragment"><pre class="fragment">(__extension__({ \
__asm__ __volatile__ \
( \
<span class="stringliteral">"movw r0, %3\n\t"</span> \
<span class="stringliteral">"sts %0, %1\n\t"</span> \
<span class="stringliteral">"spm\n\t"</span> \
<span class="stringliteral">"clr r1\n\t"</span> \
: \
: <span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(__SPM_REG)), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)__BOOT_PAGE_FILL), \
<span class="stringliteral">"z"</span> ((<a class="code" href="group__avr__stdint.html#g1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)address), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#g1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)data) \
: <span class="stringliteral">"r0"</span> \
); \
}))
</pre></div>
</div>
</div><p>
<a class="anchor" name="187759514e2cca302aeb49218197f942"></a><!-- doxytag: member="boot.h::__boot_page_write_alternate" ref="187759514e2cca302aeb49218197f942" args="(address)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __boot_page_write_alternate </td>
<td>(</td>
<td class="paramtype">address&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Value:</b><div class="fragment"><pre class="fragment">(__extension__({ \
__asm__ __volatile__ \
( \
<span class="stringliteral">"sts %0, %1\n\t"</span> \
<span class="stringliteral">"spm\n\t"</span> \
<span class="stringliteral">".word 0xffff\n\t"</span> \
<span class="stringliteral">"nop\n\t"</span> \
: \
: <span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(__SPM_REG)), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)__BOOT_PAGE_WRITE), \
<span class="stringliteral">"z"</span> ((<a class="code" href="group__avr__stdint.html#g1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)address) \
); \
}))
</pre></div>
</div>
</div><p>
<a class="anchor" name="914c8d5a7da95cdc8349978bb16bb6b3"></a><!-- doxytag: member="boot.h::__boot_page_write_extended" ref="914c8d5a7da95cdc8349978bb16bb6b3" args="(address)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __boot_page_write_extended </td>
<td>(</td>
<td class="paramtype">address&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Value:</b><div class="fragment"><pre class="fragment">(__extension__({ \
__asm__ __volatile__ \
( \
<span class="stringliteral">"movw r30, %A3\n\t"</span> \
<span class="stringliteral">"sts %1, %C3\n\t"</span> \
<span class="stringliteral">"sts %0, %2\n\t"</span> \
<span class="stringliteral">"spm\n\t"</span> \
: \
: <span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(__SPM_REG)), \
<span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(RAMPZ)), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)__BOOT_PAGE_WRITE), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#g33594304e786b158f3fb30289278f5af">uint32_t</a>)address) \
: <span class="stringliteral">"r30"</span>, <span class="stringliteral">"r31"</span> \
); \
}))
</pre></div>
</div>
</div><p>
<a class="anchor" name="86207caca9e59b3f75a9fa35cdc1db69"></a><!-- doxytag: member="boot.h::__boot_page_write_normal" ref="86207caca9e59b3f75a9fa35cdc1db69" args="(address)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __boot_page_write_normal </td>
<td>(</td>
<td class="paramtype">address&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Value:</b><div class="fragment"><pre class="fragment">(__extension__({ \
__asm__ __volatile__ \
( \
<span class="stringliteral">"sts %0, %1\n\t"</span> \
<span class="stringliteral">"spm\n\t"</span> \
: \
: <span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(__SPM_REG)), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)__BOOT_PAGE_WRITE), \
<span class="stringliteral">"z"</span> ((<a class="code" href="group__avr__stdint.html#g1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)address) \
); \
}))
</pre></div>
</div>
</div><p>
<a class="anchor" name="40eea0e0df507db61a60989581ac1064"></a><!-- doxytag: member="boot.h::__boot_rww_enable" ref="40eea0e0df507db61a60989581ac1064" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __boot_rww_enable </td>
<td>(</td>
&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Value:</b><div class="fragment"><pre class="fragment">(__extension__({ \
__asm__ __volatile__ \
( \
<span class="stringliteral">"sts %0, %1\n\t"</span> \
<span class="stringliteral">"spm\n\t"</span> \
: \
: <span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(__SPM_REG)), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)__BOOT_RWW_ENABLE) \
); \
}))
</pre></div>
</div>
</div><p>
<a class="anchor" name="d5bbc23219154d8bb707dc83adeda97b"></a><!-- doxytag: member="boot.h::__boot_rww_enable_alternate" ref="d5bbc23219154d8bb707dc83adeda97b" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define __boot_rww_enable_alternate </td>
<td>(</td>
&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<b>Value:</b><div class="fragment"><pre class="fragment">(__extension__({ \
__asm__ __volatile__ \
( \
<span class="stringliteral">"sts %0, %1\n\t"</span> \
<span class="stringliteral">"spm\n\t"</span> \
<span class="stringliteral">".word 0xffff\n\t"</span> \
<span class="stringliteral">"nop\n\t"</span> \
: \
: <span class="stringliteral">"i"</span> (_SFR_MEM_ADDR(__SPM_REG)), \
<span class="stringliteral">"r"</span> ((<a class="code" href="group__avr__stdint.html#gba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)__BOOT_RWW_ENABLE) \
); \
}))
</pre></div>
</div>
</div><p>
</div>
<hr width="80%">
<p><center>Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.</center></p>
</body>
</html>