Cart New Account Login

HomeAbout usProductsSupportForumsBlogCustomer Service

search inside this forum
Uploading and Writing MPC556 memory
Andres V. Apr 1, 2015 at 09:58 AM (09:58 hours)
Staff: Takao Y.

  • Hello,
    I am wanting to program a new MPC556 with the exact memory content read from another MPC556. Wich programming algorithm should I choose when using PROGPPCZ + Multilink universal FX to program the new MCU?
    Thanks




    Comments

  • Greetings,

    Are you sure your chip's part number is MPC556? I do not recognize that part number. Did you mean MPC555?

    Please let me know the full part number of the chip, from beginning to end, and I can let you know what algorithm you need.


    Takao Yamada

    • Hello Takao,
      The exact part number is: MPC556LF8MZP40.
      MPC556 has code compression features, wich are not available on MPC555. Here is a link to its manual: http://cache.freescale.com/files/microcontrollers/doc/user_guide/MPC555UM.pdf
      I will really appreciate any further help, since now I am deciding whether or not to buy PROGPPCZ in order to clone this MPC556 device. Thanks
      Andres

  • Greetings,

    Thank you for the documentation and information about the MPC556. Looking at the memory map, the internal flash looks the same which is all we care about when trying to flash program using PROGPPCZ.

    Try using the MPC555 algorithms and see if you are able to successfully program the internal flash. Note, if you are trying to program external flash, then you must select the correct external algorithm.


    Takao Yamada

    • Hello,
      Thanks you for your response.
      I see in this link: http://www.pemicro.com/downloads/flash_algorithm/FlashAlgorithms_PCpflash.cfm
      that there are several programming algorithm for the same MCU type (MPC555)
      At a first glance, I am not able to distinguish from this list which algorithms are for internal and which are for external flash.
      Considering I want to clone the whole internal flash memory of the device, could you please briefly explain me which are the differences among them, and in which cases should I use each of them? Or could you please link me some document where I can get detailed infomation concerning the appropriate use of each algorithm?
      Thanks again for your support.
      Andres

  • Greetings,

    External algorithms are those that do not have "Freescale" prefixes.

    My assumption is you only care about the internal flash. There is 448K of internal flash that is split into CMF A and CMF B.

    Ignore all of the "ShadowBlk" algorithms because most likely you do not care about these regions.

    There is one algorithm that only works with CMF A block:
    Freescale_MPC555_1x32x64k_CMF_A_256k_Memory_Blk.PCP

    There is an algorithm for CMF B block:
    Freescale_MPC555_1x32x48k_CMF_B_192k_Memory_Blk.PCP

    Or you can just select the whole 448K. My suggestion is that you select this version:
    Freescale_MPC555_1x32x112k_CMF_448k_revk3_alg61.PCP

    There are all these revision names like "revk3" and algorithm number like "alg61" but you can ignore the earlier versions and just worry about the latest versions. You want the latest flash drivers.

    Now you want to use this algorithm to read the data. You should use the "UM: Upload Module" command to read the contents of the flash and dump it into an S19 file.

    Go to your other MPC556 chip and use command "SS Specify object file" to select the S19 file you just dumped and use commands EM to erase, PM to program, and VC to verify checksum.


    Takao Yamada

    • Hello,
      Thank you for the information. Now I am getting the picture.
      In case I would need also to copy the shadow flash sectors, I understand that first I should read normal CMF A and CMF sectors, as you suggested. Then switch the programming algorithm to one suitable for reading shadow CMF A or B and dump their contents to different s19 files.
      To program the new device I should select the complete memory algorithm to erase and program the whole regular CMF flash sectors. Then, I would select in each case shadow CMF A and shadow CMF B algorithms to program each shadow sector, but WITHOUT erasing before programming. Could you please confim me this would be a right approach?
      Thanks again for your support
      Andres

  • Greetings,

    You are mostly correct. When selecting the algorithm, an address range is specified and only that section of memory will be erased or programmed. So you do not have to worry about accidentally erasing the CMF flash sectors when using the shadow flash sector algorithms. Only the shadow flash will get erased or programmed.

    However, be careful of what you erase. Shadow flash may hold important data and you should read the reference manual with detail. Accidentally erasing or overwriting data could cause problems. I know especially with MPC55xx/56xx Qorivva devices the shadow flash holds security information. I am not sure if MPC5xx/8xx devices has the same structure.


    Takao Yamada

    • Hello,
      However, looking into "Freescale_MPC555_1x32x64_CMFA_ShadowBlk_revk3_alg61.pcp" file I can see:

      ;version 1.01, 05/01/2001, Copyright P&E Microcomputer Systems, www.pemicro.com [555_256c_v23_revk3]
      ;device Freescale, MPC555, 1x32x64, desc=CMFA_ShadowBlk_revk3_alg61
      ;begin_cs device=$00000000, length=$00000100, ram=$003F9800
      ;portions 1999 Copyright Motorola (CMF driver routines), used with permission
      ;uses CMF driver code to parallel program/erase
      ;CMF code requires 40MHz internal frequency
      ;end_cs
      NO_TIMING_TEST
      USE_CMF_DRIVER=0D/06/0F/000B/00008000/ 14-32k blocks, 512 segments, 64 byte page
      WRITE_SPR=00000800/027E/ ;enable internal CMF Flash
      WRITE_LONG=FFFFFFF0/002FC004/ ;Turn off watchdog timer
      WRITE_LONG=8C000000/002FC800/ ;Enable 256 byte CMF A Shadow Flash
      WRITE_LONG=00000000/002FC100/ ;Turn off CS0
      WRITE_LONG=00000000/002FC140/ ;Turn off Dual Mapping
      ;end_cs
      ;WARNING - Erasing this module will erase the entire CMF A Flash !!

      The line above clearly says that erasing with this algorithm will erase the entire CMF A flash. So, if I programmed the regular CMF A flash earlier, this data will be lost when trying to erase shadow CMF A. So, I think that I should not erase before programming shadow CMF A, since I think shadow sectors have been already erased when I used the algorithm for erasing/programming regular CMF A flash. I believe this happens because shadow sectors physically share part of them CMF region and they are just enabled/disabled with only a single SIE bit.
      I will be waiting for your comments. Thank you
      Andres

  • Greetings,

    You are right! I did not read the warning at the bottom. Thank you for pointing this out. So you should avoid erasing after already programmed the CMF blocks.


    Takao Yamada

    • Hello,
      Ok, I will try PROGPPCZ and I will contact you again if I am in trouble! Thanks for your support
      Andres

  • Greetings,

    Any update on this?


    Takao Yamada

    • Hello,
      I read and programmed the devices successfully. No problem at all. The only thing to be aware of is when erasing CMFA and CMFB you also erase the shadow parts. So you have to reprogram shadow memories after or before programming CMFA and CMFB. This means that you have to make a backup of the shadow memory before erasing.
      Regards,
      Andres

      • Hello,
        Is it possible to read and program an external EEPROM connected via SPI bus to a MPC555 using Multilink Univerasal FX and the PROGPPZ utility?
        Thanks

        • Greetings,

          Yes, however, you will need to implement an algorithm yourself. We are putting together documentation on how to create your own SPI algorithm based off the external algorithms we already have. Check your PROGPPCZ directory for the algorithm folder and look to see if we have an algorithm for your external flash. If it exists, then you just need documentation from us.

          If the algorithm for your external flash does not exist, then you might need to create a custom algorithm request:
          http://www.pemicro.com/SRS/create_SR_flashAlgRequest.cfm


          Takao Yamada

          • Hello,
            Thanks for your response. Technically, it is an EEPROM and not a FLASH what I want to manage, so it should exist some differences between the way you access both of them internally. Also the EEPROM is very small in capacity compared with the flash models you have. Specifically, it is a M95640 from ST and it has only 8Kbits x 8bits (64Kbits or 8Kbytes) of capacity.
            I think I should create a custom algorithm request.
            Thnks for your support

Add comment


   Want to comment? Please login or create a new PEMicro account.







© 2017 P&E Microcomputer Systems Inc.
Website Terms of Use and Sales Agreement