Updatet Todo.txt ; Added some Sources

This commit is contained in:
sicarius 2007-02-10 20:58:05 +00:00
parent 68fd7fdd89
commit 644121b478
20 changed files with 3050 additions and 2 deletions

View file

@ -14,12 +14,12 @@ Hardware:
Motoren fertiggestellt
Ballsensoren fertiggestellt
Eigene Platinen fertiggestellt
Ballsensoren angeschlossen
Todo:
Dribbler fertigestellen(Räder sind nun vorhanden)
Dribbler fertigestellen !!!
Tastsensoren befestigen
Verkabelung
Entgültige Verkabelung
Software:
@ -29,6 +29,8 @@ Software:
weitere Ausarbeitungen am Design
Programmierumgebung eingerichtet
Platinen ausreichend konfigueriert(fuses gesetzt)
Anfänge des HAL
Motoransteuerung und Anfänge der Navigationsklasse
Todo:

Binary file not shown.

Binary file not shown.

6
temp/avrTest/autogen.sh Executable file
View file

@ -0,0 +1,6 @@
#!/bin/bash
make
avrdude -p atmega128 -c stk200 -P /dev/parport0 -U flash:w:main.HEX
exit

4
temp/avrTest/main.c Normal file
View file

@ -0,0 +1,4 @@
int main() {
int i = 1;
return i;
};

1
temp/avrTest/main.eep Normal file
View file

@ -0,0 +1 @@
:00000001FF

BIN
temp/avrTest/main.elf Executable file

Binary file not shown.

15
temp/avrTest/main.hex Normal file
View file

@ -0,0 +1,15 @@
:100000000C9446000C9463000C9463000C94630001
:100010000C9463000C9463000C9463000C946300D4
:100020000C9463000C9463000C9463000C946300C4
:100030000C9463000C9463000C9463000C946300B4
:100040000C9463000C9463000C9463000C946300A4
:100050000C9463000C9463000C9463000C94630094
:100060000C9463000C9463000C9463000C94630084
:100070000C9463000C9463000C9463000C94630074
:100080000C9463000C9463000C94630011241FBE55
:10009000CFEFD0E1DEBFCDBF11E0A0E0B1E0ECEDED
:1000A000F0E000E00BBF02C007900D92A030B10756
:1000B000D9F711E0A0E0B1E001C01D92A030B10776
:1000C000E1F70C9465000C940000CFEFD0E1DEBFA7
:0C00D000CDBF81E090E00C946D00FFCFEC
:00000001FF

223
temp/avrTest/makefile Normal file
View file

@ -0,0 +1,223 @@
# Hey Emacs, this is a -*- makefile -*-
# AVR-GCC Makefile template, derived from the WinAVR template (which
# is public domain), believed to be neutral to any flavor of "make"
# (GNU make, BSD make, SysV make)
MCU = atmega128
FORMAT = ihex
TARGET = main
SRC = $(TARGET).c
ASRC =
OPT = s
# Name of this Makefile (used for "make depend").
MAKEFILE = Makefile
# Debugging format.
# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2.
# AVR (extended) COFF requires stabs, plus an avr-objcopy run.
DEBUG = stabs
# 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
CDEFS =
# Place -I options here
CINCS =
CDEBUG = -g$(DEBUG)
CWARN = -Wall -Wstrict-prototypes
CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
#CEXTRA = -Wa,-adhlns=$(<:.c=.lst)
CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CSTANDARD) $(CEXTRA)
#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
#Additional libraries.
# 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
PRINTF_LIB =
# 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
SCANF_LIB =
MATH_LIB = -lm
# External memory options
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
# used for variables (.data/.bss) and heap (malloc()).
#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
# only used for heap (malloc()).
#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
EXTMEMOPTS =
#LDMAP = $(LDFLAGS) -Wl,-Map=$(TARGET).map,--cref
LDFLAGS = $(EXTMEMOPTS) $(LDMAP) $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
# Programming support using avrdude. Settings and variables.
AVRDUDE_PROGRAMMER = stk200
AVRDUDE_PORT = /dev/parport0
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_BASIC = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
AVRDUDE_FLAGS = $(AVRDUDE_BASIC) $(AVRDUDE_NO_VERIFY) $(AVRDUDE_VERBOSE) $(AVRDUDE_ERASE_COUNTER)
CC = avr-gcc
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
SIZE = avr-size
NM = avr-nm
AVRDUDE = avrdude
REMOVE = rm -f
MV = mv -f
# Define all object files.
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
# Define all listing files.
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)
# Combine all necessary flags and optional flags.
# Add target processor to flags.
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
# Default target.
all: build
build: elf hex eep
elf: $(TARGET).elf
hex: $(TARGET).hex
eep: $(TARGET).eep
lss: $(TARGET).lss
sym: $(TARGET).sym
# Program the device.
program: $(TARGET).hex $(TARGET).eep
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
COFFCONVERT=$(OBJCOPY) --debugging \
--change-section-address .data-0x800000 \
--change-section-address .bss-0x800000 \
--change-section-address .noinit-0x800000 \
--change-section-address .eeprom-0x810000
coff: $(TARGET).elf
$(COFFCONVERT) -O coff-avr $(TARGET).elf $(TARGET).cof
extcoff: $(TARGET).elf
$(COFFCONVERT) -O coff-ext-avr $(TARGET).elf $(TARGET).cof
.SUFFIXES: .elf .hex .eep .lss .sym
.elf.hex:
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
.elf.eep:
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
# Create extended listing file from ELF output file.
.elf.lss:
$(OBJDUMP) -h -S $< > $@
# Create a symbol table from ELF output file.
.elf.sym:
$(NM) -n $< > $@
# Link: create ELF output file from object files.
$(TARGET).elf: $(OBJ)
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)
# Compile: create object files from C source files.
.c.o:
$(CC) -c $(ALL_CFLAGS) $< -o $@
# Compile: create assembler files from C source files.
.c.s:
$(CC) -S $(ALL_CFLAGS) $< -o $@
# Assemble: create object files from assembler source files.
.S.o:
$(CC) -c $(ALL_ASFLAGS) $< -o $@
# Target: clean project.
clean:
$(REMOVE) $(TARGET).hex $(TARGET).eep $(TARGET).cof $(TARGET).elf \
$(TARGET).map $(TARGET).sym $(TARGET).lss \
$(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d)
depend:
if grep '^# DO NOT DELETE' $(MAKEFILE) >/dev/null; \
then \
sed -e '/^# DO NOT DELETE/,$$d' $(MAKEFILE) > \
$(MAKEFILE).$$$$ && \
$(MV) $(MAKEFILE).$$$$ $(MAKEFILE); \
fi
echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' \
>> $(MAKEFILE); \
$(CC) -M -mmcu=$(MCU) $(CDEFS) $(CINCS) $(SRC) $(ASRC) >> $(MAKEFILE)
.PHONY: all build elf hex eep lss sym program coff extcoff clean depend

