Hello! Here's some information on how we handle product firmware upgrades in the field, also known as bootloading, with PSoC 6.
First, some background:
With PSoC 3, 4, and 5LP, we designed Bootloader and Bootloadable Components for Cypress's PSoC Creator IDE. These Components have several features. The most notable feature is that they enable bootloading that is agnostic to the host communication channel; that is, you can easily make a bootloader that downloads a new application from the host via UART, I2C, SPI, USB, BLE, and other common communication channels. You can even use a custom communication channel.
Furthermore, the complexities of bootloader and application image placement in target device flash are largely handled for you, making it very fast and easy to get simple bootloaders up and running. Advanced features such as dual images, golden image, host command timing, validation, and security are also available. For more information, see AN73854, PSoC Introduction to Bootloaders.
With PSoC 6, we took a different approach that enables more custom bootloader solutions. To do that, we replaced the PSoC Creator Components with a software development kit (SDK). We made the Bootloader SDK available as part of the Cypress Peripheral Driver Library (PDL) so that it can be used with other IDEs as well as PSoC Creator. You can use the Bootloader SDK to design bootloading solutions of arbitrary flexibility and complexity, while maintaining support for rapid development for common use cases. The Bootloader SDK has the following features:
- Downloads application images from a host through a number of transport interfaces, e.g. BLE, USB, UART, I2C, SPI.
- Programs application images to specified addresses in internal flash, SMIF, or external memory.
- Supports up to 28 application images. Any application can have bootloader capabilities, and can bootload any other image.
- Supports customization.
- Enables validating applications.
- Supports encrypted bootloader image files. Writes encrypted images to firmware without intermediate decryption.
- Safe Bootloading: save an image at a temporary location, validate it and, if valid, overwrite the working image.
- Allows copying applications.
- Switch between applications. Allows passing parameters in RAM.
More details, as well as an application note guide and code examples, will be published soon.