summaryrefslogtreecommitdiffstats
path: root/temp/mfile/help.html
blob: f0398bb24ad774aa149bd09919c8d101da1b452a (plain)
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<!-- Help text for mfile.tcl -->
<!--------------------------------------------------------------------------->
<!-- "THE BEER-WARE LICENSE" (Revision 42) (by Poul-Henning Kamp):         -->
<!-- Joerg Wunsch wrote this file.  As long as you retain this notice you  -->
<!-- can do whatever you want with this stuff. If we meet some day, and    -->
<!-- you think this stuff is worth it, you can buy me a beer in return.    -->
<!--------------------------------------------------------------------------->
<!-- $Id: help.html,v 1.15 2004/07/15 20:51:08 j Exp $ -->
<html>
<head><title>Mfile help</title></head>
<body>
<h1>Simple Makefile generator for AVR-GCC</h1>
<p>Copyright © 2003, 2004 Jörg Wunsch</p>

<hr>
<p>This simple Makefile generator is meant as an aid to quickly
customize the WinAVR Makefile template, producing a file called
<tt>Makefile</tt> in the current directory as result.</p>

<p>The application consists of a (scrollable) text editor widget, and
a menu bar.</p>

<p>The <b>File</b> menu has only two entries:</p>

<ul>
  <li><b>Save</b> writes the contents of the text editor widget to a
      file called <tt>Makefile</tt>.  Should any file by that name
      already exist, it will be renamed.  Under Unix, a tilde will be
      appended to the old name, all other platforms append a <tt>.bak</tt>
      suffix.
  <li><b>Save As</b> opens a filename selection dialog, and allows
      the user to select a file to save to.  After selecting the file
      name, it behaves identical to <b>Save</b>.
  <li><b>Open</b> opens a filename selection dialog, requesting an
      existing file to be opened by the user.  This file will be loaded
      into the editor buffer, and the <b>Makefile</b> menu will be
      updated accordingly.
  <li><b>Exit</b> will quit the application.  No checks whatsoever
      are done to ensure the user has saved his editing work before.
</ul>

<p>The <b>Makefile</b> menu allows customization of the generated
Makefile.  Note that the various menu items described below will only
be present if the corresponding feature is present in the parsed
template or input file.  This menu is divided into three areas:</p>

