ccgx booting and buttons - victronenergy/venus GitHub Wiki

Normal boot order

MLO -> Linux

  • It skips u-boot. Also known as Falcon mode [see e.g. http://www.denx.de/wiki/pub/U-Boot/MiniSummitELCE2013/2013-ELCE-U-Boot-Falcon-Boot.pdf]
  • Linux doesn't depend on u-boot, no atags, dtb etc are passed. Linux can be replaced without any modification to u-boot or its env.

Buttons that modify the boot process

  • When pressing the two top buttons, the CCGX will be reset. This is a pure hardware function.
  • When holding the left button of the five-button-central-pad while booting, MLO on NAND will start u-boot (in NAND) instead of its normal action: start the linux kernel. U-boot then looks for a .src script on either the sdcard or an USB-stick. When found, it executes that script. This is the mechanism typically used for firmware updating and recovery, also by customers.
  • Holding both the left button of the five-button-central-pad, and the top left button, also start u-boot. And then causes u-boot to stop and stay available: it won't start a .scr script, or continue normal boot in case no .scr script is found. This this for developers and experienced users. You can severely damage the boot process!

So, to get into u-boot, hold the two left buttons, and then momentarily press the top right button.

U-boot and SPL/MLO source code is here. Note that we have added one special feature into u-boot: it is possible config env such that MLO will always start u-boot. Boot-mode then no longer depends on status of five-button-central-pad-left-button.

User instructions to update ccgx firmware using an SD-card or USB stick are here: http://www.victronenergy.com/live/ccgx:firmware_updating

In case you have bricked the device, by putting a broken u-boot on the NAND, there is still a way to force it to boot from sdcard. Use a screwdriver to short some pin on the technexxion cpu-board (TODO: add info)

Worded a bit differently: to work on boot loaders, it is better to use a standard technexxion cpu-board, since that can be easily made to always check the sdcard. And once ready and confident, move over to a CCGX.

Programming at the factory

We receive the boards with a completely empty NAND. The CPU will then look for MLO at a special sector on the sdcard, and start that. And that sdcard is what we provide to our factory.