This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3352: eMMC programming

Part Number: AM3352
Other Parts Discussed in Thread: UNIFLASH

Hi Team,

As you know, Uni-flash is used to program the emmc flash on board. Here we want to use off-board emmc flash write way, which means use a in-dependent programmer to write the image, take Linux processor SDK prebuilt-image as example,  

Are the images which will be programmed to emmc flash same as prebuilt-images which can be used to SD card create? or need to do some convert? Do you have some guide how to program the image to emmc flash? disk partition, offset configuration etc or it is similar as SD card create patch as emmc and SD have similar interface and protocol.

For NAND flash, seems we can read the written NAND flash image from the flash, and then write-back it to NAND-flash, can we use the same way to read the written image in emmc flash and then write-back to emmc flash through the programmer?

Thanks

Thomas

 

  • Hi Thomas,

    Thomas Yang55737 said:
    As you know, Uni-flash is used to program the emmc flash on board

    Our current Uniflash v6.x can't be used/recommended to program eMMC devices. We are working on an improved version (TBD) that will re-enable eMMC programming functionality known from the older v3-series of Uniflash at some point in the future.

    Thomas Yang55737 said:
    Are the images which will be programmed to emmc flash same as prebuilt-images which can be used to SD card create?

    Yes.

    Thomas Yang55737 said:
    Do you have some guide how to program the image to emmc flash? disk partition, offset configuration etc or it is similar as SD card create patch as emmc and SD have similar interface and protocol.

    I've recently summaries the options for eMMC programming you have today in this E2E post here: https://e2e.ti.com/support/processors/f/791/p/904467/3343949#3343949 , please review it. While there is no "best" solution, if I was needing to program boards in a production setup I'd go with the approach 3 (Use a fully-custom Linux-based programming solution) outlined there. It takes a bit effort to get going initially, it is by far the most flexible and robust solution due to the use of current U-Boot/Linux kernel versions to do the low-level device interfacing and programming essentially. It is also fast due to Ethernet-based data transfer. Once such a solution has been developed the deployment thereof into a production environment can be made easier through scripting as needed.

    Also we are currently working on officially documenting the above Linux initramfs-based eMMC programming approach and making it part of our SDK documentation.

    Regards, Andreas

  • Hi Andreas,

    Thanks for your reply.

    Question1:

    "Our current Uniflash v6.x can't be used/recommended to program eMMC devices."

    According to below Uniflash v6 info,  looks like emmc is supported,

    Also for the supported platform info as below, for AM335 platform, it can only support SPI flash, but I am not sure whether it is caused by EVM hardware reason (emmc flash onboard or not) or Uniflash v6 itself.

    Please clarify for AM335x, which flash the latest Uniflash v6 can support? 

    Question2:

    What we want to program emmc flash is to use an off-board methods (not a SD card program) to program emmc flash, the link you shared mostly discussed on a on-board program method.(with a SD card method)

    For #4 "Use flashing scripts / concept from the BeagleBone Black community project (https://github.com/RobertCNelson/boot-scripts/tree/master/tools/eMMC)"

    Is the above way can support this method? I checked the link, but can not get more info whether it can support off-board method.

    If not, could you advise a way can support off-board method,which means program emmc flash from PC just like SD card create method, the hardware programmer can be provided by customer but the image generation/disk partition is not clear.

    Best regards

    Thomas

  • Thomas,

    please allow for a couple of days to look into this a bit closer (we have a holiday weekend coming up here too). Will get back on this early next week.

    Regards, Andreas

  • Hi Thomas,

    Thomas Yang55737 said:
    According to below Uniflash v6 info,  looks like emmc is supported,

    Thomas Yang55737 said:
    Please clarify for AM335x, which flash the latest Uniflash v6 can support? 

    That console log you provided is the standard help message of the Uniflash serial programming host tool. This is a universal tool used across different SoCs and memory types and this help message does not reflect what is supported in a given combination of those (the documentation table you pointed to should be where this information is provided). This being said (sufficiently motivated) one should be able to extend or write target side (SoC) code that will work together with the existing host tool to support additional combinations.

    Thomas Yang55737 said:
    Also for the supported platform info as below, for AM335 platform, it can only support SPI flash, but I am not sure whether it is caused by EVM hardware reason (emmc flash onboard or not) or Uniflash v6 itself.

    It is only limited by the target side (SoC) code. Unfortunately we can only support a subset of possible combination due to associated R&D and test effort.

    Thomas Yang55737 said:
    If not, could you advise a way can support off-board method,which means program emmc flash from PC just like SD card create method, the hardware programmer can be provided by customer but the image generation/disk partition is not clear.

    I'd always recommend to use the network interface to boot the board and program the eMMC as it is fast and gives full flexibility as to how the eMMC is being setup including its partitioning as all is done through Linux itself.

    If you truly want to program the eMMC "off board" I worked at a company before where I used a socketed eMMC-to-SD card adapter plugged into a Linux PC. With that you can program the eMMC just like an SD card, with the same commands/scripts etc. And then you can solder that eMMC down to the board. Something like this would work for that purposes: https://www.amazon.com/ALLSOCKET-eMMC169-Programmer-Kingston-Interface/dp/B06Y55DKND/

    Regards, Andreas