Browse Source

weitergem8

feature/2015
tixiv 16 years ago
parent
commit
f5c8abcc18
  1. 27
      COMPILING.txt
  2. 2
      compat/eeprom.h
  3. 2
      config.h
  4. 16
      defaults.mk
  5. 3
      rules.mk
  6. 1
      scrolltext/config.in
  7. 6
      scrolltext/scrolltext3.c
  8. 204
      simulator/i386pe.x
  9. 14
      simulator/main.c

27
COMPILING.txt

@ -0,0 +1,27 @@
**** Ubuntu Linux *****
To Compile for the AVR you'll need the packages gcc-avr and avr-libc. You'll
also need gcc and libncurses to be able to use menuconfig. To use the simulator
you'll also need libglut.
Type
$ make menuconfig
and set your settings or load one of the default profiles. Then type
$ make
to compile for the avr. You can upload the image to a borg-16's serial
bootloader (foodloader) by typing
$ make sflash
.
****Windows XP****
Under Windows you'll need to install the following things:
-WinAVR
-Cygwin with the following packages:
--gcc
--libncurses-devel
--make (the one that WinAVR delivers doesn't work right)
--opengl (for the simulator)
now go to the cygwin bash shell and use the same commands as with Linux to
compile and flash.

2
compat/eeprom.h

@ -13,6 +13,6 @@
uint16_t eeprom_read_word (const uint16_t *p);
#define eeprom_busy_wait()
#define EEMEM
#define EEMEM __attribute__((section(".eeprom")))
#endif

2
config.h

@ -18,7 +18,7 @@
//#define SCROLL_X_SPEED 20
//#define SCROLL_Y_SPEED 20
#define BORG_CAN
//#define BORG_CAN
// spi.[ch] defines
#define SPI_HARDWARE

16
defaults.mk

@ -27,11 +27,19 @@ LDFLAGS += -mmcu=$(MCU)
#############################################################################
#Settings for Simulator build
CFLAGS_SIM = -g -Wall -pedantic -std=c99 -O2
LDFLAGS_SIM = -Wl
#LIBS_SIM = -lglut -lpthread -lGL -lGLU
LIBS_SIM = -lglut32 -lglu32 -lopengl32
OSTYPE = $(shell echo $$OSTYPE)
#$(info $(OSTYPE))
ifeq ($(OSTYPE),cygwin)
CFLAGS_SIM = -g -Wall -pedantic -std=c99 -O2 -D_WIN32 -mno-cygwin
LDFLAGS_SIM = -Wl -mno-cygwin -T simulator/i386pe.x
LIBS_SIM = -lglut32 -lglu32 -lopengl32
else
CFLAGS_SIM = -g -Wall -pedantic -std=c99 -O2
LDFLAGS_SIM = -Wl
LIBS_SIM = -lglut -lpthread -lGL -lGLU
endif
##############################################################################
# the default target

3
rules.mk

@ -40,9 +40,6 @@ objects_sim: $(OBJECTS_SIM)
clean-common:
$(RM) $(TARGET) *.[odasE] *.d.new *~
$(RM) -r ./obj_avr

1
scrolltext/config.in

@ -8,7 +8,6 @@ choice 'Scrolltext Font' \
'Arial_8' SCROLLTEXT_FONT
int "Scrolltest buffer size" SCROLLTEXT_BUFFER_SIZE 128
int "Scrolltext default delay" SCROLLTEXT_DELAY 60
int "Default x speed" SCROLL_X_SPEED 20
int "Default y speed" SCROLL_Y_SPEED 20

6
scrolltext/scrolltext3.c

@ -3,6 +3,7 @@
#include <stdlib.h>
#include <string.h>
#include <setjmp.h>
#include <stdint.h>
#include "../config.h"
#include "scrolltext.h"
@ -16,6 +17,11 @@
#define MAX_FONTS 1
font fonts[MAX_FONTS];
#define MAX_SPECIALCOLORS 3
#ifndef AVR
#define strtok_r(s,d,l) strtok(s,d)
#endif
unsigned char PROGMEM colorTable[MAX_SPECIALCOLORS*NUM_ROWS] = {1, 1, 2, 3, 3, 2, 1, 1,
3, 3, 2, 1, 1, 2, 3, 3,
3, 3, 2, 2, 3, 3, 2, 2

204
simulator/i386pe.x

@ -0,0 +1,204 @@
/* Default linker script, for normal executables */
OUTPUT_FORMAT(pei-i386)
SEARCH_DIR("/usr/i686-pc-cygwin/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/usr/lib"); SEARCH_DIR("/usr/lib/w32api");
SECTIONS
{
. = 0;
/*.eeprom (NOLOAD) : { *.(eeprom) }*/
/* Make the virtual address and file offset synced if the alignment is
lower than the target page size. */
. = SIZEOF_HEADERS;
. = ALIGN(__section_alignment__);
.text __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) :
{
*(.init)
*(.text)
*(SORT(.text$*))
*(.glue_7t)
*(.glue_7)
___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*)); LONG (0);
___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*)); LONG (0);
*(.fini)
/* ??? Why is .gcc_exc here? */
*(.gcc_exc)
PROVIDE (etext = .);
*(.gcc_except_table)
}
/* The Cygwin32 library uses a section to avoid copying certain data
on fork. This used to be named ".data". The linker used
to include this between __data_start__ and __data_end__, but that
breaks building the cygwin32 dll. Instead, we name the section
".data_cygwin_nocopy" and explictly include it after __data_end__. */
.data BLOCK(__section_alignment__) :
{
__data_start__ = . ;
*(.data)
*(.data2)
*(SORT(.data$*))
*(.jcr)
__data_end__ = . ;
*(.data_cygwin_nocopy)
}
.rdata BLOCK(__section_alignment__) :
{
*(.rdata)
*(SORT(.rdata$*))
*(.eh_frame)
___RUNTIME_PSEUDO_RELOC_LIST__ = .;
__RUNTIME_PSEUDO_RELOC_LIST__ = .;
*(.rdata_runtime_pseudo_reloc)
___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
__RUNTIME_PSEUDO_RELOC_LIST_END__ = .;
}
.pdata BLOCK(__section_alignment__) :
{
*(.pdata)
}
.bss BLOCK(__section_alignment__) :
{
__bss_start__ = . ;
*(.bss)
*(COMMON)
__bss_end__ = . ;
}
.edata BLOCK(__section_alignment__) :
{
*(.edata)
}
/DISCARD/ :
{
*(.debug$S)
*(.debug$T)
*(.debug$F)
*(.drectve)
}
.idata BLOCK(__section_alignment__) :
{
/* This cannot currently be handled with grouped sections.
See pe.em:sort_sections. */
SORT(*)(.idata$2)
SORT(*)(.idata$3)
/* These zeroes mark the end of the import list. */
LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
SORT(*)(.idata$4)
SORT(*)(.idata$5)
SORT(*)(.idata$6)
SORT(*)(.idata$7)
}
.CRT BLOCK(__section_alignment__) :
{
___crt_xc_start__ = . ;
*(SORT(.CRT$XC*)) /* C initialization */
___crt_xc_end__ = . ;
___crt_xi_start__ = . ;
*(SORT(.CRT$XI*)) /* C++ initialization */
___crt_xi_end__ = . ;
___crt_xl_start__ = . ;
*(SORT(.CRT$XL*)) /* TLS callbacks */
/* ___crt_xl_end__ is defined in the TLS Directory support code */
___crt_xp_start__ = . ;
*(SORT(.CRT$XP*)) /* Pre-termination */
___crt_xp_end__ = . ;
___crt_xt_start__ = . ;
*(SORT(.CRT$XT*)) /* Termination */
___crt_xt_end__ = . ;
}
.tls BLOCK(__section_alignment__) :
{
___tls_start__ = . ;
*(.tls)
*(.tls$)
*(SORT(.tls$*))
___tls_end__ = . ;
}
.endjunk BLOCK(__section_alignment__) :
{
/* end is deprecated, don't use it */
PROVIDE (end = .);
PROVIDE ( _end = .);
__end__ = .;
}
.rsrc BLOCK(__section_alignment__) :
{
*(.rsrc)
*(SORT(.rsrc$*))
}
.reloc BLOCK(__section_alignment__) :
{
*(.reloc)
}
.stab BLOCK(__section_alignment__) (NOLOAD) :
{
*(.stab)
}
.stabstr BLOCK(__section_alignment__) (NOLOAD) :
{
*(.stabstr)
}
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section. Unlike other targets that fake this by putting the
section VMA at 0, the PE format will not allow it. */
/* DWARF 1.1 and DWARF 2. */
.debug_aranges BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_aranges)
}
.debug_pubnames BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_pubnames)
}
/* DWARF 2. */
.debug_info BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_info) *(.gnu.linkonce.wi.*)
}
.debug_abbrev BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_abbrev)
}
.debug_line BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_line)
}
.debug_frame BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_frame)
}
.debug_str BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_str)
}
.debug_loc BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_loc)
}
.debug_macinfo BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_macinfo)
}
/* SGI/MIPS DWARF 2 extensions. */
.debug_weaknames BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_weaknames)
}
.debug_funcnames BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_funcnames)
}
.debug_typenames BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_typenames)
}
.debug_varnames BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_varnames)
}
/* DWARF 3. */
.debug_ranges BLOCK(__section_alignment__) (NOLOAD) :
{
*(.debug_ranges)
}
}

14
simulator/main.c

@ -1,4 +1,6 @@
#include <stdio.h>
#include <setjmp.h>
#ifdef _WIN32
# include <GL/glut.h>
@ -18,24 +20,12 @@
# include <unistd.h>
#endif
#include <stdio.h>
#include <setjmp.h>
#include "../config.h"
#include "../display_loop.h"
#include "../pixel.h"
//#include "programm.h"
//#include "menu.h"
//#include "../tetris/logic.h"
#include "trackball.h"
//#include "../games/snake.h"
//#include "stonefly.h"
//#include "scrolltext.h"
unsigned char fakeport;
jmp_buf newmode_jmpbuf;
volatile unsigned char oldMode, oldOldmode, mode;
extern unsigned char waitForFire;

Loading…
Cancel
Save