I have been following this tutorial for the DA15200 wifi shield , things were going well until I tried to build my project. In fact 2 different projects had the same issue it seems that the Eclipse make creates builds with lines to long for the O/S (windows12) to handle properly. Does someone know how to correct this issue? This seems to occur with the linker
|make: *** [makefile:174: all] Error 2|da16200|| |C/C++ Problem|
|make[1]: *** [makefile:183: da16200.elf] Error 87|da16200|| |C/C++ Problem|
There are a lots of ways to fix this, below are some
1. Use response files: Response files can help overcome command line length limitations. You can modify your makefile to use response files for linking.
Here’s a general approach:
makefile
$(TARGET).elf: $(OBJS)
@echo 'Creating response file'
@echo $(LDFLAGS) $(LIBDIRS) $(LIBS) > response.txt
@echo $(OBJS) >> response.txt
@echo 'Linking target: $@'
$(CC) @response.txt -o $@
2. Shorten paths: Try moving your project closer to the root of your drive to reduce path lengths.
3. Use shortened path names: Windows has a subst
command that can map a long path to a drive letter. For example:
subst X: C:\path\to\your\project
Then use “X:” in your Eclipse project settings.
4. Increase OS limits: Windows 10 and later versions have a registry setting to enable long paths. You can try enabling this:
a. Run regedit
b. Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
c. Set LongPathsEnabled to 1
d. Restart PC
Or try a different compiler
Russell,
Thank you for offering some suggestions, here is what I found, the makefile and submake files are all generated by Eclipse IDE so editing them doesn’t work easily. I had already shortened my path names and depth. Setting up a directory mapping might work but I’m not sure how to get Eclipse to use this in its auto-make creation process. I did look at setting the LongPathsEnabled but this didn’t help.
What I think is happening , is that the make file which Eclipse generates has the following line
arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -fno-move-loop-invariants -Werror -Wall -Wextra -Wconversion -Wshadow -Wdouble-promotion -g3 -T sections_xip.ld -nostartfiles -Xlinker --gc-sections -L"C:/Dialog_SDK/DA16200_SDK_FreeRTOS_v3.2.8.1/apps/da16200/get_started/projects/da16200/../../../../../core/bsp/ldscripts" -L"C:/Dialog_SDK/DA16200_SDK_FreeRTOS_v3.2.8.1/apps/da16200/get_started/projects/da16200/../../../../../library" -Wl,-Map,"da16200.map" --specs=nano.specs --specs=nosys.specs -o "da16200.elf" $(OBJS) $(USER_OBJS) -Wl,--start-group $(LIBS) -Wl,--end-group
When this makefile command is expanded the final command line is over 83K characters long, I think do to expanding $(OBJS) .
My final solution was to use Renesas E2Studio which was able to build the SDK projects fine.
TS-Russell
I am still looking for the project which is used to build the image which the Sparkfun WiFi Shield DA16200 is shipped with. Do know where I can find this?
Thanks
Michael
I think the images are on pg 40 here
There are additional tools here
Just as an FYI we have 1 additional guide here