3 Replies Latest reply on May 13, 2010 12:37 AM by jacky.chen

    Problem of F/W Code Size

    jacky.chen

      Dear All,

         

        I have a problem about F/W code size. I use CY7C68013A and it has 16KB RAM. EEPROM is 24LC128 and its size is 16KB. When F/W code size is smaller than 8KB, everything is ok. When F/W code size is over 8KB, I use following command to generate iic file :

         

      Hex2bix -V 0x04CA -P 0xAF10 -M 0x4000 -I -F 0xc2 -O AtPDCMFw.iic AtPDCMFw.hex

         

        After I download iic file by CyConsole, the device appears as "Unknown USB device". But if I download hex file directly, the device is ok. What is the problem? Thanks~

        • 1. Re: Problem of F/W Code Size
          anand.srinivasan.asokan

          The issue looks a little confusing. You should be seeing this only if you are using FX2 or earlier of the EZ-USB family. If the hex file works then the iic file is bound to work.

             

          Is it possible to attach the hex file and iic file here???

          • 2. Re: Problem of F/W Code Size
            jacky.chen

            Dear Sir,

               

              Thanks for your reply. The attached zip file includes hex and iic file. I use following command to convert hex file to iic file :

               

            C:\Cypress\USB\bin\Hex2bix -V 0x04CA -P 0xAF10 -M 0x4000 -I -F 0xc2 -O AtPDCMFw.iic AtPDCMFw.hex

               

              I read EEPROM data by Genius NSP program and check with iic file. They are the same. So the data downloaded to EEPROM is correct. Is it possible that iic file is wrong? Thanks!!

            • 3. Re: Problem of F/W Code Size
              jacky.chen

              Dear Sir,

                 

                My problem is solved! To generate over-8KB F/W code, I duplicate the code of ISR_Sudav like following:

                 

              void ISR_Sudav(void) interrupt 0
              {
                 GotSUD = TRUE;            // Set flag
                 EZUSB_IRQ_CLEAR();
                 USBIRQ = bmSUDAV;         // Clear SUDAV IRQ
                 GotSUD = TRUE;            // Set flag
                 EZUSB_IRQ_CLEAR();
                 USBIRQ = bmSUDAV;         // Clear SUDAV IRQ
                 GotSUD = TRUE;            // Set flag
                 EZUSB_IRQ_CLEAR();
                 USBIRQ = bmSUDAV;         // Clear SUDAV IRQ
                 GotSUD = TRUE;            // Set flag
                 EZUSB_IRQ_CLEAR();
                 USBIRQ = bmSUDAV;         // Clear SUDAV IRQ
              }
               

                 

                This is the reason EEPROM does not work.

                 

                Thanks for your help!!!