BIN
temp/bestueckung-maus.pdf Normal file

Binary file not shown.

BIN
temp/mfile.tar.gz Normal file

Binary file not shown.

174
temp/mfile/README Normal file
View file

@ -0,0 +1,174 @@
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). Current WinAVR (20030913)
contains these tools.
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 Windows
-----------------------
[Users of WinAVR 20040404 and beyond do get Mfile pre-installed. See
below for upgrade instructions.]
Extract the archive into a subdirectory of its own, e. g.
c:\WinAVR\mfile
Double-click on the icon for »mfile.tcl« in your file browser
(explorer), and tell it to use c:\WinAVR\bin\wish84.exe to run this
file. (Adjust appropriately if you installed WinAVR in another
directory.)
Since Windows always changes to the directory of the application
before starting it, all template and auxiliary files should be found
easily there without editing mfile.tcl. Note however that this
directory will also become the default directory where »Makefile« will
be stored, unless you change a different location with »Save As...«
As another option, the following has been contributed by Eric Weddington
on how to properly create a shortcut on the desktop:
1. Extract the mfile.zip archive into your WinAVR
installation directory. This will automatically create a
subdirectory \mfile with all the needed files in this
subdirectory.
2. Create a Shortcut on your Desktop.
3. For the location of the item, select the program
wish84.exe which is located in \bin subdirectory of your
WinAVR installation directory. Add a space and then type
the absolute pathname of the program, mfile.tcl, which is
located in the mfile subdirectory of your WinAVR
installation directory.
For example, if your WinAVR installation directory is at
C:\WinAVR, then the item will look like:
C:\WinAVR\bin\wish84.exe C:\WinAVR\mfile\mfile.tcl
4. The name of the Shortcut should be: MFile
5. When finished, you will have to go back and properly
select the Start Directory. Right-click the shortcut icon
on your Deskopt and select Properties. In the Start In edit
box, put in the mfile subdirectory of your WinAVR
installation directory. NOTE! This is essential if MFile is
to execute correctly as there are additional files that it
needs to find.
For example, if your WinAVR installation directory is at
C:\WinAVR, then the Start directory will be:
C:\WinAVR\mfile
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'd like to use a different interpreter than
/usr/local/bin/tixwish, edit the #! setting in the first line. The
standard Tk wish interpreter is supported as well as the tix toolkit
one.
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: 2004/07/15 20:51:08 $
Joerg Wunsch <j.gnu@uriah.heep.sax.de>

165
temp/mfile/help.html Normal file
View 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 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>

606
temp/mfile/htmlview.tcl Normal file
View 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 1.7 2004/07/15 20:50:48 j 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
}

