diff --git a/nuttx/TODO b/nuttx/TODO index 343212a313..28ffa1387f 100644 --- a/nuttx/TODO +++ b/nuttx/TODO @@ -32,7 +32,7 @@ nuttx/ (0) ARM/LPC43x (arch/arm/src/lpc43xx/) (3) ARM/STR71x (arch/arm/src/str71x/) (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) (0) Intel x86 (arch/x86) (4) 8051 / MCS51 (arch/8051/) @@ -1349,11 +1349,6 @@ o ARM/LM3S6918 (arch/arm/src/lm3s/) 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 Description A USB device-side driver is in place but not well tested. At present, the apps/examples/usbserial test sometimes fails. The situation @@ -1376,11 +1371,6 @@ o ARM/STM32 (arch/arm/src/stm32/) Status: Open Priority: Medium-High - Title: FSMC EXTERNAL MEMORY UNTESTED - Description: FSMC external memory support is untested - Status: Open - Priority: Low - Title: DMA EXTENSIONS Description: DMA logic needs to be extended. DMA2, Channel 5, will not work 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 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 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 @@ -1417,6 +1401,16 @@ o ARM/STM32 (arch/arm/src/stm32/) Status: Open 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) ^^^^^^^^^^^^^^ diff --git a/nuttx/arch/z80/src/Makefile.zdsii b/nuttx/arch/z80/src/Makefile.zdsii index 30cb63b14f..7a145017c4 100644 --- a/nuttx/arch/z80/src/Makefile.zdsii +++ b/nuttx/arch/z80/src/Makefile.zdsii @@ -106,7 +106,7 @@ nuttx.linkcmd: $(LINKCMDTEMPLATE) ifeq ($(CONFIG_WINDOWS_NATIVE),y) @echo "$(TOPDIR)\nuttx"= \>>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 ifeq ($(CONFIG_ARCH_CHIP_Z8F640X),y) @echo "$(ZDSSTDLIBDIR)\chelprevaaD$(LIBEXT)", \>>nuttx.linkcmd diff --git a/nuttx/arch/z80/src/ez80/ez80f91_init.asm b/nuttx/arch/z80/src/ez80/ez80f91_init.asm index 17ef5f2952..fbce8502f0 100644 --- a/nuttx/arch/z80/src/ez80/ez80f91_init.asm +++ b/nuttx/arch/z80/src/ez80/ez80f91_init.asm @@ -37,7 +37,7 @@ ; Included Files ;************************************************************************** - include "ez80f91.inc" + include "ez80F91.inc" ;************************************************************************** ; Constants @@ -254,4 +254,4 @@ _ez80_oscfreqmult: ; dl _SYS_CLK_FREQ _ez80_sysclksrc: db _SYS_CLK_SRC - end \ No newline at end of file + end diff --git a/nuttx/binfmt/Makefile b/nuttx/binfmt/Makefile index 317d4a422f..932a5ec13b 100644 --- a/nuttx/binfmt/Makefile +++ b/nuttx/binfmt/Makefile @@ -36,38 +36,38 @@ -include $(TOPDIR)/Make.defs ifeq ($(WINTOOL),y) -INCDIROPT = -w +INCDIROPT = -w endif -CFLAGS += ${shell $(INCDIR) $(INCDIROPT) "$(CC)" $(TOPDIR)$(DELIM)sched} +CFLAGS += ${shell $(INCDIR) $(INCDIROPT) "$(CC)" "$(TOPDIR)$(DELIM)sched"} # Basic BINFMT source files -BINFMT_ASRCS = -BINFMT_CSRCS = binfmt_globals.c binfmt_register.c binfmt_unregister.c \ - binfmt_loadmodule.c binfmt_unloadmodule.c binfmt_execmodule.c \ - binfmt_exec.c binfmt_dumpmodule.c +BINFMT_ASRCS = +BINFMT_CSRCS = binfmt_globals.c binfmt_register.c binfmt_unregister.c \ + binfmt_loadmodule.c binfmt_unloadmodule.c binfmt_execmodule.c \ + binfmt_exec.c binfmt_dumpmodule.c # Symbol table source files -BINFMT_CSRCS += symtab_findbyname.c symtab_findbyvalue.c \ - symtab_findorderedbyname.c symtab_findorderedbyvalue.c +BINFMT_CSRCS += symtab_findbyname.c symtab_findbyvalue.c \ + symtab_findorderedbyname.c symtab_findorderedbyvalue.c # Add configured binary modules -VPATH = -SUBDIRS = -DEPPATH = --dep-path . +VPATH = +SUBDIRS = +DEPPATH = --dep-path . include libnxflat$(DELIM)Make.defs include libelf$(DELIM)Make.defs -BINFMT_AOBJS = $(BINFMT_ASRCS:.S=$(OBJEXT)) -BINFMT_COBJS = $(BINFMT_CSRCS:.c=$(OBJEXT)) +BINFMT_AOBJS = $(BINFMT_ASRCS:.S=$(OBJEXT)) +BINFMT_COBJS = $(BINFMT_CSRCS:.c=$(OBJEXT)) -BINFMT_SRCS = $(BINFMT_ASRCS) $(BINFMT_CSRCS) -BINFMT_OBJS = $(BINFMT_AOBJS) $(BINFMT_COBJS) +BINFMT_SRCS = $(BINFMT_ASRCS) $(BINFMT_CSRCS) +BINFMT_OBJS = $(BINFMT_AOBJS) $(BINFMT_COBJS) -BIN = libbinfmt$(LIBEXT) +BIN = libbinfmt$(LIBEXT) all: $(BIN) diff --git a/nuttx/configs/ez80f910200kitg/ostest/Make.defs b/nuttx/configs/ez80f910200kitg/ostest/Make.defs index 141a45e4ce..9f787ef1bb 100644 --- a/nuttx/configs/ez80f910200kitg/ostest/Make.defs +++ b/nuttx/configs/ez80f910200kitg/ostest/Make.defs @@ -51,9 +51,9 @@ ifeq ($(CONFIG_WINDOWS_NATIVE),y) # CFLAGs - ARCHASMINCLUDES = -include:'$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)' - EARCHASMINCLUDES = -include:'$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)' - ARCHSTDINCLUDES = -stdinc:"$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)" + ARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR) + EARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR) + ARCHSTDINCLUDES = -stdinc:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR) ARCHUSRINCLUDES = -usrinc:. else WINTOOL := y @@ -169,17 +169,18 @@ HEXEXT = .hex # object files into an archive ifeq ($(CONFIG_WINDOWS_NATIVE),y) + define PREPROCESS @echo CPP: $1->$2 $(Q) "$(CPP)" $(CPPFLAGS) $1 -o $2 endef define COMPILE - $(Q) "$(CC)" $(CFLAGS) $1 + $(Q) "$(CC)" $(CFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"} endef define ASSEMBLE - $(Q) "$(AS)" $(AFLAGS) $1 + $(Q) "$(AS)" $(AFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"} endef define ARCHIVE @@ -195,20 +196,20 @@ define CLEAN $(Q) if exist *.lod (del /f /q *.lod) $(Q) if exist *.lst (del /f /q *.lst) endef + else + define PREPROCESS @echo "CPP: $1->$2" $(Q) "$(CPP)" $(CPPFLAGS) $1 -o $2 endef define COMPILE - @#echo "CC: $1" - $(Q) (wfile=`cygpath -w "$1"`; "$(CC)" $(CFLAGS) $$wfile) + $(Q) "$(CC)" $(CFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"} endef define ASSEMBLE - @#echo "AS: $1" - $(Q) (wfile=`cygpath -w "$1"`; "$(AS)" $(AFLAGS) $$wfile) + $(Q) "$(AS)" $(AFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"} endef define ARCHIVE diff --git a/nuttx/drivers/Kconfig b/nuttx/drivers/Kconfig index 1d263ec145..8302d21b71 100644 --- a/nuttx/drivers/Kconfig +++ b/nuttx/drivers/Kconfig @@ -47,7 +47,8 @@ config CAN_EXTID bool "CAN extended IDs" default n ---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 int "CAN driver I/O buffer size" @@ -83,10 +84,10 @@ config PWM_PULSECOUNT bool "PWM Pulse Count Support" default n ---help--- - Some hardware will support generation of a fixed number of pulses. This - might be used, for example to support a stepper motor. If the hardware - will support a fixed pulse count, then this configuration should be set to - enable the capability. + Some hardware will support generation of a fixed number of pulses. + This might be used, for example to support a stepper motor. If the + hardware will support a fixed pulse count, then this configuration + should be set to enable the capability. endif @@ -147,23 +148,25 @@ config SPI_OWNBUS bool "SPI single device" default n ---help--- - Set if there is only one active device on the SPI bus. No locking or SPI - configuration will be performed. It is not necessary for clients to lock, - re-configure, etc.. + Set if there is only one active device on the SPI bus. No locking or + SPI configuration will be performed. It is not necessary for clients to + lock, re-configure, etc.. config SPI_EXCHANGE bool "SPI exchange" default y ---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 bool "SPI CMD/DATA" default n ---help--- - Devices on the SPI bus require out-of-band support to distinguish command - transfers from data transfers. Such devices will often support either 9-bit - SPI (yech) or 8-bit SPI and a GPIO output that selects between command and data. + Devices on the SPI bus require out-of-band support to distinguish + command transfers from data transfers. Such devices will often support + either 9-bit SPI (yech) or 8-bit SPI and a GPIO output that selects + between command and data. endif @@ -173,35 +176,36 @@ menuconfig RTC ---help--- This selection enables configuration of a real time clock (RTCdriver. 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 bool "Date/Time RTC Support" default n depends on RTC ---help--- - There are two general types of RTC: (1) A simple battery backed counter - that keeps the time when power is down, and (2) a full date / time RTC the - provides the date and time information, often in BCD format. If - RTC_DATETIME is selected, it specifies this second kind of RTC. In this - case, the RTC is used to "seed" the normal NuttX timer and the NuttX system - timer provides for higher resolution time. + There are two general types of RTC: (1) A simple battery backed + counter that keeps the time when power is down, and (2) a full + date / time RTC the provides the date and time information, often in + BCD format. If RTC_DATETIME is selected, it specifies this second kind + of RTC. In this case, the RTC is used to "seed" the normal NuttX timer + and the NuttX system timer provides for higher resolution time. config RTC_HIRES bool "Hi-Res RTC Support" default n depends on RTC && !RTC_DATETIME ---help--- - If RTC_DATETIME not selected, then the simple, battery backed counter is - used. There are two different implementations of such simple counters - based on the time resolution of the counter: The typical RTC keeps time - to resolution of 1 second, usually supporting a 32-bit time_t value. In - this case, the RTC is used to "seed" the normal NuttX timer and the NuttX - timer provides for higherresoution time. + If RTC_DATETIME not selected, then the simple, battery backed counter + is used. There are two different implementations of such simple + counters based on the time resolution of the counter: The typical RTC + keeps time to resolution of 1 second, usually supporting a 32-bit + time_t value. In this case, the RTC is used to "seed" the normal NuttX + timer and the NuttX timer provides for higherresoution time. - If RTC_HIRES is enabled in the NuttX configuration, then the RTC provides - higher resolution time and completely replaces the system timer for purpose - of date and time. + If RTC_HIRES is enabled in the NuttX configuration, then the RTC + provides higher resolution time and completely replaces the system + timer for purpose of date and time. config RTC_FREQUENCY int "Hi-Res RTC frequency" @@ -209,8 +213,8 @@ config RTC_FREQUENCY depends on RTC && !RTC_DATETIME && RTC_HIRES ---help--- 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 - to be one Hz. + must be provided. If RTC_HIRES is not defined, RTC_FREQUENCY is + assumed to be one Hz. config RTC_ALARM bool "RTC Alarm Support" @@ -224,8 +228,9 @@ menuconfig WATCHDOG bool "Watchdog Timer Support" default n ---help--- - This selection enables building of the "upper-half" watchdog timer driver. - See include/nuttx/watchdog.h for further watchdog timer driver information. + This selection enables building of the "upper-half" watchdog timer + driver. See include/nuttx/watchdog.h for further watchdog timer driver + information. if WATCHDOG endif @@ -348,7 +353,8 @@ menuconfig POWER bool "Power Management Support" default n ---help--- - Enable building of power-related devices (battery monitors, chargers, etc). + Enable building of power-related devices (battery monitors, chargers, + etc). if POWER source drivers/power/Kconfig @@ -386,8 +392,8 @@ menuconfig SERIAL default y ---help--- Front-end character drivers for chip-specific UARTs. This provide - some TTY-like functionality and are commonly used (but not required for) - the NuttX system console. See also include/nuttx/serial/serial.h + some TTY-like functionality and are commonly used (but not required + for) the NuttX system console. See also include/nuttx/serial/serial.h if SERIAL source drivers/serial/Kconfig diff --git a/nuttx/drivers/Makefile b/nuttx/drivers/Makefile index 575da606fe..13a5078236 100644 --- a/nuttx/drivers/Makefile +++ b/nuttx/drivers/Makefile @@ -85,15 +85,15 @@ ifeq ($(CONFIG_WATCHDOG),y) endif endif -AOBJS = $(ASRCS:.S=$(OBJEXT)) -COBJS = $(CSRCS:.c=$(OBJEXT)) +AOBJS = $(ASRCS:.S=$(OBJEXT)) +COBJS = $(CSRCS:.c=$(OBJEXT)) -SRCS = $(ASRCS) $(CSRCS) -OBJS = $(AOBJS) $(COBJS) +SRCS = $(ASRCS) $(CSRCS) +OBJS = $(AOBJS) $(COBJS) -BIN = libdrivers$(LIBEXT) +BIN = libdrivers$(LIBEXT) -all: $(BIN) +all: $(BIN) $(AOBJS): %$(OBJEXT): %.S $(call ASSEMBLE, $<, $@) @@ -101,7 +101,7 @@ $(AOBJS): %$(OBJEXT): %.S $(COBJS): %$(OBJEXT): %.c $(call COMPILE, $<, $@) -$(BIN): $(OBJS) +$(BIN): $(OBJS) $(call ARCHIVE, $@, $(OBJS)) .depend: Makefile $(SRCS) diff --git a/nuttx/tools/incdir.bat b/nuttx/tools/incdir.bat index a53afdd475..093c5bd2e3 100755 --- a/nuttx/tools/incdir.bat +++ b/nuttx/tools/incdir.bat @@ -55,16 +55,34 @@ if "%1"=="" ( echo ERROR: Missing compiler name goto :Usage ) + +set ccpath=%1 shift -rem Generate the compiler include path directives. Easy since only MinGW is -rem supported +set compiler= +for /F %%i in ("%ccpath%") do set compiler=%%~ni if "%1"=="" ( echo ERROR: Missing directory paths 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= :DirLoop @@ -78,11 +96,24 @@ if not exist %1 ( goto :Usage ) +if "%fmt%"=="zds" goto :GenerateZdsPath + if "%response"=="" ( set response=-I "%1" ) else ( set response=%response% -I "%1" ) +goto :EndOfDirLoop + +:GenerateZdsPath + +if "%response"=="" ( + set response=-usrinc:%1 +) else ( + set response=%response%;%1 +) + +:EndOfDirLoop shift goto :DirLoop