Issue: but when compiling in VSCode using Workbench, I get the following errors:
c:/users/bbeardmore/.particle/toolchains/gcc-arm/5.3.1/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/bin/ld.exe: c:/Users/bbeardmore/Dropbox/PelletPirate/PelletPirateC++_WB/target/PelletPirateC++_WB.elf section .text' will not fit in region APP_FLASH'
c:/users/bbeardmore/.particle/toolchains/gcc-arm/5.3.1/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/bin/ld.exe: region `APP_FLASH' overflowed by 26468 bytes
collect2.exe: error: ld returned 1 exit status
make[1]: *** [../build/module.mk:225: c:/Users/bbeardmore/Dropbox/PelletPirate/PelletPirateC++_WB/target/PelletPirateC++_WB.elf] Error 1
make[1]: Leaving directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/main'
make: *** [C:\Users\bbeardmore.particle\toolchains\buildscripts\1.0.0\Makefile:34: compile-user] Error 2
The terminal process terminated with exit code: 2
Is there any other setting I can try to avoid this false overflow issue when compiling locally? It seems the local compiler does not know the particle Photon build/size constraints.
Did you try a clean? There might be some old files lying around adding to the size of the build. Terminal > Run Tasks… from the menu and select Particle: Clean application (local).
tried clean, no luck. I still get the error. I can compile fine to the cloud and I can compile in the WEB IDE. Web IDE says my code has plenty of headroom.
Output of arm-none-eabi-size:
text data bss dec hex
54924 484 3200 58608 NaN
In a nutshell:
Flash used 55408 / 110592 50.1 %
RAM used 3684 / 20480 18.0 %
so I’m sure its’ something in my local settings… It seems like there is some setting where my local compile does not know the photon capacity… is there some tasks.json, settings.json or project.properties that I need to make sure is set correctly?
here’s the local compile error I get when I compile:
> Executing task in folder PelletPirateC++_WB: make -f 'C:\Users\bbeardmore\.particle\toolchains\buildscripts\1.0.0\Makefile' compile-user <
>
> cd "C:/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/main" && make all
> make[1]: Entering directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/main'
> make -C ../newlib_nano
> make[2]: Entering directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/newlib_nano'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/newlib_nano'
> make -C ../user
> make[2]: Entering directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/user'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/user'
> make -C ../wiring
> make[2]: Entering directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/wiring'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/wiring'
> make -C ../hal
> make[2]: Entering directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/hal'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/hal'
> make -C ../system
> make[2]: Entering directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/system'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/system'
> make -C ../services
> make[2]: Entering directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/services'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/services'
> make -C ../communication
> make[2]: Entering directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/communication'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/communication'
> make -C ../platform
> make[2]: Entering directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/platform'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/platform'
> make -C ../wiring_globals
> make[2]: Entering directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/wiring_globals'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/wiring_globals'
> make -C ../crypto
> make[2]: Entering directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/crypto'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/crypto'
> Building target: c:/Users/bbeardmore/Dropbox/PelletPirate/PelletPirateC++_WB/target/PelletPirateC++_WB.elf
> Invoking: ARM GCC C++ Linker
> mkdir -p c:/Users/bbeardmore/Dropbox/PelletPirate/PelletPirateC++_WB/target/
> arm-none-eabi-g++ -DSTM32_DEVICE -DSTM32F10X_MD -DPLATFORM_THREADING=0 -DPLATFORM_ID=0 -DPLATFORM_NAME=core -DUSBD_VID_SPARK=0x1D50 -DUSBD_PID_DFU=0x607F -DUSBD_PID_CDC=0x607D -g3 -gdwarf-2 -Os -mcpu=cortex-m3 -mthumb -flto -DINCLUDE_PLATFORM=1 -DPRODUCT_ID=0 -DPRODUCT_FIRMWARE_VERSION=65535 -DUSE_STDPERIPH_DRIVER -DDFU_BUILD_ENABLE -DMBEDTLS_CONFIG_FILE="<mbedtls_config.h>" -DSYSTEM_VERSION_STRING=0.7.0 -DRELEASE_BUILD -Werror -I../user/inc -I../wiring/inc -I../hal/inc -I../hal/shared -I../hal/src/core -I../hal/src/stm32 -I../system/inc -I../services/inc -I../communication/src -I../platform/shared/inc -I../platform/MCU/STM32F1xx/CMSIS/Include -I../platform/MCU/STM32F1xx/CMSIS/Device/ST/Include -I../platform/MCU/STM32F1xx/SPARK_Firmware_Driver/inc -I../platform/MCU/shared/STM32/inc -I../platform/MCU/STM32F1xx/STM32_USB_Device_Driver/inc -I../platform/MCU/STM32F1xx/STM32_StdPeriph_Driver/inc -I../platform/NET/CC3000/CC3000_Host_Driver -I../crypto/inc -I../crypto/mbedtls/include -I../dynalib/inc -I. -MD -MP -MF c:/Users/bbeardmore/Dropbox/PelletPirate/PelletPirateC++_WB/target/PelletPirateC++_WB.elf.d -ffunction-sections -fdata-sections -Wall -Wno-switch -Wno-error=deprecated-declarations -fmessage-length=0 -fno-strict-aliasing -DSPARK=1
> -DPARTICLE=1 -Wundef -DSTART_DFU_FLASHER_SERIAL_SPEED=14400 -DSTART_YMODEM_FLASHER_SERIAL_SPEED=28800 -DMODULE_VERSION=207 -DMODULE_FUNCTION=3 -DMODULE_DEPENDENCY=0,0,0 -DMODULE_DEPENDENCY2=0,0,0 -D_WINSOCK_H -D_GNU_SOURCE c:/Users/bbeardmore/Dropbox/PelletPirate/PelletPirateC++_WB/target/obj/./src/module_info.o
> c:/Users/bbeardmore/Dropbox/PelletPirate/PelletPirateC++_WB/target/obj/startup/startup_stm32f10x_md.o --output c:/Users/bbeardmore/Dropbox/PelletPirate/PelletPirateC++_WB/target/PelletPirateC++_WB.elf -nostartfiles -Xlinker --gc-sections -flto -Os -fuse-linker-plugin -Tlinker_stm32f10x_md_dfu.ld -L../build/arm/linker --specs=nano.specs -lc -lnosys -u _printf_float -Wl,-Map,c:/Users/bbeardmore/Dropbox/PelletPirate/PelletPirateC++_WB/target/PelletPirateC++_WB.map -L../build/target/user/platform-0-lto/PelletPirateC++_WB/ -L../build/target/wiring/platform-0-lto/ -L../build/target/system/platform-0-lto/ -L../build/target/services/platform-0-lto/ -L../build/target/communication/platform-0-lto-prod-0/ -L../build/target/hal/platform-0-lto/ -L../build/target/platform/platform-0-lto/ -L../build/target/wiring_globals/platform-0-lto/ -L../build/target/crypto/platform-0-lto/ -L../build/target/newlib_nano/platform-0-lto -L../build/arm/linker -Wl,--whole-archive -lnewlib_nano -luser -lwiring -lhal -lsystem -lservices -lcommunication -lplatform -lwiring_globals -lcrypto -Wl,--no-whole-archive
> c:/users/bbeardmore/.particle/toolchains/gcc-arm/5.3.1/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/bin/ld.exe: c:/Users/bbeardmore/Dropbox/PelletPirate/PelletPirateC++_WB/target/PelletPirateC++_WB.elf section `.text' will not fit in region `APP_FLASH'
> c:/users/bbeardmore/.particle/toolchains/gcc-arm/5.3.1/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/bin/ld.exe: region `APP_FLASH' overflowed by 26468 bytes
> collect2.exe: error: ld returned 1 exit status
> make[1]: *** [../build/module.mk:225: c:/Users/bbeardmore/Dropbox/PelletPirate/PelletPirateC++_WB/target/PelletPirateC++_WB.elf] Error 1
> make[1]: Leaving directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/main'
> make: *** [C:\Users\bbeardmore\.particle\toolchains\buildscripts\1.0.0\Makefile:34: compile-user] Error 2
> The terminal process terminated with exit code: 2
>
> Press any key to close the terminal.
thanks @rickkas7, I run the command and I get the message that it’s successfully set, but when I compile locally, I still see -DPLATFORM_NAME=core
where is this being pulled from? Can I edit it directly? Isn’t this pulled from my workspace file?
Can you start a new test project with a default *.ino? From there, set the targetPlatform to Photon & firmwareVersion to 0.7.0 and try to compile the full Device OS and the App. If that works then we can try to triage your current setup.
I’m not sure I follow you on default *.ino? do you mean create to NEW workspace and copy my project over into it and compile full Device OS and the App?
also, is “Photon” or “photon” case sensitive for the targetPlatform?
Sorry about that. I meant to say create a new project and do not copy any of your project over, just use the generated *.ino, which should only have an empty setup() and loop().
Case shouldn’t matter. targetPlatform should technically be lower case, which is what is set from the command, but we also convert it to lowercase before applying it.
ok kept it clean new project… none of my code… I set the platform to photon (selected it from the dropdown) and then did a full Device OS and the App compile and got this error:
> Executing task in folder TestProject1: make -f 'C:\Users\bbeardmore\.particle\toolchains\buildscripts\1.0.0\Makefile' compile-all <
"C:/Users/bbeardmore/.vscode/extensions/particle.particle-vscode-core-1.0.0-alpha.3/src/cli/bin/windows/amd64/particle.exe" preprocess c:/Users/bbeardmore/Desktop/TestProject/TestProject1/src/TestProject1.ino
cd "C:/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/modules" && make all
make[1]: Entering directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/modules'
makefile:20: *** "Platform 'core' does not support dynamic modules". Stop.
make[1]: Leaving directory '/cygdrive/c/Users/bbeardmore/.particle/toolchains/deviceOS/0.7.0/firmware-0.7.0/modules'
make: *** [C:\Users\bbeardmore\.particle\toolchains\buildscripts\1.0.0\Makefile:38: compile-all] Error 2
The terminal process terminated with exit code: 2
Press any key to close the terminal.
@bbeardmore can you launch a powershell instance and run the following: Get-ChildItem Env: then post the non-confidential results here? i’m wondering if you have any Particle-related items set (e.g. PLATFORM)
I had all sorts of issues with VSCode and the Particle extensions, many related to permissions. I am running with Win 10 and I ended up removing the VSCode install I had and reinstalled it with “run as adminstrator” privileges. I then setup the desktop shortcut to “run as adminstrator” as well. Then I installed the extensions as instructed and all my problems had disappeared. Hope this helps!
@peekay123 when I run as Admin, the 64-bit install tells me it’s not set to run as admin… do I want to continue… so I continued. then I right click and run VSCode as admin… but when I compile my empty program locally with just a setup and loop in it… I get the same error message as above, terminate with exit code: 2
@m_m I did the env dump… I see nothing in here that looks like a PLATFORM setting… but here’s the whole listing… I did not see anything 'sensitive" in here… so let me know if I goofed!
@bbeardmore, like I said, I uninstalled everything including VSC and started fresh. All I can think of is that a) You have an older version of VSC or b) VSC is not able to write to wherever the device type is stored in a file.
still no luck. very frustrating. I uninstalled everything, VSCode, blew away .particle folder, uninstalled particle extension, THEN reinstalled vscode as admin, set to load as admin, installed extensions, prompted to install compiler again, did that… still stuck on “core” platform.
I guess I’ll ask the question again… where is PLATFORM being pulled from? can I just hard code it?
@bbeardmore sorry for the frustration! fwiw, your feedback is super-helpful as we polish this product up as it deserves. obviously this is still a preview release so i would strongly recommend staying away if you are not comfortable managing a few bumps and annoyances.
if you are up for it, try deleting the Platform environment variable:
using powershell, i think you can just run Remove-Item Env:\Platform
i’m pretty sure windows env vars are case-insensitive. if so, you are likely getting a name collision and since we don’t recognize HPD our build scripts are defaulting to targeting a core. once you confirm Platform is deleted (running Get-ChildItem Env: should no longer include it), try our build tasks again.
once that’s all done, you can re-add the Platform env var with the original value of HPD unless you are sure you no longer need it
@m_mSUCCESS! … just one glitch that I worked around…I tried the PowerShell command line option you mentioned above and verified it was removed with Get-ChildItem Env: … tried to compile and it failed… so then I looked at the GUI and saw it was still there… so I used your other method (thanks!) and did the following steps to get SUCCESS!:
removed env variable Platform from GUI environment variable tool in windows per your link
closed VSCode, reopened it to my project
did a full clean via: Terminal --> Run Task --> Particle: Clean application & DeviceOS (local)
deleted the target folder in my project workspace.
did a full compile via: CTRL-SHIFT-B --> Particle: Compile application & DeviceOS (local)
I’m not sure all these steps are required but it worked for me! I am compiling locally! Much thanks for your help @m_m and all the rest on this thread! I hope this solution will help others!