News:

PROTON pic BASIC Compilers for PIC, PIC24, dsPIC33

Main Menu

Hex file not created

Started by shantanu@india, Nov 03, 2022, 10:45 AM

Previous topic - Next topic

shantanu@india

Confused!
Repeatedly compiling a basic file is only creating the mci and pbe files.. no hex file.
Should I restart the PC?
Regards
Shantanu

shantanu@india

Just made a small change so that the compiled code is slightly larger(20 bytes)... the hex file reappeared!!
A plausible solution might be MPLAB IPE(which I use to drive my PICKit3) somehow detected a bad hex file during the last compilation process(it gave a message to that effect) and deleted the hex file. Les can confirm whether the compiler DOES NOT generate any new hex file to overwrite the existing hex file if the source code is exactly the same.
Regards
Shantanu

John Lawton

Check for any hidden files?

shantanu@india

No hidden files. Nothing alarming.. just thought of sharing the issue.
Regards
Shantanu

shantanu@india

I don't know why a hex file of zero size was compiled...screenshot attached. It seems to an compiler issue.
Regards
Shantanu

John Lawton

Send the files to Les for his attention.

shantanu@india

Regards
Shantanu

top204

#7
The code listing was too long for the message.

It will not be the compiler for several reasons.

1. The amount of flash memory used is read from the .lst created by the assembler program, so if that is being destroyed by the O\S or something is stopping its completion, it is the O\S at fault. I never thought of adding something to check if the .lst file is there, because it is a part of the assembler program itself and is always created if the assembler completes the assembly of the code, as is the HEX file, and if it does not complete the assembly of the code, it returns an error and the compiler does not look for anything from it.

2. If it was the compiler, a lot of people would be seeing the problem because that is the fundamental of the compiler's operation itself, so if it does it once with a program, it would always do it.

However, if the assembler program is not operating correctly with what it is seeing, and is not presenting an address beside the "__eof" directive within the .lst file, the compiler is not setup to detect it because it should never happen. An example in the .lst file is:

0074                  01265 __eof

Where the hex value "0074" is the flash memory address at the end of the program. i.e. Its size.

shantanu@india

Yes Les, I also feel the compiler execution is being interrupted by the MPLAB IPE/OS in some way.
Absolutely random in nature.
Regards
Shantanu