File: Device.dtd

package info (click to toggle)
avr-libc 1%3A1.6.2.cvs20080610-2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 14,848 kB
  • ctags: 55,619
  • sloc: ansic: 92,267; asm: 6,692; sh: 4,131; makefile: 2,481; python: 976; pascal: 426; perl: 116
file content (148 lines) | stat: -rw-r--r-- 4,969 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<!--
Copyright (c) 2004, Theodore A. Roth
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright
  notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright
  notice, this list of conditions and the following disclaimer in
  the documentation and/or other materials provided with the
  distribution.

* Neither the name of the copyright holders nor the names of
  contributors may be used to endorse or promote products derived
  from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-->

<!-- $Id: Device.dtd,v 1.12 2005/10/21 20:55:19 joerg_wunsch Exp $ -->

<!--

This file provides a Document Type Definition (DTD) for XML data files which
describe everything thing we need to generate the <avr/io*.h> header files.

Although ATMEL supplies XML device files already with AvrStudio >= 4.x, they
contain far more data than we need. In addition, there is information that we
need which they do not provide. Also, it may not be legal for us to include
those files with avr-libc.

I have written a python program (Atmel2libc.py) which will read ATMEL's XML
files and spit out a file which will validate against this DTD so that we can
leverage the data in those files. We will still have to manually add some data
to our generated xml files before we can use them to generate our headers.

-->

<!ELEMENT device (
    version,
    description?,
    memory_sizes,
    interrupts,
    ioregisters,
    bootloader?
)>
    <!ATTLIST device
        name CDATA #REQUIRED
    >

    <!ELEMENT version (#PCDATA)>
    <!ELEMENT description (#PCDATA)>

    <!ELEMENT memory_sizes (
        flash_size,
        eeprom_size,
        int_sram_size,
        ext_sram_size
    )>
        <!ELEMENT flash_size (#PCDATA)>
        <!ELEMENT eeprom_size (#PCDATA)>
        <!ELEMENT int_sram_size (#PCDATA)>
            <!ATTLIST int_sram_size start_addr CDATA #REQUIRED>
        <!ELEMENT ext_sram_size (#PCDATA)>
            <!ATTLIST ext_sram_size start_addr CDATA #REQUIRED>

    <!ELEMENT interrupts (vector+)>
        <!-- insn_size in bytes -->
        <!ATTLIST interrupts
            insn_size (2 | 4) #REQUIRED
            num_vects CDATA #REQUIRED
        >
        <!ELEMENT vector (
            description?,
            sig_name,
	    alt_name*
        )>
            <!ATTLIST vector
                addr CDATA #REQUIRED
                num CDATA #REQUIRED
                name CDATA #REQUIRED
            >
            <!ELEMENT sig_name (#PCDATA)>

    <!ELEMENT ioregisters (ioreg+)>
    <!ELEMENT ioreg (
        description?,
        alt_name*,
        bit_field*
    )>
        <!ATTLIST ioreg
            name CDATA #REQUIRED
            addr CDATA #REQUIRED
        >

        <!ELEMENT alt_name (#PCDATA)>

        <!ELEMENT bit_field (
            description?,
            alt_name*
        )>
            <!ATTLIST bit_field
                name CDATA #REQUIRED
                bit CDATA #REQUIRED
                access CDATA #REQUIRED
                init CDATA #REQUIRED
            >

    <!-- If the is no bootloader element in the XML file, the device does not
         have bootloader support. -->

    <!-- The pagesize value is in bytes. Atmel's datasheets give it in
         words. -->

    <!-- Some recent ATtiny devices have boot loader support, but only
         have non-read while write (NRWW) behaviour throughout the
         entire flash, and no separate bootloader area.  So do not
         insist on getting mode elements. -->
    <!ELEMENT bootloader (mode*)>
        <!ATTLIST bootloader
            pagesize CDATA #REQUIRED
            rww_start CDATA #IMPLIED
            rww_end CDATA #IMPLIED
            nrww_start CDATA #IMPLIED
            nrww_end CDATA #IMPLIED
        >

        <!-- The boot mode size is (pagesize * pages). -->

        <!ELEMENT mode EMPTY>
            <!ATTLIST mode
                num CDATA #REQUIRED
                pages CDATA #REQUIRED
                start CDATA #REQUIRED
            >