A few more Windows native build fixes for eZ80

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5383 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2012-11-22 21:21:48 +00:00
parent d65f74a804
commit ef504df1bc
8 changed files with 121 additions and 89 deletions

28
TODO
View file

@ -32,7 +32,7 @@ nuttx/
(0) ARM/LPC43x (arch/arm/src/lpc43xx/) (0) ARM/LPC43x (arch/arm/src/lpc43xx/)
(3) ARM/STR71x (arch/arm/src/str71x/) (3) ARM/STR71x (arch/arm/src/str71x/)
(3) ARM/LM3S6918 (arch/arm/src/lm3s/) (3) ARM/LM3S6918 (arch/arm/src/lm3s/)
(6) ARM/STM32 (arch/arm/src/stm32/) (4) ARM/STM32 (arch/arm/src/stm32/)
(3) AVR (arch/avr) (3) AVR (arch/avr)
(0) Intel x86 (arch/x86) (0) Intel x86 (arch/x86)
(4) 8051 / MCS51 (arch/8051/) (4) 8051 / MCS51 (arch/8051/)
@ -1349,11 +1349,6 @@ o ARM/LM3S6918 (arch/arm/src/lm3s/)
o ARM/STM32 (arch/arm/src/stm32/) o ARM/STM32 (arch/arm/src/stm32/)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Title: NOR FLASH DRIVER
Description: NOR Flash driver with FTL layer to support a file system.
Status: Open
Priority: Low
Title: USBSERIAL ISSUES Title: USBSERIAL ISSUES
Description A USB device-side driver is in place but not well tested. At Description A USB device-side driver is in place but not well tested. At
present, the apps/examples/usbserial test sometimes fails. The situation present, the apps/examples/usbserial test sometimes fails. The situation
@ -1376,11 +1371,6 @@ o ARM/STM32 (arch/arm/src/stm32/)
Status: Open Status: Open
Priority: Medium-High Priority: Medium-High
Title: FSMC EXTERNAL MEMORY UNTESTED
Description: FSMC external memory support is untested
Status: Open
Priority: Low
Title: DMA EXTENSIONS Title: DMA EXTENSIONS
Description: DMA logic needs to be extended. DMA2, Channel 5, will not work Description: DMA logic needs to be extended. DMA2, Channel 5, will not work
because the DMA2 channels 4 & 5 share the same interrupt. because the DMA2 channels 4 & 5 share the same interrupt.
@ -1388,12 +1378,6 @@ o ARM/STM32 (arch/arm/src/stm32/)
Priority: Low until someone needs DMA1, Channel 5 (ADC3, UART4_TX, TIM5_CH1, or Priority: Low until someone needs DMA1, Channel 5 (ADC3, UART4_TX, TIM5_CH1, or
TIM8_CH2). TIM8_CH2).
Title: UNFINISHED DRIVERS
Description: The following drivers are incomplete: DAC. The following drivers
are untested: DMA on the F4, CAN.
Status: Open
Priority: Medium
Title: F4 SDIO MULTI-BLOCK TRANSFER FAILURES Title: F4 SDIO MULTI-BLOCK TRANSFER FAILURES
Description: If you use a large I/O buffer to access the file system, then the Description: If you use a large I/O buffer to access the file system, then the
MMCSD driver will perform multiple block SD transfers. With DMA MMCSD driver will perform multiple block SD transfers. With DMA
@ -1417,6 +1401,16 @@ o ARM/STM32 (arch/arm/src/stm32/)
Status: Open Status: Open
Priority: Low (I am not even sure if this is a problem yet). Priority: Low (I am not even sure if this is a problem yet).
Title: DMA FROM EXTERNAL, FSMC MEMORY
Description: I have seen a problem on F1 where all SDIO DMAs work exist for
write DMAs from FSMC memory (i.e., from FSMC memory to SDIO).
Read transfers work fine (SDIO to FSMC memory). The failure is
a data underrun error with zero bytes of data transferred. The
workaround for now is to use DMA buffers allocted from internal
SRAM.
Status: Open
Priority: Low
o AVR (arch/avr) o AVR (arch/avr)
^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^

View file

