From 23d5f84a46a3cd7d25fbe7e877bcf0efbf29452b Mon Sep 17 00:00:00 2001 From: matsutsuka Date: Wed, 16 Dec 2009 06:47:17 +0000 Subject: [PATCH] Workaround for compiling some examples available --- cpu/z80/Makefile.z80 | 29 +++++---- cpu/z80/z80def.h | 4 +- platform/pc-6001/Makefile | 49 ++++++++++++++- platform/pc-6001/Makefile.pc-6001 | 68 ++++++-------------- platform/pc-6001/contiki-desktop-main.c | 83 +++++++++++++++++++++++++ platform/pc-6001/contiki-main.c | 40 ++++-------- platform/pc-6001/ctk/ctk-conio_arch.c | 4 +- 7 files changed, 179 insertions(+), 98 deletions(-) create mode 100644 platform/pc-6001/contiki-desktop-main.c diff --git a/cpu/z80/Makefile.z80 b/cpu/z80/Makefile.z80 index b420ab650..7d8e420c9 100644 --- a/cpu/z80/Makefile.z80 +++ b/cpu/z80/Makefile.z80 @@ -2,7 +2,7 @@ # Makefile for z80/SDCC # @author Takahide Matsutsuka # -# $Id: Makefile.z80,v 1.14 2009/12/11 14:59:32 matsutsuka Exp $ +# $Id: Makefile.z80,v 1.15 2009/12/16 06:47:17 matsutsuka Exp $ # ### Compiler definitions @@ -25,16 +25,21 @@ ASFLAGS += LDFLAGS += -mz80 --out-fmt-ihx --no-std-crt0 AROPTS = -a +ifdef CONTIKI_PROJECT + CFLAGS += -DAUTOSTART_ENABLE=1 + CONTIKI_SOURCEFILES += $(CONTIKI_PROJECT).c +endif + ### CPU-dependent cleanup files -CLEAN += +CLEAN += *.ihx *.lnk *.sym contiki-$(TARGET).lib *.$(TARGET) ### CPU-dependent directories CONTIKI_CPU_DIRS = . dev lib loader ### CPU-dependent source files CONTIKI_SOURCEFILES += strcasecmp.c mtarch.c uip_arch.c \ - libconio_z80.c log-conio.c rs232.c \ - mef.c + libconio_z80.c log-conio.c rs232.c + CONTIKI_ASMFILES += uip_arch-asm.S crt0.S CONTIKI_ASMOBJECTFILES = ${addprefix $(OBJECTDIR)/,$(CONTIKI_ASMFILES:.S=.o)} @@ -64,17 +69,15 @@ $(OBJECTDIR)/%.o: %.cS endif #CUSTOM_RULE_ALLOBJS_TO_TARGETLIB -$(OBJECTDIR)/contiki-$(TARGET).lib: $(CONTIKI_OBJECTFILES) $(PROJECT_OBJECTFILES) $(CONTIKI_ASMOBJECTFILES) $(CONTIKI_CASMOBJECTFILES) +contiki-$(TARGET).lib: $(CONTIKI_OBJECTFILES) $(PROJECT_OBJECTFILES) $(CONTIKI_ASMOBJECTFILES) $(CONTIKI_CASMOBJECTFILES) rm -f $@ for target in $^; do echo $$target >> $@; done - sed -i -e "s/$(OBJECTDIR)\///" $@ + +#CUSTOM_RULE_LINK (workaround for compiling examples) +$(CONTIKI_PROJECT): $(CONTIKI_PROJECT).ihx + mv $(CONTIKI_PROJECT).ihx $(CONTIKI_PROJECT).$(TARGET) #CUSTOM_RULE_LINK -$(OBJECTDIR)/contiki.ihx: $(OBJECTDIR)/contiki-$(TARGET).lib $(OBJECTDIR)/crt0.o - $(CC) $(LDFLAGS) -o $@ $(OBJECTDIR)/crt0.o -L$(OBJECTDIR) -lcontiki-$(TARGET).lib - $(LD) -nf $(OBJECTDIR)/contiki - mv $(OBJECTDIR)/contiki.map . - -$(OBJECTDIR)/%.ihx: $(OBJECTDIR)/contiki-$(TARGET).lib $(OBJECTDIR)/%*.o - $(CC) $(LDPFLAGS) -o $@ $(OBJECTDIR)/$*.o -lcontiki-$(TARGET).lib +%.ihx: contiki-$(TARGET).lib + $(CC) $(LDFLAGS) -o $@ $(OBJECTDIR)/crt0.o -lcontiki-$(TARGET).lib $(LD) -nf $* diff --git a/cpu/z80/z80def.h b/cpu/z80/z80def.h index 4145bfb11..60f8d524d 100644 --- a/cpu/z80/z80def.h +++ b/cpu/z80/z80def.h @@ -27,7 +27,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: z80def.h,v 1.7 2009/07/09 18:26:55 matsutsuka Exp $ + * $Id: z80def.h,v 1.8 2009/12/16 06:47:17 matsutsuka Exp $ * */ @@ -44,7 +44,7 @@ #define CC_CONF_FUNCTION_POINTER_ARGS 1 #define CC_CONF_FASTCALL -#define CC_CONF_VA_ARGS 1 +#define CC_CONF_VA_ARGS 0 #define CC_CONF_UNSIGNED_CHAR_BUGS 0 #define CC_CONF_REGISTER_ARGS 0 diff --git a/platform/pc-6001/Makefile b/platform/pc-6001/Makefile index b2cbfc33c..13095ffcc 100644 --- a/platform/pc-6001/Makefile +++ b/platform/pc-6001/Makefile @@ -2,7 +2,7 @@ # Makefile for PC-6001 using z80/SDCC # @author Takahide Matsutsuka # -# $Id: Makefile,v 1.6 2007/11/28 10:11:55 matsutsuka Exp $ +# $Id: Makefile,v 1.7 2009/12/16 06:47:18 matsutsuka Exp $ # CONTIKI = ../.. @@ -16,7 +16,6 @@ APPS_NETWORK_SERVER = program-handler cmdd telnetd shell PLATFORM_APPS_DESKTOP = multithread tinysample PLATFORM_APPS_NETWORK = webserver-mini - PLATFORM_APPS=$(PLATFORM_APPS_DESKTOP) ifeq ($(MAKECMDGOALS),client) @@ -27,6 +26,42 @@ else APPS = $(APPS_DESKTOP) endif +# Default values +MEMORY=32K +PLATFORM_APPS=$(PLATFORM_APPS_DESKTOP) +CONTIKI_TARGET_MAIN = contiki-desktop-main.c +CTKCONF = NORMAL +LOADER = 0 + +# Target dependent options +ifeq ($(MAKECMDGOALS),p62) + ARCH=PC6001MK2 +else ifeq ($(MAKECMDGOALS),p6A) + ARCH=PC6001A +else ifeq ($(MAKECMDGOALS),minimal) + MEMORY=16K + CONTIKI_TARGET_MAIN=contiki-minimal-main.c +else ifeq ($(MAKECMDGOALS),serial) + CONTIKI_TARGET_MAIN=contiki-serial-main.c +else ifeq ($(MAKECMDGOALS),rom) + CTKCONF=NOICON + MEMORY=ROM + LOADER = 1 + CONTIKI_TARGET_MAIN=contiki-loader-main.c +else ifeq ($(MAKECMDGOALS),load) + CTKCONF=NOICON + LOADER = 1 + CONTIKI_TARGET_MAIN=contiki-loader-main.c +else ifeq ($(MAKECMDGOALS),server) + CTKCONF=SERVER + PLATFORM_APPS = $(PLATFORM_APPS_NETWORK) + CONTIKI_TARGET_MAIN=contiki-server-main.c +else ifeq ($(MAKECMDGOALS),client) + CTKCONF=CLIENT + PLATFORM_APPS = $(PLATFORM_APPS_NETWORK) + CONTIKI_TARGET_MAIN=contiki-client-main.c +endif + all : p6 p6 : contiki @@ -39,4 +74,14 @@ load : contiki server : contiki client : contiki +remove-ctk: + rm -f obj_$(TARGET)/ctk*; + rm -f contiki.ihex +remove-net: + rm -f ${addprefix obj_$(TARGET)/,uip*.o hc.o psock.o rawpacket-udp.o resolv.o slip*.o tcp*.o uaod*.o rime*.o http*.o web*.o}; + rm -f contiki.ihex +remove-mt: + rm -f obj_$(TARGET)/mt*.o + rm -f contiki.ihex + include $(CONTIKI)/Makefile.include diff --git a/platform/pc-6001/Makefile.pc-6001 b/platform/pc-6001/Makefile.pc-6001 index 3fd8d3f5a..2dde283a3 100644 --- a/platform/pc-6001/Makefile.pc-6001 +++ b/platform/pc-6001/Makefile.pc-6001 @@ -2,51 +2,30 @@ # Makefile for PC-6001 using z80/SDCC # @author Takahide Matsutsuka # -# $Id: Makefile.pc-6001,v 1.12 2009/12/11 14:59:31 matsutsuka Exp $ +# $Id: Makefile.pc-6001,v 1.13 2009/12/16 06:47:18 matsutsuka Exp $ # ifndef CONTIKI $(error CONTIKI not defined! You must specify where CONTIKI resides!) endif -# Default values -ARCH=PC6001 -MEMORY=32K -PLATFORM_APPS=$(PLATFORM_APPS_DESKTOP) -CONTIKI_TARGET_MAIN = contiki-main.c -CTKCONF = NORMAL -LOADER = 0 - -# Target dependent options -ifeq ($(MAKECMDGOALS),p62) - ARCH=PC6001MK2 -else ifeq ($(MAKECMDGOALS),p6A) - ARCH=PC6001A -else ifeq ($(MAKECMDGOALS),minimal) - MEMORY=16K - CONTIKI_TARGET_MAIN=contiki-minimal-main.c -else ifeq ($(MAKECMDGOALS),serial) - CONTIKI_TARGET_MAIN=contiki-serial-main.c -else ifeq ($(MAKECMDGOALS),rom) - CTKCONF=NOICON - MEMORY=ROM - LOADER = 1 - CONTIKI_TARGET_MAIN=contiki-loader-main.c -else ifeq ($(MAKECMDGOALS),load) - CTKCONF=NOICON - LOADER = 1 - CONTIKI_TARGET_MAIN=contiki-loader-main.c -else ifeq ($(MAKECMDGOALS),server) - CTKCONF=SERVER - PLATFORM_APPS = $(PLATFORM_APPS_NETWORK) - CONTIKI_TARGET_MAIN=contiki-server-main.c -else ifeq ($(MAKECMDGOALS),client) - CTKCONF=CLIENT - PLATFORM_APPS = $(PLATFORM_APPS_NETWORK) - CONTIKI_TARGET_MAIN=contiki-client-main.c +### setup default values +ifndef ARCH + ARCH=PC6001 +endif +ifndef MEMORY + MEMORY=32K +endif +ifndef CONTIKI_TARGET_MAIN + CONTIKI_TARGET_MAIN = contiki-main.c +endif +ifndef CTKCONF + CTKCONF=NORMAL +endif +ifndef LOADER + LOADER=0 endif -### setup default values ifndef HEX2BIN HEX2BINDIR = ../../tools/z80/hex2bin/ HEX2BIN = $(HEX2BINDIR)/hexameter @@ -56,7 +35,6 @@ endif PLATFORM = $(CONTIKI)/platform/$(TARGET) CONTIKI_TARGET_DIRS = . ctk dev loader CFLAGS += -DMEMORY_$(MEMORY) -DARCH_$(ARCH) -DCTK_$(CTKCONF) -#-Wp-includecontiki-conf.h ifeq ($(MEMORY),16K) LDFLAGS += --code-loc 0xc40f --data-loc 0 @@ -108,24 +86,14 @@ contiki: $(HEX2BIN) contiki.p6 .SUFFIXES: -%.p6: $(OBJECTDIR)/%.ihx +%.p6: %.ihx $(HEX2BIN) $(HEX2BINFLAGS) $< $(HEX2BINDIR)/ihx/suffix.ihx -%.rom: $(OBJECTDIR)/%.ihx +%.rom: %.ihx $(HEX2BIN) $(HEX2BINFLAGS) $< $(HEX2BIN): cd $(HEX2BINDIR); make -remove-ctk: - rm -f obj_$(TARGET)/ctk*; - rm -f contiki.ihex -remove-net: - rm -f ${addprefix obj_$(TARGET)/,uip*.o hc.o psock.o rawpacket-udp.o resolv.o slip*.o tcp*.o uaod*.o rime*.o http*.o web*.o}; - rm -f contiki.ihex -remove-mt: - rm -f obj_$(TARGET)/mt*.o - rm -f contiki.ihex - ### Define the CPU directory CONTIKI_CPU=$(CONTIKI)/cpu/z80 include $(CONTIKI_CPU)/Makefile.z80 diff --git a/platform/pc-6001/contiki-desktop-main.c b/platform/pc-6001/contiki-desktop-main.c new file mode 100644 index 000000000..4154dc62d --- /dev/null +++ b/platform/pc-6001/contiki-desktop-main.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2007, Takahide Matsutsuka. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $Id: contiki-desktop-main.c,v 1.1 2009/12/16 06:47:18 matsutsuka Exp $ + * + */ + +/* + * \file + * This is a sample main file with desktop. + * \author + * Takahide Matsutsuka + */ + +#include "contiki.h" + +#include "program-handler.h" +#include "about-dsc.h" +#include "calc-dsc.h" +#include "process-list-dsc.h" +#include "shell-dsc.h" +#include "mt-test-dsc.h" + +#if WITH_LOADER_ARCH +#include "directory-dsc.h" +#endif + +/*---------------------------------------------------------------------------*/ +int +main(void) +{ + /* initialize process manager. */ + process_init(); + + /* start services */ + process_start(&ctk_process, NULL); + process_start(&program_handler_process, NULL); + process_start(&etimer_process, NULL); + + /* register programs to the program handler */ +#if WITH_LOADER_ARCH + program_handler_add(&directory_dsc, "Directory", 1); + program_handler_add(&processes_dsc, "Processes", 1); + // program_handler_add(&shell_dsc, "Command shell", 1); +#else + program_handler_add(&processes_dsc, "Processes", 1); + program_handler_add(&mttest_dsc, "Multithread", 1); + program_handler_add(&calc_dsc, "Calculator", 1); + program_handler_add(&about_dsc, "About", 1); +// program_handler_add(&shell_dsc, "Command shell", 1); +#endif + + while(1) { + process_run(); + etimer_request_poll(); + } +} diff --git a/platform/pc-6001/contiki-main.c b/platform/pc-6001/contiki-main.c index 2df42b854..b5d3a0564 100644 --- a/platform/pc-6001/contiki-main.c +++ b/platform/pc-6001/contiki-main.c @@ -27,29 +27,28 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: contiki-main.c,v 1.3 2008/07/20 07:44:39 matsutsuka Exp $ + * $Id: contiki-main.c,v 1.4 2009/12/16 06:47:18 matsutsuka Exp $ * */ /* * \file - * This is a sample main file with desktop. + * This is a main file for standard configuration. * \author * Takahide Matsutsuka */ #include "contiki.h" +#include "ctk/ctk.h" -#include "program-handler.h" -#include "about-dsc.h" -#include "calc-dsc.h" -#include "process-list-dsc.h" -#include "shell-dsc.h" -#include "mt-test-dsc.h" +#ifndef WITHOUT_GUI +#define CTK_PROCESS &ctk_process, +#else /* WITH_GUI */ +#define CTK_PROCESS +#endif /* WITH_GUI */ -#if WITH_LOADER_ARCH -#include "directory-dsc.h" -#endif +PROCINIT(CTK_PROCESS + &etimer_process); /*---------------------------------------------------------------------------*/ int @@ -57,24 +56,7 @@ main(void) { /* initialize process manager. */ process_init(); - - /* start services */ - process_start(&ctk_process, NULL); - process_start(&program_handler_process, NULL); - process_start(&etimer_process, NULL); - - /* register programs to the program handler */ -#if WITH_LOADER_ARCH - program_handler_add(&directory_dsc, "Directory", 1); - program_handler_add(&processes_dsc, "Processes", 1); - // program_handler_add(&shell_dsc, "Command shell", 1); -#else - program_handler_add(&processes_dsc, "Processes", 1); - program_handler_add(&mttest_dsc, "Multithread", 1); - program_handler_add(&calc_dsc, "Calculator", 1); - program_handler_add(&about_dsc, "About", 1); -// program_handler_add(&shell_dsc, "Command shell", 1); -#endif + autostart_start(autostart_processes); while(1) { process_run(); diff --git a/platform/pc-6001/ctk/ctk-conio_arch.c b/platform/pc-6001/ctk/ctk-conio_arch.c index eccdcd063..b02941444 100644 --- a/platform/pc-6001/ctk/ctk-conio_arch.c +++ b/platform/pc-6001/ctk/ctk-conio_arch.c @@ -27,7 +27,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: ctk-conio_arch.c,v 1.3 2007/09/29 04:10:00 matsutsuka Exp $ + * $Id: ctk-conio_arch.c,v 1.4 2009/12/16 06:47:18 matsutsuka Exp $ * */ @@ -71,7 +71,7 @@ const u8_t off_widget_textentry_state = offsetof(struct ctk_widget, widget) + #if CTK_CONF_HYPERLINK const u8_t off_widget_hyperlink_text = offsetof(struct ctk_widget, widget) + offsetof(struct ctk_widget_hyperlink, text); -#endif CTK_CONF_HYPERLINK +#endif /* CTK_CONF_HYPERLINK */ #if CTK_CONF_ICONS const u8_t off_widget_icon_title = offsetof(struct ctk_widget, widget) +