Announcement

Collapse
No announcement yet.

Need to Know the Mehod to get the actuatl Firmware of Picaso Programatically

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Need to Know the Mehod to get the actuatl Firmware of Picaso Programatically

    Sorry. There is anyway to get the actual PICASO firmware version number (Example 4.4) from the programing way. We need also to know if there is also a method to compute the actual CRC of a file over the Fat.

    The problem arise because we have already deploy 1000units of Picaso around the world. These is so much hardware, but a lot of them are experience a "read disturbance problems". That is, even if we use your own uSD of 4GB from Pyshion Industrial Grade (buy to you), and even if I'm not write to the uSd in anyway, after 15days the content of the fat from uSD are changing or degrading, and then the display failed completely and we need to send a person to any location to replace a uSD.

    As you see is a very important problem tha cause a lot of money waste.

    Thanks a Lot.



  • #2
    did you try sniffing the UART data while going to the PmmC loader page? If the loader is able to know the version number, (havnt checked), then it's reading it off the bootloader, you'd need to capture the TX channel to see what the loader is sending and capture the RX channel to see the responses

    Comment


    • #3
      As tonton says, for Picaso, the only way to find the PmmC version is via the bootloader. This means you will need another 'system' to acquire this information, it is not clear from your post why this is needed. This information is available under NDA, please make a technical enquiry via the contact pages on the web site if you want to go down that route.

      I am very surprised that you are seeing read disturb with a Phison Industrial purchased from us. Can you confirm that you did, indeed purchase it from us? Regardless, can you start RMpet and post a screencopy of the details about the uSD as it is at the moment (i.e. don't use RMpet to change anything), can you also use the uSDTester utility and post a screenshot from that?

      Here's a snippet of code that will calculate a 16 bit CRC on Picaso, it will most likely need many changes to use it in your code, as it is not 'stand alone' as it is.

      Note that running this doesn't prove that read disturb is not happening as the disturbance can change from 'read to read', in the beginning it might be only one bit in a large file occasionally, as you continue reading the same data the number of bits in error and the frequency of them being in error increases.

      Code:
      #DATA
          word CRC_Table 0x0000,0x1021,0x2042,0x3063,0x4084,0x50A5,0x60C6,0x70E7,0x8108,0x9129,0xA14A,0xB16B,0xC18C,0xD1AD,0xE1CE,0xF1EF,0x1231,0x0210,0x3273,
                         0x2252,0x52B5,0x4294,0x72F7,0x62D6,0x9339,0x8318,0xB37B,0xA35A,0xD3BD,0xC39C,0xF3FF,0xE3DE,0x2462,0x3443,0x0420,0x1401,0x64E6,0x74C7,
                         0x44A4,0x5485,0xA56A,0xB54B,0x8528,0x9509,0xE5EE,0xF5CF,0xC5AC,0xD58D,0x3653,0x2672,0x1611,0x0630,0x76D7,0x66F6,0x5695,0x46B4,0xB75B,
                         0xA77A,0x9719,0x8738,0xF7DF,0xE7FE,0xD79D,0xC7BC,0x48C4,0x58E5,0x6886,0x78A7,0x0840,0x1861,0x2802,0x3823,0xC9CC,0xD9ED,0xE98E,0xF9AF,
                         0x8948,0x9969,0xA90A,0xB92B,0x5AF5,0x4AD4,0x7AB7,0x6A96,0x1A71,0x0A50,0x3A33,0x2A12,0xDBFD,0xCBDC,0xFBBF,0xEB9E,0x9B79,0x8B58,0xBB3B,
                         0xAB1A,0x6CA6,0x7C87,0x4CE4,0x5CC5,0x2C22,0x3C03,0x0C60,0x1C41,0xEDAE,0xFD8F,0xCDEC,0xDDCD,0xAD2A,0xBD0B,0x8D68,0x9D49,0x7E97,0x6EB6,
                         0x5ED5,0x4EF4,0x3E13,0x2E32,0x1E51,0x0E70,0xFF9F,0xEFBE,0xDFDD,0xCFFC,0xBF1B,0xAF3A,0x9F59,0x8F78,0x9188,0x81A9,0xB1CA,0xA1EB,0xD10C,
                         0xC12D,0xF14E,0xE16F,0x1080,0x00A1,0x30C2,0x20E3,0x5004,0x4025,0x7046,0x6067,0x83B9,0x9398,0xA3FB,0xB3DA,0xC33D,0xD31C,0xE37F,0xF35E,
                         0x02B1,0x1290,0x22F3,0x32D2,0x4235,0x5214,0x6277,0x7256,0xB5EA,0xA5CB,0x95A8,0x8589,0xF56E,0xE54F,0xD52C,0xC50D,0x34E2,0x24C3,0x14A0,
                         0x0481,0x7466,0x6447,0x5424,0x4405,0xA7DB,0xB7FA,0x8799,0x97B8,0xE75F,0xF77E,0xC71D,0xD73C,0x26D3,0x36F2,0x0691,0x16B0,0x6657,0x7676,
                         0x4615,0x5634,0xD94C,0xC96D,0xF90E,0xE92F,0x99C8,0x89E9,0xB98A,0xA9AB,0x5844,0x4865,0x7806,0x6827,0x18C0,0x08E1,0x3882,0x28A3,0xCB7D,
                         0xDB5C,0xEB3F,0xFB1E,0x8BF9,0x9BD8,0xABBB,0xBB9A,0x4A75,0x5A54,0x6A37,0x7A16,0x0AF1,0x1AD0,0x2AB3,0x3A92,0xFD2E,0xED0F,0xDD6C,0xCD4D,
                         0xBDAA,0xAD8B,0x9DE8,0x8DC9,0x7C26,0x6C07,0x5C64,0x4C45,0x3CA2,0x2C83,0x1CE0,0x0CC1,0xEF1F,0xFF3E,0xCF5D,0xDF7C,0xAF9B,0xBFBA,0x8FD9,
                         0x9FF8,0x6E17,0x7E36,0x4E55,0x5E74,0x2E93,0x3EB2,0x0ED1,0x1EF0
      #END
      
      func crc_CCITT(var DataPtr, var DataLen, var crc)
      //crc contains either the initial CRC value or the CRC result from previous data block
      //DataPtr is a byte pointer to the data block, with the data to be checked. Data can be divided in several blocks, and processed one after the other
      //DataLen is the length of the data block in bytes
      //561 bytes, 30 us per character
          while(DataLen--)
              crc := CRC_Table[str_GetByte(DataPtr++) ^ (crc>>8)] ^ (crc<<8);
          wend
          return crc;
      endfunc
      
      func GetFileChecksum()
          // C
          var hndl, crc, rd ;
          com_GetStr(fname) ;
          print("Get CRC ", [STR] fname) ; nextline() ;
          hndl := file_Open(str_Ptr(fname), 'r') ;
          if (hndl != 0)
              crc := 0xffff ;
              rd := file_Read(buf1, RX_BUFFER_SIZE_BYTES, hndl) ;
              while (rd)
                  crc := crc_CCITT(str_Ptr(buf1), rd, crc);            // given a pointer to a buffer, byte count and seed, calculate the 16bit CRC for seed
                  rd := file_Read(buf1, RX_BUFFER_SIZE_BYTES, hndl) ;
              wend
              file_Close(hndl) ;
              serout(ACK);
              com_PutWord(crc) ;
          else
              serout(NAK);
              com_PutWord(0) ;
          endif
          print("Finished get CRC") ;      nextline() ;
      endfunc
      Mark

      Comment


      • #4
        The Sd is purchase from Mouser but under 4Dsystem tag. I'f already chek the ID of the uSD throw your uSD test and I can confirm that is Pyshon 4GTB same version that we already have and comming from you.

        ┬┐Maybe is a problem woth the firmware?. The extrange thing is that for those failed the uSD is formatting by your Program 1Gb og Fat and thencopy all the content to that. Then I attach to your TFT and no mor writes are done. In fact we remove all the writes for the program. But in 15ddays the content of the Fat has changed again.

        In regards to Know the version, I contact to sign the Nda, Thanks a Lot.

        Comment


        • #5
          Please collect the information I asked for. I cannot possibly speculate anything until I see what that information contains.
          Mark

          Comment

          Working...
          X