Particle Workbench, Local Compile and Platform_id

argon
Tags: #<Tag:0x00007f0393361850>

#1

Hi,

I’m trying to deploy some code that has been compiled against 0.8.0 rc27 on the Particle Workbench’s local compiler to a product, but the product system keeps complaining that the platform id does not match the products_platform_id.

Do I need to add anything in the local compile to tell it to add the needed platform id to the compilation?

Regards
Steve


#2

Have you set PRODUCT_ID() and PRDOUCT_VERSION() to match the product you have created in console?
Is the product created to be an Argon product?


#3

Yep.

Looking in the BIN I can see at the end that my product ID and Version is in there. But the platform type is set to FF. Maybe this is a bug?



#4

You should be able to get the PLATFORM_ID via particle binary inspect - that’d save you the need for HEX investigation.

BTW, if you ever had built locally for another mesh platform, you should run

make -f $PARTICLE_MAKEFILE clean-all

in Particle: Launch Compiler Shell to make sure there are no residues from the other platform.


#5

Thanks, I’ve done as you suggested and am getting the following for particle binary inspect
Blinky.bin
CRC is ok (8c0d444b)
Compiled for argon
This is an application module number 1 at version 5
It depends on a system module number 1 at version 326

In the make shell the PLATFORM and PLATFORM_ID variables are set to
Argon and 12

I’ve clean-all and compile-all and sent the .bin file to Particle Product firmware upload page but still get the same result.


#6

Do you get the message when uploading to the console into the Argon product or when you try to flash that binary locally via CLI?

In any case that’s something for @mstanley I’d guess.


#7

Only when uploading to the products firmware webpage for the product.

Not sure if you can upload a product via the particle cli. If you can then I’ve not found out how.


#8

Hey Johnny,

A bit of an odd question, but could you attempt to compile your firmware making use of the Web IDE and then attempting to upload that binary? Do let me know what you find out. If you aren’t able to reproduce the issue, I suspect the issue may be with Workbench. But if you are still experiencing it, I suspect there’s something mismatched with the console.

Depending on what you find out, this’ll help me rope in the right parties to try to resolve this issue.


#9

I’ll try but I have libraries, so may take time to get it in.

However I’ve discovered that it might be a boundary issue.

Compiling the code with x amount of code produces the error, but removing one line or adding a line and it uploads.

So for example If I have (This code is only a sample)

Adafruit_8x16matrix matrix = Adafruit_8x16matrix();

setup() {
blah blah;

matrix.clear();
matrix.display();

}

loop() {
blah blah;
}

Will compile fine and flash fine but will not upload to the product.

But if I then remove a line so its

Adafruit_8x16matrix matrix = Adafruit_8x16matrix();

setup() {
blah blah;

matrix.clear();
//matrix.display();

}

loop() {
blah blah;
}

Will upload or if I add an extra line of code it will upload. i.e.

matrix.clear();
matrix.display();
Serial.println("Extra line");

#10

That’s rather unusual. I think I’d like to get @m_m’s perspective on this.

From what I can gather, it sometimes works from your experience in workbench, and you seem to be able to change the state by either adding or removing lines. We’re not sure if this is the case with the web IDE as well though, as you’d have to import several libraries.

If @m_m isn’t able to conclusively identify any shortcomings in workbench causing complications here (or we determine it’s also occuring in the web IDE), this may be something on the console end, and might want to get @jvanier’s insight on this one.


#11

How about building via CLI particle compile argon .?
Or even a Worbench cloud build (which virtually does the same thing).

BTW, this

would better be

Adafruit_8x16matrix matrix;
// or if you had parameters
// Adafruit_8x16matrix matrix(para1, para2);

to avoid creation of temporary default instances.