Flash on the chip has two regions: bootloader and firmware.
Firmware is needed for flight, bootloader just starts firmware and allows flashing new firmware. When you flash normal firmware with GCS it can't change anything in bootloader.
There are two ways to update bootloader
- Flashing bu_*.opwf (bootloader updater) firmware. Which if it boots must work a bit and it reflashes it's own bootloader. This won't work as flight firmware. If interrupted can corrupt bootloader as it would terminate flashing it and make futher flashing with this method impossile.
- Flashing by soldering together SBL pads and using df-util tool to flash file with *.bin extension for example ef_*.bin which is (entire flash, that is bootloader+firmware).
So what you probably did (trying to reconstruction possible actions) is you tried flashing bootloader updater opfw file. Which might not have finished updating bootloader or didn't boot at all.
Then you flashed some unknown bin file, which happens to work, but is unknown version. It could be this file is either compatible bootloader or the firmware+bootloader. I don't know.
I suggest you flash ef_cc3d.bin file with dfu-utils and SBL method from the LibrePilot GCS version you are using.
You need to short SBL pads. SBL is located on top side of board close to corner hole close to ESC/servo outputs (use 3.3v and SBL).
The CC3D SBL procedure cannot be done with USB. You need FTDI USB to Serial adapter.
Here is description how to update cc3d firmware with SBL method
http://www.southquay3d.com/index.php?route=news/article&news_id=9Just flash ef_cc3d.bin (ef stands for entire flash and flashed both bootloader and compatible with it firmware). If board is functional it should work and is all you need. After doing SBL method, next time you can just use GCS as correct bootloader is there.