Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Error in cleaning an NRF5 SDK 11 sketch: "make: *** ../../../../../../components/toolchain/gcc: Is a directory. Stop."

Hello,

I am currently writing firmware using NRF52 SDK 11.0 (there are plans to port to SDK 15 eventually, but for now I need to get it running with 11) on Ubuntu 18.04. After running "make clean" the console outputs "make: *** ../../../../../../components/toolchain/gcc: Is a directory.  Stop." I've never seen make fail in this way before.

I have the GCC ARM tools and the path variable is pointing to them. I did also just pull the firmware from a git repo. Is there anything in particular that would cause this failure?

Parents Reply Children
  • Hello,

    No, it doesn't seem to have that problem on any of the examples I tried. I think it probably is a problem with the Makefile. This makefile is the one from the sketch I'm compiling; what part of it is specific to SDK 15 and needs to be changed to work with SDK 11?

    The correct path in Makefile.posix is set correctly, unless I'm supposed to direct it to the bin folder or something rather than the root folder.

  • Your makefile points to specific things in the SDK 15 tree (file structure, file names, SoftDevice version, makefile common files etc), which is different in SDK 11.

    If you need to use SDK 11 for now, use one of the makefile's in the SDK 11 examples as a starting point, then later on move to a newer SDK version.,

     

  • Hello,

    I have gone through my makefile and removed all pointers to anything not in the SDK 11 filestructure. I now get the error "Makefile.common:12: *** Too many open files.  Stop." I have not made any changes to Makefile.common, at least not that I know of. This is my new Makefile in the main project.

    TARGETS          := nrf52832_xxaa
    OUTPUT_DIRECTORY := _build
    
    SDK_ROOT := $(realpath ../../../../../..)
    PROJ_DIR := ../../..
    
    $(OUTPUT_DIRECTORY)/nrf52832_xxaa.out: \
      LINKER_SCRIPT  := ble_app_hrs_gcc_nrf52.ld
    
    # Source files common to all targets
    SRC_FILES += \
      $(SDK_ROOT)/modules/nrfx/mdk/gcc_startup_nrf52.S \
      $(SDK_ROOT)/components/libraries/button/app_button.c \
      $(SDK_ROOT)/components/libraries/util/app_error.c \
      $(SDK_ROOT)/components/libraries/util/app_error_weak.c \
      $(SDK_ROOT)/components/libraries/scheduler/app_scheduler.c \
      $(SDK_ROOT)/components/libraries/timer/app_timer.c \
      $(SDK_ROOT)/components/libraries/util/app_util_platform.c \
      $(SDK_ROOT)/components/libraries/crc16/crc16.c \
      $(SDK_ROOT)/components/libraries/fds/fds.c \
      $(SDK_ROOT)/components/libraries/hardfault/hardfault_implementation.c \
      $(SDK_ROOT)/components/libraries/util/nrf_assert.c \
      $(SDK_ROOT)/components/libraries/fstorage/fstorage.c \
      $(SDK_ROOT)/components/libraries/experimental_memobj/nrf_memobj.c \
      $(SDK_ROOT)/components/libraries/pwr_mgmt/nrf_pwr_mgmt.c \
      $(SDK_ROOT)/components/libraries/sensorsim/sensorsim.c \
      $(SDK_ROOT)/components/drivers_nrf/nrf_drv_clock.c \
      $(SDK_ROOT)/components/drivers_nrf/nrfx_drv_gpiote.c \
      $(SDK_ROOT)/components/drivers_nrf/nrfx_uart.c \
      $(PROJ_DIR)/main.c \
      $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT.c \
      $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c \
      $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_printf.c \
      $(SDK_ROOT)/components/ble/common/ble_advdata.c \
      $(SDK_ROOT)/components/ble/ble_advertising/ble_advertising.c \
      $(SDK_ROOT)/components/ble/common/ble_conn_params.c \
      $(SDK_ROOT)/components/ble/common/ble_conn_state.c \
      $(SDK_ROOT)/components/ble/common/ble_srv_common.c \
      $(SDK_ROOT)/components/ble/peer_manager/gatt_cache_manager.c \
      $(SDK_ROOT)/components/ble/peer_manager/gatts_cache_manager.c \
      $(SDK_ROOT)/components/ble/peer_manager/id_manager.c \
      $(SDK_ROOT)/components/ble/peer_manager/peer_data_storage.c \
      $(SDK_ROOT)/components/ble/peer_manager/peer_database.c \
      $(SDK_ROOT)/components/ble/peer_manager/peer_id.c \
      $(SDK_ROOT)/components/ble/peer_manager/peer_manager.c \
      $(SDK_ROOT)/components/ble/peer_manager/pm_buffer.c \
      $(SDK_ROOT)/components/ble/peer_manager/pm_mutex.c \
      $(SDK_ROOT)/components/ble/peer_manager/security_dispatcher.c \
      $(SDK_ROOT)/components/ble/peer_manager/security_manager.c \
      $(SDK_ROOT)/components/ble/ble_services/ble_bas/ble_bas.c \
      $(SDK_ROOT)/components/ble/ble_services/ble_dis/ble_dis.c \
      $(SDK_ROOT)/components/ble/ble_services/ble_hrs/ble_hrs.c \
      $(SDK_ROOT)/components/softdevice/common/softdevice_handler/softdevice_handler.c \
      $(SDK_ROOT)/components/softdevice/common/softdevice_handler/softdevice_handler_appsh.c \
      $(SDK_ROOT)/components/nfc/ndef/connection_handover/nfc_ble_pair_msg.c \
    
    
    # Include folders common to all targets
    INC_FOLDERS += \
      $(SDK_ROOT)/components/nfc/ndef/generic/message \
      $(SDK_ROOT)/components/nfc/t2t_lib \
      $(SDK_ROOT)/components/ble/ble_services/ble_ancs_c \
      $(SDK_ROOT)/components/ble/ble_services/ble_ias_c \
      $(SDK_ROOT)/components/libraries/pwm \
      $(SDK_ROOT)/components/softdevice/s132/headers/nrf52 \
      $(SDK_ROOT)/components/drivers_nrf/hal \
      $(SDK_ROOT)/components/ble/ble_services/ble_gls \
      $(SDK_ROOT)/components/libraries/fstorage \
      $(SDK_ROOT)/components/nfc/ndef/text \
      $(SDK_ROOT)/components/libraries/gpiote \
      $(SDK_ROOT)/components/libraries/bootloader_dfu \
      $(SDK_ROOT)/components/nfc/ndef/connection_handover \
      $(SDK_ROOT)/components/nfc/ndef/generic/record \
      $(SDK_ROOT)/components/ble/ble_advertising \
      $(SDK_ROOT)/components/ble/ble_services/ble_bas_c \
      $(SDK_ROOT)/modules/nrfx/drivers/include \
      $(SDK_ROOT)/components/libraries/experimental_task_manager \
      $(SDK_ROOT)/components/ble/ble_services/ble_hrs_c \
      $(SDK_ROOT)/components/nfc/ndef/connection_handover/le_oob_rec \
      $(SDK_ROOT)/components/libraries/queue \
      $(SDK_ROOT)/components/libraries/pwr_mgmt \
      $(SDK_ROOT)/components/ble/ble_dtm \
      $(SDK_ROOT)/components/toolchain/CMSIS/include \
      $(SDK_ROOT)/components/ble/ble_services/ble_rscs_c \
      $(SDK_ROOT)/components/ble/common \
      $(SDK_ROOT)/components/ble/ble_services/ble_lls \
      $(SDK_ROOT)/components/nfc/ndef/connection_handover/ac_rec \
      $(SDK_ROOT)/components/ble/ble_services/ble_bas \
      $(SDK_ROOT)/components/libraries/experimental_section_vars \
      $(SDK_ROOT)/components/softdevice/s132/headers \
      $(SDK_ROOT)/components/ble/ble_services/ble_ans_c \
      $(SDK_ROOT)/components/libraries/slip \
      $(SDK_ROOT)/components/drivers_nrf/delay \
      $(SDK_ROOT)/components/libraries/mem_manager \
      $(SDK_ROOT)/components/ble/ble_services/ble_nus_c \
      $(SDK_ROOT)/components/softdevice/common \
      $(SDK_ROOT)/components/ble/ble_services/ble_ias \
      $(SDK_ROOT)/components/libraries/low_power_pwm \
      $(SDK_ROOT)/components/nfc/ndef/connection_handover/ep_oob_rec \
      $(SDK_ROOT)/components/nfc/ndef/parser/message \
      $(SDK_ROOT)/components/nfc/ndef/parser/record \
      $(SDK_ROOT)/components/ble/ble_services/ble_dfu \
      $(SDK_ROOT)/components \
      $(SDK_ROOT)/components/libraries/scheduler \
      $(SDK_ROOT)/components/ble/ble_services/ble_lbs \
      $(SDK_ROOT)/components/ble/ble_services/ble_hts \
      $(SDK_ROOT)/components/libraries/crc16 \
      $(SDK_ROOT)/components/nfc/t2t_parser \
      $(SDK_ROOT)/components/libraries/util \
      ../config \
      $(SDK_ROOT)/components/libraries/ecc \
      $(SDK_ROOT)/components/libraries/hardfault \
      $(SDK_ROOT)/components/ble/ble_services/ble_cscs \
      $(SDK_ROOT)/components/libraries/hci \
      $(SDK_ROOT)/components/libraries/timer \
      $(SDK_ROOT)/components/libraries/led_softblink \
      $(SDK_ROOT)/components/nfc/ndef/parser \
      $(SDK_ROOT)/components/nfc/ndef/connection_handover \
      $(SDK_ROOT)/components/ble/ble_services/ble_cts_c \
      $(SDK_ROOT)/components/nfc/ndef/connection_handover/le_oob_rec \
      $(SDK_ROOT)/components/ble/ble_services/ble_nus \
      $(SDK_ROOT)/components/libraries/twi_mngr \
      $(SDK_ROOT)/components/ble/ble_services/ble_hids \
      $(SDK_ROOT)/components/libraries/strerror \
      $(SDK_ROOT)/components/libraries/crc32 \
      $(SDK_ROOT)/components/nfc/ndef/connection_handover/ble_oob_advdata \
      $(SDK_ROOT)/components/libraries/usbd/class/audio \
      $(SDK_ROOT)/components/libraries/sensorsim \
      $(SDK_ROOT)/components/nfc/t2t_lib \
      $(SDK_ROOT)/components/ble/peer_manager \
      $(SDK_ROOT)/components/ble/ble_services/ble_tps \
      $(SDK_ROOT)/components/ble/ble_services/ble_dis \
      $(SDK_ROOT)/components/nfc/ndef/uri \
      $(SDK_ROOT)/components/libraries/button \
      $(SDK_ROOT)/components/libraries/twi \
      $(SDK_ROOT)/components/nfc/ndef/connection_handover/ep_oob_rec \
      $(SDK_ROOT)/external/segger_rtt \
      $(SDK_ROOT)/components/ble/ble_services/ble_lbs_c \
      $(SDK_ROOT)/components/libraries/sha256 \
      $(SDK_ROOT)/components/ble/ble_racp \
      $(SDK_ROOT)/components/libraries/fds \
      $(SDK_ROOT)/components/nfc/ndef/launchapp \
      $(SDK_ROOT)/components/ble/ble_services/ble_rscs \
      $(SDK_ROOT)/components/nfc/ndef/connection_handover/hs_rec \
      $(SDK_ROOT)/components/nfc/t2t_lib/hal_t2t \
      $(SDK_ROOT)/components/nfc/ndef/connection_handover/ac_rec \
      $(SDK_ROOT)/components/ble/ble_services/ble_hrs \
    
    # Libraries common to all targets
    LIB_FILES += \
    
    # Optimization flags
    OPT = -O3 -g3
    # Uncomment the line below to enable link time optimization
    #OPT += -flto
    
    # C flags common to all targets
    CFLAGS += $(OPT)
    CFLAGS += -DBLE_STACK_SUPPORT_REQD
    CFLAGS += -DBOARD_PCA10040
    CFLAGS += -DCONFIG_GPIO_AS_PINRESET
    CFLAGS += -DFLOAT_ABI_HARD
    CFLAGS += -DNRF52
    CFLAGS += -DNRF52832_XXAA
    CFLAGS += -DNRF52_PAN_74
    CFLAGS += -DNRF_SD_BLE_API_VERSION=6
    CFLAGS += -DS132
    CFLAGS += -DSOFTDEVICE_PRESENT
    CFLAGS += -DSWI_DISABLE0
    CFLAGS += -mcpu=cortex-m4
    CFLAGS += -mthumb -mabi=aapcs
    CFLAGS += -Wall -Werror
    CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
    # keep every function in a separate section, this allows linker to discard unused ones
    CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing
    CFLAGS += -fno-builtin -fshort-enums
    
    # C++ flags common to all targets
    CXXFLAGS += $(OPT)
    
    # Assembler flags common to all targets
    ASMFLAGS += -g3
    ASMFLAGS += -mcpu=cortex-m4
    ASMFLAGS += -mthumb -mabi=aapcs
    ASMFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
    ASMFLAGS += -DBLE_STACK_SUPPORT_REQD
    ASMFLAGS += -DBOARD_PCA10040
    ASMFLAGS += -DCONFIG_GPIO_AS_PINRESET
    ASMFLAGS += -DFLOAT_ABI_HARD
    ASMFLAGS += -DNRF52
    ASMFLAGS += -DNRF52832_XXAA
    ASMFLAGS += -DNRF52_PAN_74
    ASMFLAGS += -DNRF_SD_BLE_API_VERSION=6
    ASMFLAGS += -DS132
    ASMFLAGS += -DSOFTDEVICE_PRESENT
    ASMFLAGS += -DSWI_DISABLE0
    
    # Linker flags
    LDFLAGS += $(OPT)
    LDFLAGS += -mthumb -mabi=aapcs -L$(SDK_ROOT)/modules/nrfx/mdk -T$(LINKER_SCRIPT)
    LDFLAGS += -mcpu=cortex-m4
    LDFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
    # let linker dump unused sections
    LDFLAGS += -Wl,--gc-sections
    # use newlib in nano version
    LDFLAGS += --specs=nano.specs
    
    nrf52832_xxaa: CFLAGS += -D__HEAP_SIZE=8192
    nrf52832_xxaa: CFLAGS += -D__STACK_SIZE=8192
    nrf52832_xxaa: ASMFLAGS += -D__HEAP_SIZE=8192
    nrf52832_xxaa: ASMFLAGS += -D__STACK_SIZE=8192
    
    # Add standard libraries at the very end of the linker input, after all objects
    # that may need symbols provided by these libraries.
    LIB_FILES += -lc -lnosys -lm
    
    
    .PHONY: default help
    
    # Default target - first one defined
    default: nrf52832_xxaa
    
    # Print all targets that can be built
    help:
    	@echo following targets are available:
    	@echo		nrf52832_xxaa
    	@echo		flash_softdevice
    	@echo		sdk_config - starting external tool for editing sdk_config.h
    	@echo		flash      - flashing binary
    
    TEMPLATE_PATH := $(SDK_ROOT)/components/toolchain/gcc/Makefile.common
    
    #echo $(TEMPLATE_PATH)
    
    include $(TEMPLATE_PATH) # /Makefile.common
    
    $(foreach target, $(TARGETS), $(call define_target, $(target)))
    
    .PHONY: flash flash_softdevice erase
    
    # Flash the program
    flash: $(OUTPUT_DIRECTORY)/nrf52832_xxaa.hex
    	@echo Flashing: $<
    	nrfjprog -f nrf52 --program $< --sectorerase
    	nrfjprog -f nrf52 --reset
    
    # Flash softdevice
    flash_softdevice:
    	@echo Flashing: s132_nrf52_6.0.0_softdevice.hex
    	nrfjprog -f nrf52 --program $(SDK_ROOT)/components/softdevice/s132/hex/s132_nrf52_6.0.0_softdevice.hex --sectorerase
    	nrfjprog -f nrf52 --reset
    
    erase:
    	nrfjprog -f nrf52 --eraseall
    
    SDK_CONFIG_FILE := ../config/sdk_config.h
    CMSIS_CONFIG_TOOL := $(SDK_ROOT)/external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar
    sdk_config:
    	java -jar $(CMSIS_CONFIG_TOOL) $(SDK_CONFIG_FILE)
    

Related