(October 20 2014)
I’m seeing lots of confusion about the new master firmware that was released recently. This post will hopefully explain what’s going on and what you should do to keep working with your cortex.
First a small recap.
The cortex contains two micro-controllers, one we call the master processor, this is responsible for the most important functions of the cortex such as VEXnet and disabling motors during competition when autonomous and driver control periods end. The second is called the user processor, this is where the code we write in EasyC and ROBOTC (and PROS and ConVEX) runs. It has the code that reads the analog and digital ports, the UARTs, the I2C bus for the IMEs and requests that the master processor run motors at a given speed.
Both processors need firmware, the master processor can be programmed by the VEXnet upgrade utility but, for our convenience, both EasyC and ROBOTC contain the latest version of the master firmware that was available on the date that they were released. When a new version of master firmware is released there will be a short period when both EasyC and ROBOTC will have an old version, both companies usually release an update shortly after VEX releases new master firmware.
Last week VEX released new master firmware, V4.23.
ROBOTC V3.63 and V4.26 have the older master firmware V4.22
EasyC V4.1.2.7 also contains master firmware V4.22
The joystick also has a micro-controller that needs firmware, this is different firmware than that loaded into the cortex but usually has the same version number. When VEX releases new master firmware for the cortex a new version for the joystick is released as well, both of these are contained within the vexnet upgrade utility. The new joystick version is V4.23.
Now to the part that has been causing problems recently.
The VEXnet 2.0 keys also contain firmware that can be upgraded, this was not the case with the old black VEXnet 1.0 keys (which, although they contained a microprocessor, was programmed once at the factory by the manufacturer). VEXnet 2.0 has been at version 1.43 since April, this was the first stable release that we upgraded everyone to at worlds.
Last week V1.46 was released for the VEXnet 2.0 keys, this was a “security update” and due to that fact it was hard for VEX to maintain backwards compatibility with the existing cortex and joystick master firmware. I’m not going to explain what was changed but having though about the issue and looked into the changes I don’t think they had much choice but force an upgrade of both keys and cortex.
So
Cortex/joystick V4.22 can only use VEXnet 2.0 keys that contain V1.43.
Cortex/joystick V4.23 can only use VEXnet 2.0 keys that contain V1.46.
This is not an ideal situation, there is no visible indication as to the version in the VEXnet keys and we cannot read that in EasyC and ROBOTC.
If you use V1.43 (old) VEXnet 2.0 keys on a cortex/joystick with new master firmware the leds will flash as follows.
(almost accurate, but not quite, simulations)
If the paired cortex is turned off.
If the paired cortex is turned on.
Two red leds will flash, the new firmware understands these are older firmware keys and will not link.
Using updated VEXnet 2.0 keys with an old cortex/joystick is a bit tricker. The older master firmware does not understand the changes that have been made so the key tricks the cortex/joystick into rebooting. Both try to communicate with the VEXnet key and you get a similar effect to not being able to connect with each other. It look sort of like this (not an exact simulation, too time consuming to do).
So what do we need to do.
The preferred thing to do is upgrade all VEXnet 2.0 keys to V1.46 and cortex/joystick master firmware to V4.23. This needs to be done to all systems that will share the VEXnet keys, if you only do some systems then you may start mixing the incompatible versions. Do the upgrade with the official VEX/IFI tools (vexnet upgrade utility V4.1.5 and vexnet key firmware upgrade utility v1.46).
ROBOTC V3.63 and V4.26.
Ignore any warnings about wrong master firmware in the software inspection dialog, keep programming as usual.
EasyC
Uncheck “Verify vex system” in the download options dialog then program as usual. Upgrade when the next version of EasyC is released.
[ATTACH]8658[/ATTACH]
I think there were probably smarter ways to handle this update, however, that’s a discussion for another time in private.