@ -106,7 +106,7 @@ nuttx.linkcmd: $(LINKCMDTEMPLATE)
ifeq ($(CONFIG_WINDOWS_NATIVE),y) ifeq ($(CONFIG_WINDOWS_NATIVE),y)
@echo "$(TOPDIR)\nuttx"= \>>nuttx.linkcmd @echo "$(TOPDIR)\nuttx"= \>>nuttx.linkcmd
@echo "$(ARCHSRCDIR)\$(HEAD_OBJ)", \>>nuttx.linkcmd @echo "$(ARCHSRCDIR)\$(HEAD_OBJ)", \>>nuttx.linkcmd
$(Q) for %%G in ($(LINKLIBS)) do ( echo "$(TOPDIR)\lib\%%G", \>>nuttx.linkcmd; ) $(Q) for %%G in ($(LINKLIBS)) do ( echo "$(TOPDIR)\lib\%%G", \>>nuttx.linkcmd )
@echo "$(ARCHSRCDIR)\board\libboard$(LIBEXT)", \>>nuttx.linkcmd @echo "$(ARCHSRCDIR)\board\libboard$(LIBEXT)", \>>nuttx.linkcmd
ifeq ($(CONFIG_ARCH_CHIP_Z8F640X),y) ifeq ($(CONFIG_ARCH_CHIP_Z8F640X),y)
@echo "$(ZDSSTDLIBDIR)\chelprevaaD$(LIBEXT)", \>>nuttx.linkcmd @echo "$(ZDSSTDLIBDIR)\chelprevaaD$(LIBEXT)", \>>nuttx.linkcmd

View file

@ -37,7 +37,7 @@
; Included Files ; Included Files
;************************************************************************** ;**************************************************************************
include "ez80f91.inc" include "ez80F91.inc"
;************************************************************************** ;**************************************************************************
; Constants ; Constants
@ -254,4 +254,4 @@ _ez80_oscfreqmult:
; dl _SYS_CLK_FREQ ; dl _SYS_CLK_FREQ
_ez80_sysclksrc: _ez80_sysclksrc:
db _SYS_CLK_SRC db _SYS_CLK_SRC
end end

View file

@ -36,38 +36,38 @@
-include $(TOPDIR)/Make.defs -include $(TOPDIR)/Make.defs
ifeq ($(WINTOOL),y) ifeq ($(WINTOOL),y)
INCDIROPT = -w INCDIROPT = -w
endif endif
CFLAGS += ${shell $(INCDIR) $(INCDIROPT) "$(CC)" $(TOPDIR)$(DELIM)sched} CFLAGS += ${shell $(INCDIR) $(INCDIROPT) "$(CC)" "$(TOPDIR)$(DELIM)sched"}
# Basic BINFMT source files # Basic BINFMT source files
BINFMT_ASRCS = BINFMT_ASRCS =
BINFMT_CSRCS = binfmt_globals.c binfmt_register.c binfmt_unregister.c \ BINFMT_CSRCS = binfmt_globals.c binfmt_register.c binfmt_unregister.c \
binfmt_loadmodule.c binfmt_unloadmodule.c binfmt_execmodule.c \ binfmt_loadmodule.c binfmt_unloadmodule.c binfmt_execmodule.c \
binfmt_exec.c binfmt_dumpmodule.c binfmt_exec.c binfmt_dumpmodule.c
# Symbol table source files # Symbol table source files
BINFMT_CSRCS += symtab_findbyname.c symtab_findbyvalue.c \ BINFMT_CSRCS += symtab_findbyname.c symtab_findbyvalue.c \
symtab_findorderedbyname.c symtab_findorderedbyvalue.c symtab_findorderedbyname.c symtab_findorderedbyvalue.c
# Add configured binary modules # Add configured binary modules
VPATH = VPATH =
SUBDIRS = SUBDIRS =
DEPPATH = --dep-path . DEPPATH = --dep-path .
include libnxflat$(DELIM)Make.defs include libnxflat$(DELIM)Make.defs
include libelf$(DELIM)Make.defs include libelf$(DELIM)Make.defs
BINFMT_AOBJS = $(BINFMT_ASRCS:.S=$(OBJEXT)) BINFMT_AOBJS = $(BINFMT_ASRCS:.S=$(OBJEXT))
BINFMT_COBJS = $(BINFMT_CSRCS:.c=$(OBJEXT)) BINFMT_COBJS = $(BINFMT_CSRCS:.c=$(OBJEXT))
BINFMT_SRCS = $(BINFMT_ASRCS) $(BINFMT_CSRCS) BINFMT_SRCS = $(BINFMT_ASRCS) $(BINFMT_CSRCS)
BINFMT_OBJS = $(BINFMT_AOBJS) $(BINFMT_COBJS) BINFMT_OBJS = $(BINFMT_AOBJS) $(BINFMT_COBJS)
BIN = libbinfmt$(LIBEXT) BIN = libbinfmt$(LIBEXT)
all: $(BIN) all: $(BIN)

