In other environments, finding out how much program space is left is obvious. I am sure the same is the case with KDS. Please enlighten me.
Look in the console output - it should show you the details. Eg.
Invoking: Cross ARM GNU Create Flash Imagearm-none-eabi-objcopy -O ihex "uTaskerV1.4_BM.elf" "uTaskerV1.4_BM.hex"Finished building: uTaskerV1.4_BM.hex Invoking: Cross ARM GNU Create Listingarm-none-eabi-objdump --source --all-headers --demangle --line-numbers --wide "uTaskerV1.4_BM.elf" > "uTaskerV1.4_BM.lst"Finished building: uTaskerV1.4_BM.lst Invoking: Cross ARM GNU Print Sizearm-none-eabi-size --format=berkeley "uTaskerV1.4_BM.elf" text data bss dec hex filename 43933 196 16552 60681 ed09 uTaskerV1.4_BM.elfFinished building: uTaskerV1.4_BM.siz
19:12:24 Build Finished (took 20s.755ms)
If you generate a binary file output too you can simply look at its exact size in file explorer.
That is where I thought it would be. Maybe I am not looking at the right console. Is it in there somewhere? I can’t see it. Also, from your example output consule below, how do I know how much program space is left?
11:51:38 **** Incremental Build of configuration Debug for project x****
Building file: ../Sources/x.c
Invoking: Cross ARM GNU C Compiler
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -g3 -I"C:/nxp/workspace/x/Static_Code/PDD" -I"C:/nxp/workspace/x/Static_Code/IO_Map" -I"C:/nxp/workspace/x/Sources" -I"C:/nxp/workspace/X/Generated_Code" -std=c99 -MMD -MP -MF"Sources/X.d" -MT"Sources/X.o" -c -o "Sources/X.o" "../Sources/X.c"
Finished building: ../Sources/X.c
Building target: X.elf
Invoking: Cross ARM GNU C++ Linker
arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -g3 -T "C:/nxp/workspace/X/Project_Settings/Linker_Files/ProcessorExpert.ld" -Xlinker --gc-sections -L"C:/nxp/workspace/X/Project_Settings/Linker_Files" -Wl,-Map,"X.map" -u printffloat -specs=nano.specs -specs=nosys.specs -o "X.elf" ./Sources/Events.o ./Sources/FT800.o ./Sources/X.o ./Sources/main.o ./Project_Settings/Startup_Code/startup.o ./Generated_Code/AD_BUSY.o ./Generated_Code/ASerialLdd1.o ./Generated_Code/ATODRESET.o ./Generated_Code/BitIoLdd1.o ./Generated_Code/BitIoLdd10.o ./Generated_Code/BitIoLdd11.o ./Generated_Code/BitIoLdd12.o ./Generated_Code/BitIoLdd13.o ./Generated_Code/BitIoLdd2.o ./Generated_Code/BitIoLdd3.o ./Generated_Code/BitIoLdd4.o ./Generated_Code/BitIoLdd5.o ./Generated_Code/BitIoLdd6.o ./Generated_Code/BitIoLdd7.o ./Generated_Code/BitIoLdd8.o ./Generated_Code/BitIoLdd9.o ./Generated_Code/C11.o ./Generated_Code/C21.o ./Generated_Code/CAL1.o ./Generated_Code/CS.o ./Generated_Code/CS_ADC.o ./Generated_Code/CS_EEROM.o ./Generated_Code/CS_POT.o ./Generated_Code/Cpu.o ./Generated_Code/Inhr1.o ./Generated_Code/MCUC1.o ./Generated_Code/OS0.o ./Generated_Code/OS1.o ./Generated_Code/OS2.o ./Generated_Code/PD.o ./Generated_Code/PE_LDD.o ./Generated_Code/Q4C1.o ./Generated_Code/SM1.o ./Generated_Code/SM2.o ./Generated_Code/SMasterLdd1.o ./Generated_Code/SMasterLdd2.o ./Generated_Code/TI1.o ./Generated_Code/TI2.o ./Generated_Code/TI3.o ./Generated_Code/TU1.o ./Generated_Code/TU2.o ./Generated_Code/TU3.o ./Generated_Code/Term1.o ./Generated_Code/TimerIntLdd1.o ./Generated_Code/TimerIntLdd2.o ./Generated_Code/TimerIntLdd3.o ./Generated_Code/Vectors.o ./Generated_Code/WAIT1.o
Finished building target: X.elf
11:51:39 Build Finished (took 1s.342ms)
Link Engineering Company
Your build is not generating a binary/HEX file - you can check a box somewhere in the settings to get it to use objcpy() to do this and it possibly does the size command too.
In case of problems just call a bat file with command to do whatever is missing; it is more flexible that what KDS offers (the GCC binary folder contains all of the standard utilities to do such things).
The remaining size in Flash is (FLASH_SIZE - code size), assuming you have no areas reserved in Flash for parameter storage or file systems.
Ok, I found an option called print size. Here is what I get.
Invoking: Cross ARM GNU Print Size
arm-none-eabi-size --format=berkeley "x.elf"
text data bss dec hex filename
49892 204 3364 53460 d0d4 x.elf
Finished building: x.siz
I looked at the .elf file in windows and it’s property shows 1.07 MB. The my controller is the Kinetis® K60: 150MHz Cortex-M4F up to 1MB Flash (144pin).
I appreciate your support.
An ELF file contains lots of data (eg. symbol information of debugging) and so has nothing to do with the size of the binary that is loaded (eve small code of a few kBytes may have an ELF of 1 Mega Byte in size).
Configure to generate a .bin output and then you have the the exact size accurate to a byte.
Also, please check the following post.
text, data and bss: Code and Data Size Explained | MCU on Eclipse
Retrieving data ...