Updatet Todo.txt ; Added some Sources
This commit is contained in:
parent
68fd7fdd89
commit
644121b478
20 changed files with 3050 additions and 2 deletions
Binary file not shown.
|
@ -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
6
temp/avrTest/autogen.sh
Executable 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
4
temp/avrTest/main.c
Normal file
|
@ -0,0 +1,4 @@
|
|||
int main() {
|
||||
int i = 1;
|
||||
return i;
|
||||
};
|
1
temp/avrTest/main.eep
Normal file
1
temp/avrTest/main.eep
Normal file
|
@ -0,0 +1 @@
|
|||
:00000001FF
|
BIN
temp/avrTest/main.elf
Executable file
BIN
temp/avrTest/main.elf
Executable file
Binary file not shown.
15
temp/avrTest/main.hex
Normal file
15
temp/avrTest/main.hex
Normal 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
223
temp/avrTest/makefile
Normal 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
BIN
temp/bestueckung-maus.pdf
Normal file
Binary file not shown.
BIN
temp/mfile.tar.gz
Normal file
BIN
temp/mfile.tar.gz
Normal file
Binary file not shown.
174
temp/mfile/README
Normal file
174
temp/mfile/README
Normal 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
165
temp/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 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 · <j.gnu@uriah.heep.sax.de> ·
|
||||
$Date: 2004/07/15 20:51:08 $</address>
|
||||
</html>
|
606
temp/mfile/htmlview.tcl
Normal file
606
temp/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 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
14
temp/mfile/htmlview.xbm
Normal 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, };
|
223
temp/mfile/makefile_template
Normal file
223
temp/mfile/makefile_template
Normal 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
1601
temp/mfile/mfile.tcl
Executable file
File diff suppressed because it is too large
Load diff
14
temp/mfile/mfile.xbm
Normal file
14
temp/mfile/mfile.xbm
Normal 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
BIN
temp/schaltplan-maus.pdf
Normal file
Binary file not shown.
Reference in a new issue