View file

@ -51,9 +51,9 @@ ifeq ($(CONFIG_WINDOWS_NATIVE),y)
# CFLAGs # CFLAGs
ARCHASMINCLUDES = -include:'$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)' ARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
EARCHASMINCLUDES = -include:'$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)' EARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
ARCHSTDINCLUDES = -stdinc:"$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)" ARCHSTDINCLUDES = -stdinc:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
ARCHUSRINCLUDES = -usrinc:. ARCHUSRINCLUDES = -usrinc:.
else else
WINTOOL := y WINTOOL := y
@ -169,17 +169,18 @@ HEXEXT = .hex
# object files into an archive # object files into an archive
ifeq ($(CONFIG_WINDOWS_NATIVE),y) ifeq ($(CONFIG_WINDOWS_NATIVE),y)
define PREPROCESS define PREPROCESS
@echo CPP: $1->$2 @echo CPP: $1->$2
$(Q) "$(CPP)" $(CPPFLAGS) $1 -o $2 $(Q) "$(CPP)" $(CPPFLAGS) $1 -o $2
endef endef
define COMPILE define COMPILE
$(Q) "$(CC)" $(CFLAGS) $1 $(Q) "$(CC)" $(CFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"}
endef endef
define ASSEMBLE define ASSEMBLE
$(Q) "$(AS)" $(AFLAGS) $1 $(Q) "$(AS)" $(AFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"}
endef endef
define ARCHIVE define ARCHIVE
@ -195,20 +196,20 @@ define CLEAN
$(Q) if exist *.lod (del /f /q *.lod) $(Q) if exist *.lod (del /f /q *.lod)
$(Q) if exist *.lst (del /f /q *.lst) $(Q) if exist *.lst (del /f /q *.lst)
endef endef
else else
define PREPROCESS define PREPROCESS
@echo "CPP: $1->$2" @echo "CPP: $1->$2"
$(Q) "$(CPP)" $(CPPFLAGS) $1 -o $2 $(Q) "$(CPP)" $(CPPFLAGS) $1 -o $2
endef endef
define COMPILE define COMPILE
@#echo "CC: $1" $(Q) "$(CC)" $(CFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"}
$(Q) (wfile=`cygpath -w "$1"`; "$(CC)" $(CFLAGS) $$wfile)
endef endef
define ASSEMBLE define ASSEMBLE
@#echo "AS: $1" $(Q) "$(AS)" $(AFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"}
$(Q) (wfile=`cygpath -w "$1"`; "$(AS)" $(AFLAGS) $$wfile)
endef endef
define ARCHIVE define ARCHIVE

View file

@ -47,7 +47,8 @@ config CAN_EXTID
bool "CAN extended IDs" bool "CAN extended IDs"
default n default n
---help--- ---help---
Enables support for the 29-bit extended ID. Default Standard 11-bit IDs. Enables support for the 29-bit extended ID. Default Standard 11-bit
IDs.
config CAN_FIFOSIZE config CAN_FIFOSIZE
int "CAN driver I/O buffer size" int "CAN driver I/O buffer size"
@ -83,10 +84,10 @@ config PWM_PULSECOUNT
bool "PWM Pulse Count Support" bool "PWM Pulse Count Support"
default n default n
---help--- ---help---
Some hardware will support generation of a fixed number of pulses. This Some hardware will support generation of a fixed number of pulses.
might be used, for example to support a stepper motor. If the hardware This might be used, for example to support a stepper motor. If the
will support a fixed pulse count, then this configuration should be set to hardware will support a fixed pulse count, then this configuration
enable the capability. should be set to enable the capability.
endif endif
@ -147,23 +148,25 @@ config SPI_OWNBUS
bool "SPI single device" bool "SPI single device"
default n default n
---help--- ---help---
Set if there is only one active device on the SPI bus. No locking or SPI Set if there is only one active device on the SPI bus. No locking or
configuration will be performed. It is not necessary for clients to lock, SPI configuration will be performed. It is not necessary for clients to
re-configure, etc.. lock, re-configure, etc..
config SPI_EXCHANGE config SPI_EXCHANGE
bool "SPI exchange" bool "SPI exchange"
default y default y
---help--- ---help---
Driver supports a single exchange method (vs a recvblock() and sndblock ()methods). Driver supports a single exchange method (vs a recvblock() and
sndblock() methods).
config SPI_CMDDATA config SPI_CMDDATA
bool "SPI CMD/DATA" bool "SPI CMD/DATA"
default n default n
---help--- ---help---
Devices on the SPI bus require out-of-band support to distinguish command Devices on the SPI bus require out-of-band support to distinguish
transfers from data transfers. Such devices will often support either 9-bit command transfers from data transfers. Such devices will often support
SPI (yech) or 8-bit SPI and a GPIO output that selects between command and data. either 9-bit SPI (yech) or 8-bit SPI and a GPIO output that selects
between command and data.
endif endif
@ -173,35 +176,36 @@ menuconfig RTC
---help--- ---help---
This selection enables configuration of a real time clock (RTCdriver. This selection enables configuration of a real time clock (RTCdriver.
See include/nuttx/rtc.h for further watchdog timer driver information. See include/nuttx/rtc.h for further watchdog timer driver information.
Most RTC drivers are MCU specific and may require other specific settings. Most RTC drivers are MCU specific and may require other specific
settings.
config RTC_DATETIME config RTC_DATETIME
bool "Date/Time RTC Support" bool "Date/Time RTC Support"
default n default n
depends on RTC depends on RTC
---help--- ---help---
There are two general types of RTC: (1) A simple battery backed counter There are two general types of RTC: (1) A simple battery backed
that keeps the time when power is down, and (2) a full date / time RTC the counter that keeps the time when power is down, and (2) a full
provides the date and time information, often in BCD format. If date / time RTC the provides the date and time information, often in
RTC_DATETIME is selected, it specifies this second kind of RTC. In this BCD format. If RTC_DATETIME is selected, it specifies this second kind
case, the RTC is used to "seed" the normal NuttX timer and the NuttX system of RTC. In this case, the RTC is used to "seed" the normal NuttX timer
timer provides for higher resolution time. and the NuttX system timer provides for higher resolution time.
config RTC_HIRES config RTC_HIRES
bool "Hi-Res RTC Support" bool "Hi-Res RTC Support"
default n default n
depends on RTC && !RTC_DATETIME depends on RTC && !RTC_DATETIME
---help--- ---help---
If RTC_DATETIME not selected, then the simple, battery backed counter is If RTC_DATETIME not selected, then the simple, battery backed counter
used. There are two different implementations of such simple counters is used. There are two different implementations of such simple
based on the time resolution of the counter: The typical RTC keeps time counters based on the time resolution of the counter: The typical RTC
to resolution of 1 second, usually supporting a 32-bit time_t value. In keeps time to resolution of 1 second, usually supporting a 32-bit
this case, the RTC is used to "seed" the normal NuttX timer and the NuttX time_t value. In this case, the RTC is used to "seed" the normal NuttX
timer provides for higherresoution time. timer and the NuttX timer provides for higherresoution time.
If RTC_HIRES is enabled in the NuttX configuration, then the RTC provides If RTC_HIRES is enabled in the NuttX configuration, then the RTC
higher resolution time and completely replaces the system timer for purpose provides higher resolution time and completely replaces the system
of date and time. timer for purpose of date and time.
config RTC_FREQUENCY config RTC_FREQUENCY
int "Hi-Res RTC frequency" int "Hi-Res RTC frequency"
@ -209,8 +213,8 @@ config RTC_FREQUENCY
depends on RTC && !RTC_DATETIME && RTC_HIRES depends on RTC && !RTC_DATETIME && RTC_HIRES
---help--- ---help---
If RTC_HIRES is defined, then the frequency of the high resolution RTC If RTC_HIRES is defined, then the frequency of the high resolution RTC
must be provided. If RTC_HIRES is not defined, RTC_FREQUENCY is assumed must be provided. If RTC_HIRES is not defined, RTC_FREQUENCY is
to be one Hz. assumed to be one Hz.
config RTC_ALARM config RTC_ALARM
bool "RTC Alarm Support" bool "RTC Alarm Support"
@ -224,8 +228,9 @@ menuconfig WATCHDOG
bool "Watchdog Timer Support" bool "Watchdog Timer Support"
default n default n
---help--- ---help---
This selection enables building of the "upper-half" watchdog timer driver. This selection enables building of the "upper-half" watchdog timer
See include/nuttx/watchdog.h for further watchdog timer driver information. driver. See include/nuttx/watchdog.h for further watchdog timer driver
information.
if WATCHDOG if WATCHDOG
endif endif
@ -348,7 +353,8 @@ menuconfig POWER
bool "Power Management Support" bool "Power Management Support"
default n default n
---help--- ---help---
Enable building of power-related devices (battery monitors, chargers, etc). Enable building of power-related devices (battery monitors, chargers,
etc).
if POWER if POWER
source drivers/power/Kconfig source drivers/power/Kconfig
@ -386,8 +392,8 @@ menuconfig SERIAL
default y default y
---help--- ---help---
Front-end character drivers for chip-specific UARTs. This provide Front-end character drivers for chip-specific UARTs. This provide
some TTY-like functionality and are commonly used (but not required for) some TTY-like functionality and are commonly used (but not required
the NuttX system console. See also include/nuttx/serial/serial.h for) the NuttX system console. See also include/nuttx/serial/serial.h
if SERIAL if SERIAL
source drivers/serial/Kconfig source drivers/serial/Kconfig

View file

@ -85,15 +85,15 @@ ifeq ($(CONFIG_WATCHDOG),y)
endif endif
endif endif
AOBJS = $(ASRCS:.S=$(OBJEXT)) AOBJS = $(ASRCS:.S=$(OBJEXT))
COBJS = $(CSRCS:.c=$(OBJEXT)) COBJS = $(CSRCS:.c=$(OBJEXT))
SRCS = $(ASRCS) $(CSRCS) SRCS = $(ASRCS) $(CSRCS)
OBJS = $(AOBJS) $(COBJS) OBJS = $(AOBJS) $(COBJS)
BIN = libdrivers$(LIBEXT) BIN = libdrivers$(LIBEXT)
all: $(BIN) all: $(BIN)
$(AOBJS): %$(OBJEXT): %.S $(AOBJS): %$(OBJEXT): %.S
$(call ASSEMBLE, $<, $@) $(call ASSEMBLE, $<, $@)
@ -101,7 +101,7 @@ $(AOBJS): %$(OBJEXT): %.S
$(COBJS): %$(OBJEXT): %.c $(COBJS): %$(OBJEXT): %.c
$(call COMPILE, $<, $@) $(call COMPILE, $<, $@)
$(BIN): $(OBJS) $(BIN): $(OBJS)
$(call ARCHIVE, $@, $(OBJS)) $(call ARCHIVE, $@, $(OBJS))
.depend: Makefile $(SRCS) .depend: Makefile $(SRCS)

View file

@ -55,16 +55,34 @@ if "%1"=="" (
echo ERROR: Missing compiler name echo ERROR: Missing compiler name
goto :Usage goto :Usage
) )
set ccpath=%1
shift shift
rem Generate the compiler include path directives. Easy since only MinGW is set compiler=
rem supported for /F %%i in ("%ccpath%") do set compiler=%%~ni
if "%1"=="" ( if "%1"=="" (
echo ERROR: Missing directory paths echo ERROR: Missing directory paths
goto :Usage goto :Usage
) )
rem Check for some well known, non-GCC Windows native tools that require
rem a special output format as well as special paths
:GetFormat
set fmt=std
if "%compiler%"=="ez8cc" goto :SetZdsFormt
if "%compiler%"=="zneocc" goto :SetZdsFormt
if "%compiler%"=="ez80cc" goto :SetZdsFormt
goto :GeneratePaths
:SetZdsFormt
set fmt=zds
rem Generate the compiler include path directives.
:GeneratePaths
set response= set response=
:DirLoop :DirLoop
@ -78,11 +96,24 @@ if not exist %1 (
goto :Usage goto :Usage
) )
if "%fmt%"=="zds" goto :GenerateZdsPath
if "%response"=="" ( if "%response"=="" (
set response=-I "%1" set response=-I "%1"
) else ( ) else (
set response=%response% -I "%1" set response=%response% -I "%1"
) )
goto :EndOfDirLoop
:GenerateZdsPath
if "%response"=="" (
set response=-usrinc:%1
) else (
set response=%response%;%1
)
:EndOfDirLoop
shift shift
goto :DirLoop goto :DirLoop