arduino-0018-windows
This commit is contained in:
parent
157fd6f1a1
commit
f39fc49523
5182 changed files with 950586 additions and 0 deletions
115
arduino-0018-windows/hardware/tools/avr/mfile/README
Normal file
115
arduino-0018-windows/hardware/tools/avr/mfile/README
Normal file
|
@ -0,0 +1,115 @@
|
|||
# $Id: README,v 2.1 2007/04/12 18:10:13 arcanum Exp $
|
||||
|
||||
Mfile - a simple Makefile generator for AVR-GCC
|
||||
================================================
|
||||
|
||||
[See below for installation instructions]
|
||||
|
||||
General
|
||||
-------
|
||||
|
||||
The main purpose of this small application is to provide people an
|
||||
easy way to setup their project's Makefiles for »relatively standard«
|
||||
projects, so one could start using AVR-GCC without first studying the
|
||||
AVR's datasheet, plus the avr-libc documentation (really
|
||||
recommended!), /plus/ the »GNU make« user manual.
|
||||
|
||||
It cannot really release the potential programmer from eventually
|
||||
studying the »GNU make« manual, but it can help to delay this part a
|
||||
few months.
|
||||
|
||||
This generator works by using a Makefile template (the one that
|
||||
currently ships with WinAVR), load it into an editor buffer so the
|
||||
user can view the file and the changes, and then use a menu-driven
|
||||
approach to customize that buffer. Eventually, at the user's
|
||||
discretion, this editor buffer can be saved into a Makefile.
|
||||
(Optionally, the user can also edit the buffer directly, so it acts as
|
||||
a simple text editor.)
|
||||
|
||||
While the Programmer's Notepad 2 (PN2) editor that ships with WinAVR
|
||||
intends to eventually implement this functionality some day, there are
|
||||
two reasons for this little project:
|
||||
|
||||
. Act as a stop-gap measure so users will get something they can use
|
||||
right now, without waiting any longer.
|
||||
|
||||
. Since this tool is written in Tcl/Tk, it is also portable to Unix
|
||||
systems, so Unix users (who'd never benefit from PN2) might use it.
|
||||
|
||||
I do explicitly /not/ intend to make this tool the all-singing
|
||||
all-dancing scriptable Makefile generator that can emit any Makefile
|
||||
for any processor and compiler on earth. I really do not want to
|
||||
spend that many more hours into it, it was intented to be a quick and
|
||||
(hopefully not so) dirty tool that gets finished within a couple of
|
||||
evenings, and won't cost me another dozen of hours per months for
|
||||
supporting it, adding new features etc. If you feel this is worth
|
||||
porting somewhere else (like for the MSP430-GCC that is probably
|
||||
fairly close to AVR-GCC in terms of typical use), please pick it up,
|
||||
extend it, and maintain it separately. As always, I appreciate
|
||||
feedback, but reserve the right to ignore anything that tries to
|
||||
extend this tool above the outlined original purpose.
|
||||
|
||||
Note that the Makefile template as shipped requires GNU make for
|
||||
various things (automagic dependency generation, some inference rules
|
||||
are written in gmake syntax as well). However, as Mfile only relies
|
||||
on a few macro names in the template, it should be relatively easy to
|
||||
modify the template for other »make« dialects. The template (or input
|
||||
file upon »File -> Open«) will be parsed when reading it, and only
|
||||
those features actually present will be displayed in the »Makefile«
|
||||
menu. So if e. g. people don't want to include AVRdude features, they
|
||||
can delete all related lines from the template. Also if someone (like
|
||||
Unix users, in particular those not using GNU make) want to modify the
|
||||
way the dependencies are generated (e. g. by using the traditional
|
||||
»make depend« approach), this should be completely unrelated.
|
||||
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
Requires the Tcl and Tk toolkits in recent versions (no exact version
|
||||
known, probably any 8.x version is OK).
|
||||
|
||||
As an alternative to the standard Tk wish interpreter, the tix
|
||||
toolkit's tixwish interpreter can be used. Under Unix systems, the
|
||||
look & feel is then closer to what Tk wish looks like under Windows.
|
||||
|
||||
|
||||
|
||||
Installation on Unix
|
||||
--------------------
|
||||
|
||||
Extract the archive into an arbitrary subdirectory, like
|
||||
|
||||
/usr/local/share/mfile
|
||||
|
||||
If a different directory is chosen, edit the setting of »prefix« on
|
||||
top of mfile.tcl to match the installation directory, or alternatively
|
||||
use the environment variable MFILE_HOME to override the default
|
||||
setting.
|
||||
|
||||
If you prefer, create a symbolic link for convenience (so the
|
||||
application can be found along your default $PATH setting), like
|
||||
|
||||
ln -s /usr/local/share/mfile/mfile.tcl /usr/local/bin/mfile
|
||||
|
||||
Remember to edit the file makefile_template to suite your needs (e. g.
|
||||
default settings, adaptation to non-GNU make utilities).
|
||||
|
||||
|
||||
Upgrading an Mfile installation on WinAVR
|
||||
-----------------------------------------
|
||||
|
||||
Starting with WinAVR 20040404, the WinAVR collection is shipping Mfile
|
||||
pre-installed. (After all, the WinAVR users have once been the
|
||||
primary reason to develop Mfile at all.)
|
||||
|
||||
In order to upgrade the Mfile files supplied with WinAVR, extract the
|
||||
archive into some directory, and copy all the files into
|
||||
|
||||
<winavr directory>\mfile
|
||||
|
||||
That ought to be all that is to be done.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Dresden, F. R. Germany, $Date: 2007/04/12 18:10:13 $
|
||||
Joerg Wunsch <j.gnu@uriah.heep.sax.de>
|
165
arduino-0018-windows/hardware/tools/avr/mfile/help.html
Normal file
165
arduino-0018-windows/hardware/tools/avr/mfile/help.html
Normal file
|
@ -0,0 +1,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 2.0 2006/03/21 21:22:12 joerg_wunsch 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 · <j.gnu@uriah.heep.sax.de> ·
|
||||
$Date: 2006/03/21 21:22:12 $</address>
|
||||
</html>
|
606
arduino-0018-windows/hardware/tools/avr/mfile/htmlview.tcl
Normal file
606
arduino-0018-windows/hardware/tools/avr/mfile/htmlview.tcl
Normal file
|
@ -0,0 +1,606 @@
|
|||
# ----------------------------------------------------------------------------
|
||||
# "THE BEER-WARE LICENSE" (Revision 42) (by Poul-Henning Kamp):
|
||||
# Joerg Wunsch <j.gnu@uriah.heep.sax.de> 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: htmlview.tcl,v 2.0 2006/03/21 21:22:15 joerg_wunsch Exp $
|
||||
#
|
||||
# This implements a simple HTML viewer that is just suitable to browse through
|
||||
# a document generated by latex2html
|
||||
#
|
||||
|
||||
proc htmlview {file} {
|
||||
global htmlposx htmlposy
|
||||
global tcl_platform
|
||||
global helpicon
|
||||
global tcl_platform
|
||||
global bgcolor
|
||||
|
||||
if {$file == ""} {
|
||||
return
|
||||
}
|
||||
|
||||
set subtag ""
|
||||
# determine requested subtag (if any)
|
||||
if {[regexp "^(\[^\#\]*)\#(.*)" $file dummy match subtag]} {
|
||||
set file $match
|
||||
}
|
||||
|
||||
set f ""
|
||||
catch {set f [open $file]}
|
||||
if {$f == ""} {
|
||||
return
|
||||
}
|
||||
|
||||
set dirname [file dirname $file]
|
||||
|
||||
set ok 0
|
||||
while {!$ok} {
|
||||
set w ".htmlview[expr {int(rand()*30000)}]"
|
||||
if {![winfo exists $w]} {
|
||||
set ok 1
|
||||
}
|
||||
}
|
||||
toplevel $w
|
||||
if {[info exists htmlposx]} {
|
||||
set htmlposx [expr $htmlposx + 10]
|
||||
set htmlposy [expr $htmlposy + 10]
|
||||
} else {
|
||||
set htmlposx [expr [winfo x .] + 80]
|
||||
set htmlposy [expr [winfo y .] + 50]
|
||||
}
|
||||
wm geometry $w "+$htmlposx+$htmlposy"
|
||||
wm positionfrom $w user
|
||||
|
||||
frame $w.f0
|
||||
text $w.f0.t1 -wrap word -yscrollcommand "$w.f0.sb1 set" \
|
||||
-font {Helvetica -12} -cursor {top_left_arrow}
|
||||
scrollbar $w.f0.sb1 -command "$w.f0.t1 yview"
|
||||
frame $w.f1
|
||||
button $w.f1.bok -text {Close} -command "destroy $w"
|
||||
#button $w.f1.closeall -text {Hilfe beenden} -command {destroyhtmlwins}
|
||||
pack $w.f0.t1 -side left -expand 1 -fill both
|
||||
pack $w.f0.sb1 -side right -expand 0 -fill y
|
||||
pack $w.f0 -side top -expand 1 -fill both
|
||||
pack $w.f1.bok -side left
|
||||
#pack $w.f1.closeall -side right
|
||||
pack $w.f1 -side top
|
||||
|
||||
update
|
||||
set x [winfo width $w]
|
||||
set y [winfo height $w]
|
||||
wm minsize $w $x $y
|
||||
|
||||
bind $w <Key-Prior> "$w.f0.t1 yview scroll -10 units"
|
||||
bind $w <Key-Next> "$w.f0.t1 yview scroll 10 units"
|
||||
bind $w <Key-space> "$w.f0.t1 yview scroll 10 units"
|
||||
focus $w
|
||||
|
||||
set bgcolor [$w.f0.t1 cget -background]
|
||||
|
||||
if {$tcl_platform(platform) == "unix" && [file exists $helpicon]} {
|
||||
wm iconbitmap $w @$helpicon
|
||||
}
|
||||
|
||||
set buf ""; set head ""; set tail ""
|
||||
set title ""
|
||||
set list ""; set lcount {1}; set ullevel 0
|
||||
set bold 0; set italic 0; set titlemode 0
|
||||
set tagno 0; set attribs {}; set attrib ""; set justify "left"
|
||||
set paraopen 0
|
||||
set lmargin 0; set rmargin 0
|
||||
set hrno 0; set bulletno 0; set imgno 0
|
||||
set newlineput 0; set anchorhasmodifiedfont 0; set inheadline 0
|
||||
|
||||
while {1} {
|
||||
# if $buf starts with a "<", it means we've got an unfinished yet
|
||||
# tag in there, so we need to read more until the tag is finished
|
||||
# and can be handled in full
|
||||
if {$buf == "" || [string index $buf 0] == "<"} {
|
||||
if {[gets $f lbuf] == -1} {
|
||||
break
|
||||
}
|
||||
if {$lbuf == "" && !$inheadline} {
|
||||
# single newline only, marks a paragraph break
|
||||
set lbuf "<p>"
|
||||
}
|
||||
regsub -all {[\t ]+} $lbuf { } lbuf
|
||||
if {[string index $lbuf end] != " "} {
|
||||
set lbuf "$lbuf "
|
||||
}
|
||||
set buf "$buf$lbuf"
|
||||
}
|
||||
if {[set idx [string first "<" $buf]] != -1} {
|
||||
set head [string range $buf 0 [expr $idx - 1]]
|
||||
set tail [string range $buf $idx end]
|
||||
} else {
|
||||
set head $buf
|
||||
set tail ""
|
||||
}
|
||||
if {[string length $head]} {
|
||||
set head [untangletext $head]
|
||||
if {$titlemode} {
|
||||
set title "$title$head"
|
||||
} else {
|
||||
if {$attrib != ""} {
|
||||
$w.f0.t1 insert end $head $attrib
|
||||
} else {
|
||||
$w.f0.t1 insert end $head
|
||||
}
|
||||
}
|
||||
set head ""
|
||||
}
|
||||
if {[string length $tail]} {
|
||||
if {[set idx [string first ">" $tail]] != -1} {
|
||||
set tag [string range $tail 0 $idx]
|
||||
set buf [string range $tail [expr $idx + 1] end]
|
||||
set tag [string range $tag 1 end-1]
|
||||
set tagname $tag
|
||||
set remainder ""
|
||||
regexp {^(/?[A-Za-z0-9]+) *(.*)} $tag dummy tagname remainder
|
||||
set tagname [string tolower $tagname]
|
||||
switch $tagname {
|
||||
"br" {
|
||||
$w.f0.t1 insert end "\n"
|
||||
}
|
||||
"p" {
|
||||
if {$paraopen && $attrib != ""} {
|
||||
set attrib [lindex $attribs end]
|
||||
set attribs [lrange $attribs 0 end-1]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
}
|
||||
set align ""
|
||||
while {1} {
|
||||
set x [parsetag $remainder]
|
||||
set name [string tolower [lindex $x 0]]
|
||||
set val [lindex $x 1]
|
||||
set remainder [lindex $x 2]
|
||||
|
||||
if {$name == ""} {
|
||||
break
|
||||
}
|
||||
if {$name == "align"} {
|
||||
set align [string tolower $val]
|
||||
}
|
||||
}
|
||||
if {$align != ""} {
|
||||
set justify "left"
|
||||
switch $align {
|
||||
"center" { set justify "center" }
|
||||
"right" { set justify "right" }
|
||||
}
|
||||
incr tagno
|
||||
lappend attribs $attrib
|
||||
set attrib "attrib$tagno"
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 tag configure $attrib -font {Helvetica -12 bold}
|
||||
$w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \
|
||||
-rmargin $rmargin -justify $justify
|
||||
}
|
||||
$w.f0.t1 insert end "\n"
|
||||
set paraopen 1
|
||||
}
|
||||
"/p" {
|
||||
set paraopen 0
|
||||
if {$attrib != ""} {
|
||||
set attrib [lindex $attribs end]
|
||||
set attribs [lrange $attribs 0 end-1]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
}
|
||||
}
|
||||
"title" {
|
||||
set titlemode 1
|
||||
set title ""
|
||||
}
|
||||
"/title" {
|
||||
set titlemode 0
|
||||
wm title $w $title
|
||||
}
|
||||
"b" {
|
||||
incr tagno
|
||||
lappend attribs $attrib
|
||||
set attrib "attrib$tagno"
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 tag configure $attrib -font {Helvetica -12 bold}
|
||||
$w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \
|
||||
-rmargin $rmargin -justify $justify
|
||||
}
|
||||
"/b" {
|
||||
set attrib [lindex $attribs end]
|
||||
set attribs [lrange $attribs 0 end-1]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
}
|
||||
"strong" {
|
||||
incr tagno
|
||||
lappend attribs $attrib
|
||||
set attrib "attrib$tagno"
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 tag configure $attrib -font {Helvetica -12 bold}
|
||||
$w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \
|
||||
-rmargin $rmargin -justify $justify
|
||||
}
|
||||
"/strong" {
|
||||
set attrib [lindex $attribs end]
|
||||
set attribs [lrange $attribs 0 end-1]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
}
|
||||
"i" {
|
||||
incr tagno
|
||||
lappend attribs $attrib
|
||||
set attrib "attrib$tagno"
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 tag configure $attrib -font {Helvetica -12 italic}
|
||||
$w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \
|
||||
-rmargin $rmargin -justify $justify
|
||||
}
|
||||
"/i" {
|
||||
set attrib [lindex $attribs end]
|
||||
set attribs [lrange $attribs 0 end-1]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
}
|
||||
"em" {
|
||||
incr tagno
|
||||
lappend attribs $attrib
|
||||
set attrib "attrib$tagno"
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 tag configure $attrib -font {Helvetica -12 italic}
|
||||
$w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \
|
||||
-rmargin $rmargin -justify $justify
|
||||
}
|
||||
"/em" {
|
||||
set attrib [lindex $attribs end]
|
||||
set attribs [lrange $attribs 0 end-1]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
}
|
||||
"tt" {
|
||||
incr tagno
|
||||
lappend attribs $attrib
|
||||
set attrib "attrib$tagno"
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 tag configure $attrib -font {Courier -12}
|
||||
$w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \
|
||||
-rmargin $rmargin -justify $justify
|
||||
}
|
||||
"/tt" {
|
||||
set attrib [lindex $attribs end]
|
||||
set attribs [lrange $attribs 0 end-1]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
}
|
||||
"h1" {
|
||||
incr inheadline
|
||||
incr tagno
|
||||
lappend attribs $attrib
|
||||
set attrib "attrib$tagno"
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 tag configure $attrib -font {Times -18 bold}
|
||||
$w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \
|
||||
-rmargin $rmargin -justify $justify
|
||||
}
|
||||
"/h1" {
|
||||
set inheadline [expr $inheadline - 1]
|
||||
set attrib [lindex $attribs end]
|
||||
set attribs [lrange $attribs 0 end-1]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 insert end "\n\n"
|
||||
}
|
||||
"h2" {
|
||||
incr inheadline
|
||||
incr tagno
|
||||
lappend attribs $attrib
|
||||
set attrib "attrib$tagno"
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 tag configure $attrib -font {Times -16 bold}
|
||||
$w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \
|
||||
-rmargin $rmargin -justify $justify
|
||||
}
|
||||
"/h2" {
|
||||
set inheadline [expr $inheadline - 1]
|
||||
set attrib [lindex $attribs end]
|
||||
set attribs [lrange $attribs 0 end-1]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 insert end "\n\n"
|
||||
}
|
||||
"h3" {
|
||||
incr inheadline
|
||||
incr tagno
|
||||
lappend attribs $attrib
|
||||
set attrib "attrib$tagno"
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 tag configure $attrib -font {Times -14 bold}
|
||||
$w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \
|
||||
-rmargin $rmargin -justify $justify
|
||||
}
|
||||
"/h3" {
|
||||
set inheadline [expr $inheadline - 1]
|
||||
set attrib [lindex $attribs end]
|
||||
set attribs [lrange $attribs 0 end-1]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 insert end "\n\n"
|
||||
}
|
||||
"h4" {
|
||||
incr inheadline
|
||||
incr tagno
|
||||
lappend attribs $attrib
|
||||
set attrib "attrib$tagno"
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 tag configure $attrib -font {Times -12 bold}
|
||||
$w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \
|
||||
-rmargin $rmargin -justify $justify
|
||||
}
|
||||
"/h4" {
|
||||
set inheadline [expr $inheadline - 1]
|
||||
set attrib [lindex $attribs end]
|
||||
set attribs [lrange $attribs 0 end-1]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 insert end "\n\n"
|
||||
}
|
||||
"a" {
|
||||
set target ""
|
||||
while {1} {
|
||||
set x [parsetag $remainder]
|
||||
set name [string tolower [lindex $x 0]]
|
||||
set val [lindex $x 1]
|
||||
set remainder [lindex $x 2]
|
||||
|
||||
if {$name == ""} {
|
||||
break
|
||||
}
|
||||
if {$name == "href"} {
|
||||
set target $val
|
||||
}
|
||||
if {$name == "name" && $subtag == $val} {
|
||||
# subtag was requested, notice it
|
||||
set see [$w.f0.t1 index end]
|
||||
}
|
||||
}
|
||||
if {$target != "" && ![regexp {^(http:|ftp:)} $target]} {
|
||||
switch $tcl_platform(platform) {
|
||||
"windows" {
|
||||
if {![regexp {^([A-Za-z]:)?[\\/]} $target]} {
|
||||
# relative pathname
|
||||
set target "$dirname/$target"
|
||||
}
|
||||
}
|
||||
"unix" {
|
||||
if {![regexp {^/} $val]} {
|
||||
# relative unix pathname
|
||||
set target "$dirname/$target"
|
||||
}
|
||||
}
|
||||
}
|
||||
set anchorhasmodifiedfont 1
|
||||
incr tagno
|
||||
lappend attribs $attrib
|
||||
set attrib "attrib$tagno"
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 tag configure $attrib -foreground {blue}
|
||||
$w.f0.t1 tag configure $attrib -font {Helvetica -12 bold}
|
||||
$w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \
|
||||
-rmargin $rmargin -justify $justify
|
||||
$w.f0.t1 tag bind $attrib <ButtonPress> "htmlview $target"
|
||||
}
|
||||
}
|
||||
"/a" {
|
||||
if {$anchorhasmodifiedfont} {
|
||||
set anchorhasmodifiedfont 0
|
||||
set attrib [lindex $attribs end]
|
||||
set attribs [lrange $attribs 0 end-1]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
}
|
||||
}
|
||||
"ul" {
|
||||
set list "ul"
|
||||
incr ullevel
|
||||
incr tagno
|
||||
lappend attribs $attrib
|
||||
set attrib "attrib$tagno"
|
||||
set lmargin [expr 40 * $ullevel - 10]
|
||||
set rmargin [expr 40 * $ullevel]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 tag configure $attrib -font {Helvetica -12}
|
||||
$w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \
|
||||
-rmargin $rmargin -justify $justify
|
||||
}
|
||||
"/ul" {
|
||||
set ullevel [expr $ullevel - 1]
|
||||
if {$ullevel == 0} {
|
||||
set list ""
|
||||
set lmargin 0
|
||||
set rmargin 0
|
||||
} else {
|
||||
set lmargin [expr 40 * $ullevel - 10]
|
||||
set rmargin [expr 40 * $ullevel]
|
||||
}
|
||||
set attrib [lindex $attribs end]
|
||||
set attribs [lrange $attribs 0 end-1]
|
||||
$w.f0.t1 tag add $attrib end
|
||||
$w.f0.t1 tag configure $attrib -font {Helvetica -12}
|
||||
$w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \
|
||||
-rmargin $rmargin -justify $justify
|
||||
$w.f0.t1 insert end "\n"
|
||||
}
|
||||
"li" {
|
||||
switch $list {
|
||||
"ul" {
|
||||
incr bulletno
|
||||
canvas $w.bullet$bulletno \
|
||||
-width [expr 40 * $ullevel - 15] -height 6 \
|
||||
-background $bgcolor -highlightthickness 0 \
|
||||
-border 0
|
||||
if {$ullevel == 1} {
|
||||
$w.bullet$bulletno create oval 11 1 14 4
|
||||
} else {
|
||||
$w.bullet$bulletno create rectangle \
|
||||
[expr 40 * $ullevel - 29] 1 [expr 40 * $ullevel - 26] 4
|
||||
}
|
||||
$w.f0.t1 insert end "\n" $attrib
|
||||
$w.f0.t1 window create end -align baseline \
|
||||
-window $w.bullet$bulletno
|
||||
}
|
||||
}
|
||||
}
|
||||
"address" {
|
||||
set attrib ""
|
||||
set attribs {}
|
||||
$w.f0.t1 insert end "\n"
|
||||
}
|
||||
"hr" {
|
||||
update
|
||||
incr hrno
|
||||
makehr $w.hr$hrno [expr [winfo width $w.f0.t1] - 10]
|
||||
$w.f0.t1 insert end "\n" $attrib
|
||||
$w.f0.t1 window create end -window $w.hr$hrno
|
||||
}
|
||||
"img" {
|
||||
set iwidth 0
|
||||
set iheight 0
|
||||
set ialign "bottom"
|
||||
set isrc ""
|
||||
while {1} {
|
||||
set x [parsetag $remainder]
|
||||
set name [string tolower [lindex $x 0]]
|
||||
set val [lindex $x 1]
|
||||
set remainder [lindex $x 2]
|
||||
|
||||
if {$name == ""} {
|
||||
break
|
||||
}
|
||||
switch $name {
|
||||
"width" { set iwidth $val }
|
||||
"height" { set iheight $val }
|
||||
"src" {
|
||||
switch $tcl_platform(platform) {
|
||||
"windows" {
|
||||
if {[regexp {^([A-Za-z]:)?[\\/]} $val]} {
|
||||
# absolute pathname
|
||||
set isrc $val
|
||||
} else {
|
||||
set isrc "$dirname/$val"
|
||||
}
|
||||
}
|
||||
"unix" {
|
||||
if {[regexp {^/} $val]} {
|
||||
# absolute unix pathname
|
||||
set isrc $val
|
||||
} else {
|
||||
set isrc "$dirname/$val"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
"align" { set ialign [string tolower $val] }
|
||||
}
|
||||
}
|
||||
if {$isrc != "" && [file exists $isrc]} {
|
||||
incr imgno
|
||||
image create photo htmlview$imgno \
|
||||
-width $iwidth -height $iheight \
|
||||
-file $isrc
|
||||
set imgidx [$w.f0.t1 image create end -image htmlview$imgno]
|
||||
$w.f0.t1 tag add $attrib $imgidx
|
||||
$w.f0.t1 tag add $attrib end
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
# unfinished tag, return to $buf
|
||||
set buf $tail
|
||||
}
|
||||
} else {
|
||||
set buf ""
|
||||
}
|
||||
}
|
||||
close $f
|
||||
# prevent users from editing the text widget's contents
|
||||
$w.f0.t1 configure -state disabled
|
||||
if {[info exists see]} {
|
||||
# we have a subtag to display
|
||||
$w.f0.t1 see $see
|
||||
}
|
||||
}
|
||||
|
||||
# parse $str, obtain first name=value pair, return remainder as well
|
||||
proc parsetag {str} {
|
||||
# first check for quoted value
|
||||
if {[regexp {^([A-Za-z0-9_]+) *= *"([^\"]+)" *(.*)} $str dummy name val rem]} {
|
||||
return [list $name $val $rem]
|
||||
}
|
||||
# else check for argument that must not contain a space
|
||||
if {[regexp {^([A-Za-z0-9_]+) *= *([^ ]+) *(.*)} $str dummy name val rem]} {
|
||||
return [list $name $val $rem]
|
||||
}
|
||||
# else we fail
|
||||
return [list "" "" ""]
|
||||
}
|
||||
|
||||
# proc destroyhtmlwins {} {
|
||||
# global htmlposx htmlposy
|
||||
|
||||
# foreach win [winfo children .] {
|
||||
# if {[string match {.htmlview[0-9]*} $win]} {
|
||||
# destroy $win
|
||||
# }
|
||||
# }
|
||||
|
||||
# foreach img [image names] {
|
||||
# if {[string match {htmlview[0-9]+} $img]} {
|
||||
# image delete $img
|
||||
# }
|
||||
# }
|
||||
|
||||
# set htmlposx [expr [winfo x .] + 80]
|
||||
# set htmlposy [expr [winfo y .] + 50]
|
||||
# }
|
||||
|
||||
proc makehr {c w} {
|
||||
global bgcolor
|
||||
|
||||
canvas $c -width $w -height 6 -background $bgcolor \
|
||||
-highlightthickness 0
|
||||
$c create line 2 2 [expr $w - 2] 2 -width 1 -fill "\#202020"
|
||||
$c create line 2 2 2 4 -width 1 -fill "\#202020"
|
||||
$c create line 3 4 [expr $w - 1] 4 -width 1 -fill "\#ffffff"
|
||||
$c create line [expr $w - 2] 4 [expr $w - 2] 2 -width 1 -fill "\#ffffff"
|
||||
}
|
||||
|
||||
proc untangletext {t} {
|
||||
|
||||
set result ""
|
||||
set ok 1
|
||||
|
||||
while {$ok} {
|
||||
if {[regexp {^([^&]*)&([^;]+);(.*)} $t dummy left marked right]} {
|
||||
set result "$result$left"
|
||||
set t $right
|
||||
switch -glob $marked {
|
||||
"Auml" { set result "${result}Ä" }
|
||||
"Ouml" { set result "${result}Ö" }
|
||||
"Uuml" { set result "${result}Ü" }
|
||||
"auml" { set result "${result}ä" }
|
||||
"ouml" { set result "${result}ö" }
|
||||
"uuml" { set result "${result}ü" }
|
||||
"szlig" { set result "${result}ß" }
|
||||
"nbsp" { set result "${result} " }
|
||||
"amp" { set result "${result}&" }
|
||||
"lt" { set result "${result}<" }
|
||||
"gt" { set result "${result}>" }
|
||||
"\#[0-9]*" {
|
||||
regexp {^.(.*)} $marked dummy c
|
||||
set c [subst "\\[format {%o} $c]"]
|
||||
set result ${result}$c
|
||||
}
|
||||
"*" {
|
||||
# puts stderr "Warning: unknown html mark $marked"
|
||||
}
|
||||
}
|
||||
} else {
|
||||
set result "$result$t"
|
||||
set ok 0
|
||||
}
|
||||
}
|
||||
|
||||
return $result
|
||||
}
|
15
arduino-0018-windows/hardware/tools/avr/mfile/htmlview.xbm
Normal file
15
arduino-0018-windows/hardware/tools/avr/mfile/htmlview.xbm
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* $Id: htmlview.xbm,v 2.0 2006/03/21 21:22:13 joerg_wunsch Exp $ */
|
||||
#define htmlview_width 32
|
||||
#define htmlview_height 32
|
||||
static unsigned char htmlview_bits[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00, 0x60,
|
||||
0xc6, 0x00, 0x02, 0x60, 0xc6, 0x00, 0x06, 0x60, 0xc6, 0x00, 0x06, 0x60,
|
||||
0xc6, 0x00, 0x06, 0x60, 0xc6, 0x00, 0x06, 0x60, 0xc6, 0x00, 0x06, 0x60,
|
||||
0xc6, 0x00, 0x06, 0x60, 0xfe, 0x1c, 0xc6, 0x63, 0xfe, 0x36, 0xc6, 0x67,
|
||||
0xc6, 0x66, 0xc6, 0x66, 0xc6, 0x7e, 0xc6, 0x66, 0xc6, 0x7e, 0xc6, 0x66,
|
||||
0xc6, 0x06, 0xc6, 0x66, 0xc6, 0x0e, 0xc6, 0x06, 0xc6, 0x3c, 0xce, 0x67,
|
||||
0xc6, 0x78, 0xcc, 0x63, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00,
|
||||
0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
|
617
arduino-0018-windows/hardware/tools/avr/mfile/makefile_template
Normal file
617
arduino-0018-windows/hardware/tools/avr/mfile/makefile_template
Normal file
|
@ -0,0 +1,617 @@
|
|||
# Hey Emacs, this is a -*- makefile -*-
|
||||
#----------------------------------------------------------------------------
|
||||
# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
|
||||
#
|
||||
# Released to the Public Domain
|
||||
#
|
||||
# Additional material for this makefile was written by:
|
||||
# Peter Fleury
|
||||
# Tim Henigan
|
||||
# Colin O'Flynn
|
||||
# Reiner Patommel
|
||||
# Markus Pfaff
|
||||
# Sander Pool
|
||||
# Frederik Rouleau
|
||||
# Carlos Lamas
|
||||
#
|
||||
#----------------------------------------------------------------------------
|
||||
# On command line:
|
||||
#
|
||||
# make all = Make software.
|
||||
#
|
||||
# make clean = Clean out built project files.
|
||||
#
|
||||
# make coff = Convert ELF to AVR COFF.
|
||||
#
|
||||
# make extcoff = Convert ELF to AVR Extended COFF.
|
||||
#
|
||||
# make program = Download the hex file to the device, using avrdude.
|
||||
# Please customize the avrdude settings below first!
|
||||
#
|
||||
# make debug = Start either simulavr or avarice as specified for debugging,
|
||||
# with avr-gdb or avr-insight as the front end for debugging.
|
||||
#
|
||||
# make filename.s = Just compile filename.c into the assembler code only.
|
||||
#
|
||||
# make filename.i = Create a preprocessed source file for use in submitting
|
||||
# bug reports to the GCC project.
|
||||
#
|
||||
# To rebuild project do "make clean" then "make all".
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
|
||||
# MCU name
|
||||
MCU = atmega128
|
||||
|
||||
|
||||
# Processor frequency.
|
||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||
# processor frequency. You can then use this symbol in your source code to
|
||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||
# automatically to create a 32-bit value in your source code.
|
||||
# Typical values are:
|
||||
# F_CPU = 1000000
|
||||
# F_CPU = 1843200
|
||||
# F_CPU = 2000000
|
||||
# F_CPU = 3686400
|
||||
# F_CPU = 4000000
|
||||
# F_CPU = 7372800
|
||||
# F_CPU = 8000000
|
||||
# F_CPU = 11059200
|
||||
# F_CPU = 14745600
|
||||
# F_CPU = 16000000
|
||||
# F_CPU = 18432000
|
||||
# F_CPU = 20000000
|
||||
F_CPU = 8000000
|
||||
|
||||
|
||||
# Output format. (can be srec, ihex, binary)
|
||||
FORMAT = ihex
|
||||
|
||||
|
||||
# Target file name (without extension).
|
||||
TARGET = main
|
||||
|
||||
|
||||
# Object files directory
|
||||
# To put object files in current directory, use a dot (.), do NOT make
|
||||
# this an empty or blank macro!
|
||||
OBJDIR = .
|
||||
|
||||
|
||||
# List C source files here. (C dependencies are automatically generated.)
|
||||
SRC = $(TARGET).c
|
||||
|
||||
|
||||
# List C++ source files here. (C dependencies are automatically generated.)
|
||||
CPPSRC =
|
||||
|
||||
|
||||
# List Assembler source files here.
|
||||
# Make them always end in a capital .S. Files ending in a lowercase .s
|
||||
# will not be considered source files but generated files (assembler
|
||||
# output from the compiler), and will be deleted upon "make clean"!
|
||||
# Even though the DOS/Win* filesystem matches both .s and .S the same,
|
||||
# it will preserve the spelling of the filenames, and gcc itself does
|
||||
# care about how the name is spelled on its command-line.
|
||||
ASRC =
|
||||
|
||||
|
||||
# Optimization level, can be [0, 1, 2, 3, s].
|
||||
# 0 = turn off optimization. s = optimize for size.
|
||||
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
|
||||
OPT = s
|
||||
|
||||
|
||||
# Debugging format.
|
||||
# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
|
||||
# AVR Studio 4.10 requires dwarf-2.
|
||||
# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
|
||||
DEBUG = dwarf-2
|
||||
|
||||
|
||||
# List any extra directories to look for include files here.
|
||||
# Each directory must be seperated by a space.
|
||||
# Use forward slashes for directory separators.
|
||||
# For a directory that has spaces, enclose it in quotes.
|
||||
EXTRAINCDIRS =
|
||||
|
||||
|
||||
# Compiler flag to set the C Standard level.
|
||||
# c89 = "ANSI" C
|
||||
# gnu89 = c89 plus GCC extensions
|
||||
# c99 = ISO C99 standard (not yet fully implemented)
|
||||
# gnu99 = c99 plus GCC extensions
|
||||
CSTANDARD = -std=gnu99
|
||||
|
||||
|
||||
# Place -D or -U options here for C sources
|
||||
CDEFS = -DF_CPU=$(F_CPU)UL
|
||||
|
||||
|
||||
# Place -D or -U options here for ASM sources
|
||||
ADEFS = -DF_CPU=$(F_CPU)
|
||||
|
||||
|
||||
# Place -D or -U options here for C++ sources
|
||||
CPPDEFS = -DF_CPU=$(F_CPU)UL
|
||||
#CPPDEFS += -D__STDC_LIMIT_MACROS
|
||||
#CPPDEFS += -D__STDC_CONSTANT_MACROS
|
||||
|
||||
|
||||
|
||||
#---------------- Compiler Options C ----------------
|
||||
# -g*: generate debugging information
|
||||
# -O*: optimization level
|
||||
# -f...: tuning, see GCC manual and avr-libc documentation
|
||||
# -Wall...: warning level
|
||||
# -Wa,...: tell GCC to pass this to the assembler.
|
||||
# -adhlns...: create assembler listing
|
||||
CFLAGS = -g$(DEBUG)
|
||||
CFLAGS += $(CDEFS)
|
||||
CFLAGS += -O$(OPT)
|
||||
CFLAGS += -funsigned-char
|
||||
CFLAGS += -funsigned-bitfields
|
||||
CFLAGS += -fpack-struct
|
||||
CFLAGS += -fshort-enums
|
||||
CFLAGS += -Wall
|
||||
CFLAGS += -Wstrict-prototypes
|
||||
#CFLAGS += -mshort-calls
|
||||
#CFLAGS += -fno-unit-at-a-time
|
||||
#CFLAGS += -Wundef
|
||||
#CFLAGS += -Wunreachable-code
|
||||
#CFLAGS += -Wsign-compare
|
||||
CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)
|
||||
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
|
||||
CFLAGS += $(CSTANDARD)
|
||||
|
||||
|
||||
#---------------- Compiler Options C++ ----------------
|
||||
# -g*: generate debugging information
|
||||
# -O*: optimization level
|
||||
# -f...: tuning, see GCC manual and avr-libc documentation
|
||||
# -Wall...: warning level
|
||||
# -Wa,...: tell GCC to pass this to the assembler.
|
||||
# -adhlns...: create assembler listing
|
||||
CPPFLAGS = -g$(DEBUG)
|
||||
CPPFLAGS += $(CPPDEFS)
|
||||
CPPFLAGS += -O$(OPT)
|
||||
CPPFLAGS += -funsigned-char
|
||||
CPPFLAGS += -funsigned-bitfields
|
||||
CPPFLAGS += -fpack-struct
|
||||
CPPFLAGS += -fshort-enums
|
||||
CPPFLAGS += -fno-exceptions
|
||||
CPPFLAGS += -Wall
|
||||
CPPFLAGS += -Wundef
|
||||
#CPPFLAGS += -mshort-calls
|
||||
#CPPFLAGS += -fno-unit-at-a-time
|
||||
#CPPFLAGS += -Wstrict-prototypes
|
||||
#CPPFLAGS += -Wunreachable-code
|
||||
#CPPFLAGS += -Wsign-compare
|
||||
CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)
|
||||
CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
|
||||
#CPPFLAGS += $(CSTANDARD)
|
||||
|
||||
|
||||
#---------------- Assembler Options ----------------
|
||||
# -Wa,...: tell GCC to pass this to the assembler.
|
||||
# -adhlns: create listing
|
||||
# -gstabs: have the assembler create line number information; note that
|
||||
# for use in COFF files, additional information about filenames
|
||||
# and function names needs to be present in the assembler source
|
||||
# files -- see avr-libc docs [FIXME: not yet described there]
|
||||
# -listing-cont-lines: Sets the maximum number of continuation lines of hex
|
||||
# dump that will be displayed for a given single line of source input.
|
||||
ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100
|
||||
|
||||
|
||||
#---------------- Library Options ----------------
|
||||
# Minimalistic printf version
|
||||
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
|
||||
|
||||
# Floating point printf version (requires MATH_LIB = -lm below)
|
||||
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
|
||||
|
||||
# If this is left blank, then it will use the Standard printf version.
|
||||
PRINTF_LIB =
|
||||
#PRINTF_LIB = $(PRINTF_LIB_MIN)
|
||||
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
|
||||
|
||||
|
||||
# Minimalistic scanf version
|
||||
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
|
||||
|
||||
# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
|
||||
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
|
||||
|
||||
# If this is left blank, then it will use the Standard scanf version.
|
||||
SCANF_LIB =
|
||||
#SCANF_LIB = $(SCANF_LIB_MIN)
|
||||
#SCANF_LIB = $(SCANF_LIB_FLOAT)
|
||||
|
||||
|
||||
MATH_LIB = -lm
|
||||
|
||||
|
||||
# List any extra directories to look for libraries here.
|
||||
# Each directory must be seperated by a space.
|
||||
# Use forward slashes for directory separators.
|
||||
# For a directory that has spaces, enclose it in quotes.
|
||||
EXTRALIBDIRS =
|
||||
|
||||
|
||||
|
||||
#---------------- External Memory Options ----------------
|
||||
|
||||
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
|
||||
# used for variables (.data/.bss) and heap (malloc()).
|
||||
#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
|
||||
|
||||
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
|
||||
# only used for heap (malloc()).
|
||||
#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff
|
||||
|
||||
EXTMEMOPTS =
|
||||
|
||||
|
||||
|
||||
#---------------- Linker Options ----------------
|
||||
# -Wl,...: tell GCC to pass this to linker.
|
||||
# -Map: create map file
|
||||
# --cref: add cross reference to map file
|
||||
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
|
||||
LDFLAGS += $(EXTMEMOPTS)
|
||||
LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
|
||||
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
|
||||
#LDFLAGS += -T linker_script.x
|
||||
|
||||
|
||||
|
||||
#---------------- Programming Options (avrdude) ----------------
|
||||
|
||||
# Programming hardware
|
||||
# Type: avrdude -c ?
|
||||
# to get a full listing.
|
||||
#
|
||||
AVRDUDE_PROGRAMMER = stk500v2
|
||||
|
||||
# com1 = serial port. Use lpt1 to connect to parallel port.
|
||||
AVRDUDE_PORT = com1 # programmer connected to serial device
|
||||
|
||||
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
|
||||
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
|
||||
|
||||
|
||||
# Uncomment the following if you want avrdude's erase cycle counter.
|
||||
# Note that this counter needs to be initialized first using -Yn,
|
||||
# see avrdude manual.
|
||||
#AVRDUDE_ERASE_COUNTER = -y
|
||||
|
||||
# Uncomment the following if you do /not/ wish a verification to be
|
||||
# performed after programming the device.
|
||||
#AVRDUDE_NO_VERIFY = -V
|
||||
|
||||
# Increase verbosity level. Please use this when submitting bug
|
||||
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
|
||||
# to submit bug reports.
|
||||
#AVRDUDE_VERBOSE = -v -v
|
||||
|
||||
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
|
||||
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
|
||||
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
|
||||
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
|
||||
|
||||
|
||||
|
||||
#---------------- Debugging Options ----------------
|
||||
|
||||
# For simulavr only - target MCU frequency.
|
||||
DEBUG_MFREQ = $(F_CPU)
|
||||
|
||||
# Set the DEBUG_UI to either gdb or insight.
|
||||
# DEBUG_UI = gdb
|
||||
DEBUG_UI = insight
|
||||
|
||||
# Set the debugging back-end to either avarice, simulavr.
|
||||
DEBUG_BACKEND = avarice
|
||||
#DEBUG_BACKEND = simulavr
|
||||
|
||||
# GDB Init Filename.
|
||||
GDBINIT_FILE = __avr_gdbinit
|
||||
|
||||
# When using avarice settings for the JTAG
|
||||
JTAG_DEV = /dev/com1
|
||||
|
||||
# Debugging port used to communicate between GDB / avarice / simulavr.
|
||||
DEBUG_PORT = 4242
|
||||
|
||||
# Debugging host used to communicate between GDB / avarice / simulavr, normally
|
||||
# just set to localhost unless doing some sort of crazy debugging when
|
||||
# avarice is running on a different computer.
|
||||
DEBUG_HOST = localhost
|
||||
|
||||
|
||||
|
||||
#============================================================================
|
||||
|
||||
|
||||
# Define programs and commands.
|
||||
SHELL = sh
|
||||
CC = avr-gcc
|
||||
OBJCOPY = avr-objcopy
|
||||
OBJDUMP = avr-objdump
|
||||
SIZE = avr-size
|
||||
AR = avr-ar rcs
|
||||
NM = avr-nm
|
||||
AVRDUDE = avrdude
|
||||
REMOVE = rm -f
|
||||
REMOVEDIR = rm -rf
|
||||
COPY = cp
|
||||
WINSHELL = cmd
|
||||
|
||||
|
||||
# Define Messages
|
||||
# English
|
||||
MSG_ERRORS_NONE = Errors: none
|
||||
MSG_BEGIN = -------- begin --------
|
||||
MSG_END = -------- end --------
|
||||
MSG_SIZE_BEFORE = Size before:
|
||||
MSG_SIZE_AFTER = Size after:
|
||||
MSG_COFF = Converting to AVR COFF:
|
||||
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
|
||||
MSG_FLASH = Creating load file for Flash:
|
||||
MSG_EEPROM = Creating load file for EEPROM:
|
||||
MSG_EXTENDED_LISTING = Creating Extended Listing:
|
||||
MSG_SYMBOL_TABLE = Creating Symbol Table:
|
||||
MSG_LINKING = Linking:
|
||||
MSG_COMPILING = Compiling C:
|
||||
MSG_COMPILING_CPP = Compiling C++:
|
||||
MSG_ASSEMBLING = Assembling:
|
||||
MSG_CLEANING = Cleaning project:
|
||||
MSG_CREATING_LIBRARY = Creating library:
|
||||
|
||||
|
||||
|
||||
|
||||
# Define all object files.
|
||||
OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)
|
||||
|
||||
# Define all listing files.
|
||||
LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)
|
||||
|
||||
|
||||
# Compiler flags to generate dependency files.
|
||||
GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
|
||||
|
||||
|
||||
# Combine all necessary flags and optional flags.
|
||||
# Add target processor to flags.
|
||||
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
|
||||
ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)
|
||||
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Default target.
|
||||
all: begin gccversion sizebefore build sizeafter end
|
||||
|
||||
# Change the build target to build a HEX file or a library.
|
||||
build: elf hex eep lss sym
|
||||
#build: lib
|
||||
|
||||
|
||||
elf: $(TARGET).elf
|
||||
hex: $(TARGET).hex
|
||||
eep: $(TARGET).eep
|
||||
lss: $(TARGET).lss
|
||||
sym: $(TARGET).sym
|
||||
LIBNAME=lib$(TARGET).a
|
||||
lib: $(LIBNAME)
|
||||
|
||||
|
||||
|
||||
# Eye candy.
|
||||
# AVR Studio 3.x does not check make's exit code but relies on
|
||||
# the following magic strings to be generated by the compile job.
|
||||
begin:
|
||||
@echo
|
||||
@echo $(MSG_BEGIN)
|
||||
|
||||
end:
|
||||
@echo $(MSG_END)
|
||||
@echo
|
||||
|
||||
|
||||
# Display size of file.
|
||||
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
|
||||
ELFSIZE = $(SIZE) --mcu=$(MCU) --format=avr $(TARGET).elf
|
||||
|
||||
sizebefore:
|
||||
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
|
||||
2>/dev/null; echo; fi
|
||||
|
||||
sizeafter:
|
||||
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
|
||||
2>/dev/null; echo; fi
|
||||
|
||||
|
||||
|
||||
# Display compiler version information.
|
||||
gccversion :
|
||||
@$(CC) --version
|
||||
|
||||
|
||||
|
||||
# Program the device.
|
||||
program: $(TARGET).hex $(TARGET).eep
|
||||
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
|
||||
|
||||
|
||||
# Generate avr-gdb config/init file which does the following:
|
||||
# define the reset signal, load the target file, connect to target, and set
|
||||
# a breakpoint at main().
|
||||
gdb-config:
|
||||
@$(REMOVE) $(GDBINIT_FILE)
|
||||
@echo define reset >> $(GDBINIT_FILE)
|
||||
@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
|
||||
@echo end >> $(GDBINIT_FILE)
|
||||
@echo file $(TARGET).elf >> $(GDBINIT_FILE)
|
||||
@echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)
|
||||
ifeq ($(DEBUG_BACKEND),simulavr)
|
||||
@echo load >> $(GDBINIT_FILE)
|
||||
endif
|
||||
@echo break main >> $(GDBINIT_FILE)
|
||||
|
||||
debug: gdb-config $(TARGET).elf
|
||||
ifeq ($(DEBUG_BACKEND), avarice)
|
||||
@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
|
||||
@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
|
||||
$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
|
||||
@$(WINSHELL) /c pause
|
||||
|
||||
else
|
||||
@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
|
||||
$(DEBUG_MFREQ) --port $(DEBUG_PORT)
|
||||
endif
|
||||
@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
|
||||
|
||||
|
||||
|
||||
|
||||
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
|
||||
COFFCONVERT = $(OBJCOPY) --debugging
|
||||
COFFCONVERT += --change-section-address .data-0x800000
|
||||
COFFCONVERT += --change-section-address .bss-0x800000
|
||||
COFFCONVERT += --change-section-address .noinit-0x800000
|
||||
COFFCONVERT += --change-section-address .eeprom-0x810000
|
||||
|
||||
|
||||
|
||||
coff: $(TARGET).elf
|
||||
@echo
|
||||
@echo $(MSG_COFF) $(TARGET).cof
|
||||
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
|
||||
|
||||
|
||||
extcoff: $(TARGET).elf
|
||||
@echo
|
||||
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
|
||||
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
|
||||
|
||||
|
||||
|
||||
# Create final output files (.hex, .eep) from ELF output file.
|
||||
%.hex: %.elf
|
||||
@echo
|
||||
@echo $(MSG_FLASH) $@
|
||||
$(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock $< $@
|
||||
|
||||
%.eep: %.elf
|
||||
@echo
|
||||
@echo $(MSG_EEPROM) $@
|
||||
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
|
||||
--change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0
|
||||
|
||||
# Create extended listing file from ELF output file.
|
||||
%.lss: %.elf
|
||||
@echo
|
||||
@echo $(MSG_EXTENDED_LISTING) $@
|
||||
$(OBJDUMP) -h -S -z $< > $@
|
||||
|
||||
# Create a symbol table from ELF output file.
|
||||
%.sym: %.elf
|
||||
@echo
|
||||
@echo $(MSG_SYMBOL_TABLE) $@
|
||||
$(NM) -n $< > $@
|
||||
|
||||
|
||||
|
||||
# Create library from object files.
|
||||
.SECONDARY : $(TARGET).a
|
||||
.PRECIOUS : $(OBJ)
|
||||
%.a: $(OBJ)
|
||||
@echo
|
||||
@echo $(MSG_CREATING_LIBRARY) $@
|
||||
$(AR) $@ $(OBJ)
|
||||
|
||||
|
||||
# Link: create ELF output file from object files.
|
||||
.SECONDARY : $(TARGET).elf
|
||||
.PRECIOUS : $(OBJ)
|
||||
%.elf: $(OBJ)
|
||||
@echo
|
||||
@echo $(MSG_LINKING) $@
|
||||
$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
|
||||
|
||||
|
||||
# Compile: create object files from C source files.
|
||||
$(OBJDIR)/%.o : %.c
|
||||
@echo
|
||||
@echo $(MSG_COMPILING) $<
|
||||
$(CC) -c $(ALL_CFLAGS) $< -o $@
|
||||
|
||||
|
||||
# Compile: create object files from C++ source files.
|
||||
$(OBJDIR)/%.o : %.cpp
|
||||
@echo
|
||||
@echo $(MSG_COMPILING_CPP) $<
|
||||
$(CC) -c $(ALL_CPPFLAGS) $< -o $@
|
||||
|
||||
|
||||
# Compile: create assembler files from C source files.
|
||||
%.s : %.c
|
||||
$(CC) -S $(ALL_CFLAGS) $< -o $@
|
||||
|
||||
|
||||
# Compile: create assembler files from C++ source files.
|
||||
%.s : %.cpp
|
||||
$(CC) -S $(ALL_CPPFLAGS) $< -o $@
|
||||
|
||||
|
||||
# Assemble: create object files from assembler source files.
|
||||
$(OBJDIR)/%.o : %.S
|
||||
@echo
|
||||
@echo $(MSG_ASSEMBLING) $<
|
||||
$(CC) -c $(ALL_ASFLAGS) $< -o $@
|
||||
|
||||
|
||||
# Create preprocessed source for use in sending a bug report.
|
||||
%.i : %.c
|
||||
$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
|
||||
|
||||
|
||||
# Target: clean project.
|
||||
clean: begin clean_list end
|
||||
|
||||
clean_list :
|
||||
@echo
|
||||
@echo $(MSG_CLEANING)
|
||||
$(REMOVE) $(TARGET).hex
|
||||
$(REMOVE) $(TARGET).eep
|
||||
$(REMOVE) $(TARGET).cof
|
||||
$(REMOVE) $(TARGET).elf
|
||||
$(REMOVE) $(TARGET).map
|
||||
$(REMOVE) $(TARGET).sym
|
||||
$(REMOVE) $(TARGET).lss
|
||||
$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o)
|
||||
$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst)
|
||||
$(REMOVE) $(SRC:.c=.s)
|
||||
$(REMOVE) $(SRC:.c=.d)
|
||||
$(REMOVE) $(SRC:.c=.i)
|
||||
$(REMOVEDIR) .dep
|
||||
|
||||
|
||||
# Create object files directory
|
||||
$(shell mkdir $(OBJDIR) 2>/dev/null)
|
||||
|
||||
|
||||
# Include the dependency files.
|
||||
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
|
||||
|
||||
|
||||
# Listing of phony targets.
|
||||
.PHONY : all begin finish end sizebefore sizeafter gccversion \
|
||||
build elf hex eep lss sym coff extcoff \
|
||||
clean clean_list program debug gdb-config
|
1643
arduino-0018-windows/hardware/tools/avr/mfile/mfile.tcl
Normal file
1643
arduino-0018-windows/hardware/tools/avr/mfile/mfile.tcl
Normal file
File diff suppressed because it is too large
Load diff
15
arduino-0018-windows/hardware/tools/avr/mfile/mfile.xbm
Normal file
15
arduino-0018-windows/hardware/tools/avr/mfile/mfile.xbm
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* $Id: mfile.xbm,v 2.0 2006/03/21 21:22:13 joerg_wunsch Exp $ */
|
||||
#define mfile_width 32
|
||||
#define mfile_height 32
|
||||
static unsigned char mfile_bits[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03,
|
||||
0xc0, 0x03, 0xfc, 0x0f, 0xf0, 0x87, 0xff, 0x0f, 0xf8, 0xc7, 0xff, 0x00,
|
||||
0x3c, 0xee, 0x03, 0x00, 0x1c, 0xfc, 0x00, 0x00, 0x0c, 0x7c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0c, 0x7c, 0x00, 0x00, 0x1c, 0xfc, 0x00, 0x00,
|
||||
0x3c, 0xee, 0x03, 0x00, 0xf8, 0xc7, 0xff, 0x00, 0xf0, 0x87, 0xff, 0x0f,
|
||||
0xc0, 0x03, 0xfc, 0x0f, 0x00, 0x00, 0xc3, 0x03, 0x00, 0x00, 0x03, 0x00,
|
||||
0xda, 0x38, 0x9b, 0x03, 0xb6, 0x65, 0xcf, 0x06, 0xb6, 0x79, 0xc7, 0x07,
|
||||
0xb6, 0x6d, 0xcf, 0x00, 0xb6, 0x6d, 0xdb, 0x06, 0xb6, 0xd9, 0xb3, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
|
Reference in a new issue