CE95391 - PSoC® USB HID Bootloader Objective This example demonstrates usage of the PSoC Creator Bootloader and Bootloadable Components in a USB-based bootloader system. It also demonstrates a PC-based bootloader host program. Overview This example uses two PSoC Creator projects – bootloader and bootloadable – to demonstrate the PSoC Creator bootloader system. The bootloader project communicates with a PC host via USB HID, to program an application image. The bootloadable project is the application image that is programmed. Requirements Tool: PSoC Creator 3.3 SP1 or higher Programming Language: C (GCC 4.7.3) Associated Parts: All PSoC 3, PSoC 4 L-series, and PSoC 5LP parts with USB Related Hardware: CY8CKIT-030, CY8CKIT-046, CY8CKIT-050, CY8CKIT-059 Design USB HID Bootloader The bootloader project design features the PSoC Creator Bootloader and USBFS Components, as Figure 1 shows. The USBFS Component communicates with the PC host to get commands and a new application image. The Bootloader Component does flash programming, host command / response protocol, and launches the bootloadable application. Figure 1. USB HID Bootloader Schematic (Pins and LED are Selected for CY8CKIT-046) www.cypress.com Document No. 001-95391 Rev.** 1 PSoC® USB HID Bootloader Bootloadable The design of the bootloadable projects features the PSoC Creator Bootloadable Component, as Figure 2 shows. Other Components implement the desired application. This code example has two bootloadable projects, which do slightly different functions. Figure 2. Bootloadable Schematic (Pins and LED are Selected for CY8CKIT-046) Design Considerations This design can be extended by changing the Bootloader Component to implement a dual-application function. Then two bootloadable projects can be programmed into flash. This code example is designed for two PSoC device families and associated kits: The PSoC 4 L-series family and associated CY8CKIT-046 kit The PSoC 5LP device family and associated CY8CKIT-059 kit The design is easily portable to other PSoC 3, PSoC 4 L-series, and PSoC 5LP devices and kits, typically by just changing the LED or button pin assignments. The PSoC Creator bootloader system is designed to be used with most communication channels, and it is easy to change this 2 example to be an I C, UART, or SPI-based bootloader. For more information, see AN73854, PSoC Introduction to Bootloaders. www.cypress.com Document No. 001-95391 Rev.** 2 PSoC® USB HID Bootloader PSoC Creator Components Table 1 and Table 2 list the PSoC Creator Components used in this example, as well as the hardware resources used by each Component. Table 1. List of PSoC Creator Components for USB HID Bootloader Project Table 2. List of PSoC Creator Components for Bootloadable Projects Component Hardware Resources Component Hardware Resources BL none Bootloadable none USBFS 1 USBFS Pin_StartBootloader 1 pin Wait_Forever 1 pin isr_EnterBootloader 1 interrupt vector LED 1 pin LED 1 pin Parameter Settings This section shows the changed configuration settings for the PSoC Creator Components in the code example projects. Bootloader Figure 3 shows the changed settings for the Bootloader Component. The Component Name change is optional. Figure 3. Bootloader Component Configuration www.cypress.com Document No. 001-95391 Rev.** 3 PSoC® USB HID Bootloader USBFS The USBFS Component is configured for HID bootloader by using an import file provided with PSoC Creator: <PSoC Creator InstallDir> \ psoc \ content \ cycomponentlibrary \ CyComponentLibrary.cylib \ USBFS_v_x_xx \ Custom \ template \ Bootloader.root.xml For details on how to import this file, see application note AN73053, PSoC USB HID Bootloader. Bootloadable A bootloadable project is always linked to the output .hex and .elf files of an associated bootloader project, as Figure 4 shows. Selecting the .hex file automatically selects the associated .elf file. Before configuring a Bootloadable Component, you should completely build the associated bootloader project. For this code example, the bootloader .hex file is at a relative path within this PSoC Creator workspace. However, this need not be the case; bootloader and bootloadable projects can be in different workspaces. For more information on bootloader and bootloadable files, see AN73854, PSoC Introduction to Bootloaders. Figure 4. Bootloadable Component Configuration www.cypress.com Document No. 001-95391 Rev.** 4 PSoC® USB HID Bootloader Input Pins In all of the projects, digital input Pin Components are used to read the state of a kit button. The buttons short to ground when pressed, therefore the Pin Component must be configured for resistive pull up, as Figure 5 shows. This causes the Pin input state to be 0 when the button is pressed and 1 when it is released. Figure 5. Digital Input Pin Configuration for Resistive Pull Up Figure 6 shows the configuration for the input Pin Component to generate an interrupt. Figure 6. Digital Input Pin Configuration for Interrupt www.cypress.com Document No. 001-95391 Rev.** 5 PSoC® USB HID Bootloader Design-Wide The design-wide clocks are configured for USB, as Figure 7 shows for PSoC 4 L-series, and Figure 8 shows for PSoC 3 and PSoC 5LP. Figure 7. PSoC 4 L-series USB Clock Configuration Figure 8. PSoC 3 and PSoC 5LP USB Clock Configuration www.cypress.com Document No. 001-95391 Rev.** 6 PSoC® USB HID Bootloader Operation 1. Connect a USB cable between the host PC and the kit programming USB connector. Note that some kits plug directly into the USB port. 2. Program the USB HID Bootloader project into the kit. Confirm that the kit LED is on constantly, indicating that the bootloader is running. 3. Unplug the USB cable, and plug it into the kit general usage USB connector. If the kit is plugged into a USB port, remove it. The kit should be able to be powered from the USB connection. 4. Run the PSoC Creator Bootloader Host program (menu item Tools > Bootloader Host...). 5. Select a Bootloadable1 project .cyacd file and program it using the bootloader. Confirm that the LED blinks at a 1-second rate, indicating that the bootloadable is running. 6. Press the kit button to switch from bootloadable to bootloader. Confirm that the LED stays on (the bootloader is running). 7. Select a bootloadable2 project .cyacd file and program it using the bootloader. Confirm that the LED now blinks at a 200-msec rate, indicating that the other bootloadable is running. 8. Press the kit button to switch from bootloadable to bootloader. Confirm that the LED stays on (the bootloader is running). The remaining steps are optional: 9. Start programming a bootloadable project .cyacd file, as in steps 5 and 7, but during programming disconnect the USB cable. 10. Repeat step 5 or 7 and confirm the successful completion of bootloading. Related Documents Table 3 lists all relevant application notes, code examples, knowledge base articles, device datasheets, and Component datasheets. Table 3. Related Documents Application Notes AN73854 PSoC 3, PSoC 4, and PSoC 5LP Introduction to Bootloaders Describes the bootloader architecture used in PSoC 3, PSoC 4 and PSoC 5LP AN73503 PSoC 3 and PSoC 5LP USB HID Bootloader Shows how to build a USB HID -based bootloader for PSoC 3 and PSoC 5LP AN60317 PSoC 3 and PSoC 5LP I2C Bootloader Shows how to build an I2C-based bootloader for PSoC 3 and PSoC 5LP AN89611 PSoC 3 and PSoC 5LP Getting Started with Chip-Scale Packages Describes the I2C bootloader that is factory-installed in PSoC 3 and PSoC 5LP CSP devices AN86526 PSoC 4 I2C Bootloader Shows how to build an I2C-based bootloader for PSoC 4 family devices AN68272 PSoC 3 and PSoC 5LP UART Bootloader Shows how to build a UART-based bootloader for PSoC 3 and PSoC 5LP AN84401 PSoC 3 and PSoC 5LP SPI Bootloader Shows how to build a SPI-based bootloader for PSoC 3 and PSoC 5LP AN2100 PSoC 1 Bootloader Describes a UART-based bootloader for PSoC 1 Code Examples CE69310 PSoC 1 I2C Bootloader CE82634 Host Code for Bootloading PSoC 1 Via I2C PSoC Creator Component Datasheets Bootloader and Bootloadable Describes the bootloader and bootloadable components required for implementing a bootloader system Full Speed USB (USBFS) Provides a USB full-speed compliant device framework www.cypress.com Document No. 001-95391 Rev.** 7 PSoC® USB HID Bootloader Device Documentation PSoC 3 Datasheets PSoC 3 Technical Reference Manuals PSoC 4 Datasheets PSoC 4 Technical Reference Manuals PSoC 5LP Datasheets PSoC 5LP Technical Reference Manuals Development Kit (DVK) Documentation PSoC 3 and PSoC 5LP Kits PSoC 4 Kits www.cypress.com Document No. 001-95391 Rev.** 8 PSoC® USB HID Bootloader Document History ® Document Title: CE95391 - PSoC USB HID Bootloader Document Number: 001-95391 Revision ECN Orig. of Change Submission Date ** 5093124 SJLE 01/19/2016 www.cypress.com Description of Change New code example Document No. 001-95391 Rev.** 9 PSoC® USB HID Bootloader Worldwide Sales and Design Support Cypress maintains a worldwide network of offices, solution centers, manufacturer’s representatives, and distributors. To find the office closest to you, visit us at Cypress Locations. PSoC® Solutions psoc.cypress.com/solutions Products PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP Automotive cypress.com/go/automotive Clocks & Buffers cypress.com/go/clocks Interface cypress.com/go/interface Lighting & Power Control cypress.com/go/powerpsoc cypress.com/go/plc Memory cypress.com/go/memory PSoC cypress.com/go/psoc Touch Sensing cypress.com/go/touch USB Controllers cypress.com/go/usb Wireless/RF cypress.com/go/wireless Cypress Developer Community Community | Forums | Blogs | Video | Training Technical Support cypress.com/go/support PSoC is a registered trademark and PSoC Creator is a trademark of Cypress Semiconductor Corp. All other trademarks or registered trademarks referenced herein are the property of their respective owners. Cypress Semiconductor 198 Champion Court San Jose, CA 95134-1709 Phone Fax Website : 408-943-2600 : 408-943-4730 : www.cypress.com © Cypress Semiconductor Corporation, 2016. The information contained herein is subject to change without notice. Cypress Semiconductor Corporation assumes no responsibility for the use of any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any license under patent or other rights. Cypress products are not warranted nor intended to be used for medical, life support, life saving, critical control or safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize its products for use as critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress products in life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges. This Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide patent protection (United States and foreign), United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a personal, non-exclusive, non-transferable license to copy, use, modify, create derivative works of, and compile the Cypress Source Code and derivative works for the sole purpose of creating custom software and or firmware in support of licensee product to be used only in conjunction with a Cypress integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source Code except as specified above is prohibited without the express written permission of Cypress. Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the right to make changes without further notice to the materials described herein. Cypress does not assume any liability arising out of the application or use of any product or circuit described herein. Cypress does not authorize its products for use as critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress’ product in a life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges. Use may be limited by and subject to the applicable Cypress software license agreement. www.cypress.com Document No. 001-95391 Rev.** 10