1 Reply Latest reply on Sep 20, 2018 5:29 AM by srnt

    Download to image to RAM and executing it without 0xA0 USB Vendor Request

    georgios.athanasopoulos_3736111

      Hello,

       

      I am working on a custom board based on FX3 that has no EEPROM or hardcoded bootloader to acommodate 0xA0 vendor requests without implementation. So I implemented my own vendor request that transfers from a computer to RAM the image of a firmware, Since I want to execute it as well I thought that modifying the reset interrupt and then causing a warm reset would do the trick. However I am unable to figure out how can I know the entry point of a firmware I am uploading at runtime and if it is possible to do it without having to request for it as parameter. How does the hardcoded bootloader know what the entry point of an image soon to be uploaded to RAM is ?

       

       

      Any help would be really appreciated.

       

      Thank you in advance

       

      Georgios

        • 1. Re: Download to image to RAM and executing it without 0xA0 USB Vendor Request
          srnt

          Hello Georgios,

           

          - FX3 has got an internal hard-coded boot-loader which supports A0 vendor command to load the firmware into the RAM. Please let know the reason why this cannot be used in your application to download the firmware to RAM.

          - Anyway, custom vendor commands can be used to load the firmware image file into the FX3 RAM. To implement this, the code handling the vendor command must be designed to check the integrity of the firmware file that is being downloaded into the RAM. As a reference implementation, you can refer to the Fx3BootAppGcc example firmware that comes with the FX3 SDK.

          - The FX3 IMG file format is mentioned in the below app note. Refer to sections 5.3 and 5.4

          http://www.cypress.com/file/201991/download

          The firmware entry point is specified by a 4-byte address after the termination of the image and before the checksum. This address can be passed as a parameter to the CyFx3BootJumpToProgramEntry() API to switch the control to the entry point of the newly loaded firmware.

           

          Best regards,

          Srinath S