<ul>
<li><b>Code generation options</b>
<ul>
  <li>The entry <b>Main file name</b> opens a popup window that asks
      for the basic name of this
      project.  This will become the base name for all major output files
      (ELF file, MCU output file, several auxiliary files).  By default, it
      will also serve as the name of the primary C source file, with a
      <tt>.c</tt> suffix appended.  The popup will be closed by pressing
      <i><Enter></i> in the entry field.
  <li>The entries <b>MCU type</b>, <b>Output format</b>,
      <b>Optimization level</b>,
      and <b>C standard level</b> select possible values out of a
      predefined list.  When selecting one of these options, the
      respective Makefile macro will be modified accordingly, and the
      widget will be adjusted so the new values can be seen
      immediately.
  <li>The entry <b>printf() options</b> works similar, only it does
      not modify a Makefile macro of its own but edits the PRINTF_LIB
      macro instead.  Note that setting this away from
      <i>none/standard</i> will cause the generated application to
      always include the code for vfprintf() (which is huge),
      regardless of whether the application actually uses any member
      of the printf() family.  See the avr-libc documentation for the
      meaning of the different options.
  <li>Likewise, changing the <b>scanf() options</b> changes the
      macro SCANF_LIB, in the same manner.  Note that the
      <tt>scanf()</tt> format %[ (string match out of a set of
      characters) will only be present in the floating point version
      since it requires a lot of code, as well as using
      <tt>malloc()</tt> (which is otherwise only required for the
      floating point version).
  <li>The entry <b>C/C++ source file(s)</b> opens a popup that asks
      for a list of C (or C++) source files.  C source files get the
      suffix <tt>.c</tt> (lower-case letter c), C++ source files get
      either of <tt>.C</tt> (capital c), <tt>.cxx</tt>, or <tt>.cc</tt>.
      Multiple file names shall be seperated by spaces.  A checkbox
      indicates whether the primary C source file name derived from
      the <b>Main file name</b> setting should be included or not.
      The popup will be closed by pressing <i><Enter></i> in the entry
      field.
  <li>The entry <b>Assembler source file(s)</b> works similar
      except there are no default assembler sources to be included.
      Note that assembler source files get the suffix <tt>.S</tt>
      (capital letter s) which means they are being pre-processed by
      the C preprocessor, so <tt>#include</tt> etc. will work.  A
      lower-case letter <tt>.s</tt> suffix is considered to be a
      temporary compiler output file, and should not be used here.
  <li>Using <b>External RAM options</b>, several possible variants
      to use external RAM can be selected.  This is internally handled
      by editing the EXTMEMOPTS macro which eventually gets added to
      the LDFLAGS during linking.  The options are to either use
      external RAM for both, variables (i. e. sections .data and .bss)
      as well as for the heap (dynamic memory for <tt>malloc()</tt>),
      or to leave variables in internal memory and use the external
      RAM only for the heap.  In both cases, the stack will always
      remain in internal memory; this is the fastest way, and some
      AVR MCUs have hardware bugs so they would not work when the
      stack is located in external RAM.  It can be selected whether
      the external RAM should start at the lowest possible memory
      location (right behind the internal RAM), or at a different
      memory address.  Several common memory sizes can be chosen from.
      Obviously, these options are only accessible for MCU types that
      do have an external memory interface.
  <li>The entry <b>Debug format</b> selects one out of the following
      options:
      <ul>
      <li><b>ELF/stabs</b> ELF object files with stabs debugging
      information are currently the native way to debug under Unix
      and/or GDB.  This includes any GDB frontend, like Insight or
      DDD.
      <li><b>AVR-COFF</b> Selecting this format will internally also
      generate an ELF/stabs file, but change the Makefile to
      subsequently convert the ELF file into a COFF file that adheres
      to the originally Atmel AVR COFF file format specification.
      This file format is understood by AVR Studio up to 3.x, and
      VMLAB up to 3.9.
      <li><b>AVR-ext-COFF</b> The conversion from internal ELF to
      COFF will be tuned to produce a file according to the later
      AVR "extended" COFF specification by Atmel, understood by AVR
      Studio 4.07 and above, and VMLAB 3.10 and above.
      <li><b>ELF/DWARF-2</b> Create an ELF standard object file with
      DWARF-2 debug information.  This is the proposed standard debug
      format for ELF.  It is currently Beta, the GNU tools are slowly
      changing towards that standard (though it is not yet known
      whether AVR-GDB will already fully understand the format yet),
      and Atmel has released a beta ELF/DWARF-2 parser for their AVR
      Studio.
      </ul>
</ul>
<li><b>AVRdude options</b>
<ul>
  <li>The entry <b>Programmer</b> allows the selection of
      the programming hardware (parallel port "dongle", or serially
      connected hardware).
  <li>The entry <b>Port</b> selects the serial or parallel
      port AVRdude is going to talk across.  This menu item might
      be missing on some operating systems where no default ports
      are known.
</ul>
<li><b>Miscellaneous</b>
<ul>
  <li>By default, the editor widget is read-only, and can only be
      modified by the menu entries mentioned above.  By checking the
      <b>Enable Editing of Makefile</b> checkbox, this restriction can be lifted,
      and the widget can be used as a simple standard text editor for
      the generated Makefile.  Note that the menu operations mentioned
      above are not guaranteed to work on arbitrary input texts since
      they search for certain patterns in order to implement their
      functionality, so manual editing should always be used as a last
      step before eventually saving the generated Makefile.
</ul>
</ul>

</body>
<address><hr>
Jörg Wunsch · &lt;j.gnu@uriah.heep.sax.de&gt; ·
$Date: 2004/07/15 20:51:08 $</address>
</html>