14
temp/mfile/htmlview.xbm Normal file
View file

@ -0,0 +1,14 @@
#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, };

View file

@ -0,0 +1,223 @@
# Hey Emacs, this is a -*- makefile -*-
# AVR-GCC Makefile template, derived from the WinAVR template (which
# is public domain), believed to be neutral to any flavor of "make"
# (GNU make, BSD make, SysV make)
MCU = atmega128
FORMAT = ihex
TARGET = main
SRC = $(TARGET).c
ASRC =
OPT = s
# Name of this Makefile (used for "make depend").
MAKEFILE = Makefile
# Debugging format.
# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2.
# AVR (extended) COFF requires stabs, plus an avr-objcopy run.
DEBUG = stabs
# 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
CDEFS =
# Place -I options here
CINCS =
CDEBUG = -g$(DEBUG)
CWARN = -Wall -Wstrict-prototypes
CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
#CEXTRA = -Wa,-adhlns=$(<:.c=.lst)
CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CSTANDARD) $(CEXTRA)
#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
#Additional libraries.
# 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
PRINTF_LIB =
# 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
SCANF_LIB =
MATH_LIB = -lm
# External memory options
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
# used for variables (.data/.bss) and heap (malloc()).
#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
# only used for heap (malloc()).
#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
EXTMEMOPTS =
#LDMAP = $(LDFLAGS) -Wl,-Map=$(TARGET).map,--cref
LDFLAGS = $(EXTMEMOPTS) $(LDMAP) $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
# Programming support using avrdude. Settings and variables.
AVRDUDE_PROGRAMMER = stk200
AVRDUDE_PORT = /dev/lp0
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_BASIC = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
AVRDUDE_FLAGS = $(AVRDUDE_BASIC) $(AVRDUDE_NO_VERIFY) $(AVRDUDE_VERBOSE) $(AVRDUDE_ERASE_COUNTER)
CC = avr-gcc
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
SIZE = avr-size
NM = avr-nm
AVRDUDE = avrdude
REMOVE = rm -f
MV = mv -f
# Define all object files.
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
# Define all listing files.
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)
# Combine all necessary flags and optional flags.
# Add target processor to flags.
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
# Default target.
all: build
build: elf hex eep
elf: $(TARGET).elf
hex: $(TARGET).hex
eep: $(TARGET).eep
lss: $(TARGET).lss
sym: $(TARGET).sym
# Program the device.
program: $(TARGET).hex $(TARGET).eep
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
COFFCONVERT=$(OBJCOPY) --debugging \
--change-section-address .data-0x800000 \
--change-section-address .bss-0x800000 \
--change-section-address .noinit-0x800000 \
--change-section-address .eeprom-0x810000
coff: $(TARGET).elf
$(COFFCONVERT) -O coff-avr $(TARGET).elf $(TARGET).cof
extcoff: $(TARGET).elf
$(COFFCONVERT) -O coff-ext-avr $(TARGET).elf $(TARGET).cof
.SUFFIXES: .elf .hex .eep .lss .sym
.elf.hex:
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
.elf.eep:
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
# Create extended listing file from ELF output file.
.elf.lss:
$(OBJDUMP) -h -S $< > $@
# Create a symbol table from ELF output file.
.elf.sym:
$(NM) -n $< > $@
# Link: create ELF output file from object files.
$(TARGET).elf: $(OBJ)
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)
# Compile: create object files from C source files.
.c.o:
$(CC) -c $(ALL_CFLAGS) $< -o $@
# Compile: create assembler files from C source files.
.c.s:
$(CC) -S $(ALL_CFLAGS) $< -o $@
# Assemble: create object files from assembler source files.
.S.o:
$(CC) -c $(ALL_ASFLAGS) $< -o $@
# Target: clean project.
clean:
$(REMOVE) $(TARGET).hex $(TARGET).eep $(TARGET).cof $(TARGET).elf \
$(TARGET).map $(TARGET).sym $(TARGET).lss \
$(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d)
depend:
if grep '^# DO NOT DELETE' $(MAKEFILE) >/dev/null; \
then \
sed -e '/^# DO NOT DELETE/,$$d' $(MAKEFILE) > \
$(MAKEFILE).$$$$ && \
$(MV) $(MAKEFILE).$$$$ $(MAKEFILE); \
fi
echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' \
>> $(MAKEFILE); \
$(CC) -M -mmcu=$(MCU) $(CDEFS) $(CINCS) $(SRC) $(ASRC) >> $(MAKEFILE)
.PHONY: all build elf hex eep lss sym program coff extcoff clean depend

1601
temp/mfile/mfile.tcl Executable file

File diff suppressed because it is too large Load diff

14
temp/mfile/mfile.xbm Normal file
View file

@ -0,0 +1,14 @@
#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, };

BIN
temp/schaltplan-maus.pdf Normal file

Binary file not shown.