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.

AM3517: Flash Loader BCH 8 ECC Errors (No XOR bitmask)

Part Number: AM3517
Other Parts Discussed in Thread: FLASHTOOL, UNIFLASH
We're seeing ECC errors using TI's 2nd loader (dnld_startup_omap3_gp_2g.2nd) + NAND flash driver (nand_onfi_16bit_8bit.bin) to program NAND with BCH8 ECC. (I believe these binaries are part of FlashTool, but I'm not sure).
We're using the following configuration to program: gpmc 0x6E000000 cs 0 address 0x30000000 bberase 0 bch 8.
It seems to be working mostly properly, however I keep getting ECC errors from U-Boot.
Looking into the errors, it looks like the issue is U-Boot (and Linux) use an xor mask seen here:
https://github.com/ARM-software/u-boot/blob/402465214395ed26d6fa72d9b6097c7adbf6a966/drivers/mtd/nand/omap_gpmc.c#L26C12-L26C27. When I look at the computed ECC vs. calculated ECC, if I xor them against the bitmask in that link, they become equal.
That xor mask is done by U-boot and Linux so that erased pages ECC will equal 0xFF, 0xFF, ... so a blank page will pass an ECC check.
U-Boot/Linux both expect this mask, but it does not look like the NAND flash loader applies the mask.
Is there any option/config or newer version we can use that properly applies the mask? I'd rather not modify U-Boot and Linux to remove this mask as having empty blocks pass an ECC check is very helpful.
  • Hello Mark,

    Unfortunately, this is a pretty old device and a pretty old FlashTool. We are no longer able to answer hardware or software questions about AM35x. I also cannot find any documentation for Flashtool, either on the public web, or on the processors wiki that got taken offline a couple years ago. Even the e2e threads about this tool are so old that some of them have disappeared from the web, like the links referenced here: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/874993/dm3730-updated-flashtool-for-am35x-am37x-dm37x-and-omap35x-devices 

    I do NOT have any experience with flash tools, and I have NOT tested what I am about to say! 

    It looks like the AM335x/AM437x uniflash tool might have also been called "flashtool" back in 2013. It is theoretically possible that the old version of the AM335x uniflash tool behaves similarly to the AM35x flashtool? I have attached the 2013 download of the AM335x uniflash tool that I grabbed from the Processor wiki archives, just in case it has some useful information for you:

    AM335x_Flashtool.zip

    Regards,

    Nick

  • Thanks Nick. The link the AM335x_Flashtool.zip looks like it's a link to a tool to combine multiple images, but not the actual flashtool itself. If you have the source code for the original flashtool, that would be useful!

  • Hello Mark,

    Unfortunately, that zip file is all I have. I was hoping that the word document in the docs/ folder of the zip file might have some information that also applied to the AM35x version of the flash tool (but again, since I've never used AM35x, I have no idea if it even uses the same SW structure as AM335x).

    It looks like the AM35x version of the flash tool used to be hosted on gforge, but that site went offline at least 6 years ago, maybe even earlier. We retained an internal copy of the processors wiki that I searched for you earlier today, but unfortunately I am not aware of any copies of the SW that used to be hosted on gforge.

    Regards,

    Nick

  • Okay, thank you Nick! Do you have any suggestions on how to proceed? I think the source of flash tool is not what I need, but instead the source for the nand_onfi_16bit_8bit.bin driver (as that's where options are parsed). Any chance we could get that source?

  • Hello Mark,

    Where did you get the nand_onfi_16bit_8bit.bin download?

    I just noticed that UNIFLASH claims support for AM3x, which miiight include AM35x. So that is potentially another tool you could look at using to see if it works better for your usecase.

    I am sending you over to the folks who own the Uniflash tool to see if they have any additional comments (e.g., if AM35x is only supported on certain versions of Uniflash, if certain versions of Windows need to be used, etc).

    Regards,

    Nick

  • If you download FlashTool (in my case FlashTool 1.5.1, but there's also FlashTool 1.6 which I've tried and got the same issue) from the TI website and do "cabextract" on the msi file, you'll get a bunch of files, including one of them that's named _06155DD12DA54CCB89254AEFD8A77186. That is the NAND flash driver.

    If UNIFLASH works better that would be great! But we're currently limited to using a Linux computer, and this is setup for a manufacturing line, so we need it to be scriptable.

  • I just noticed that UNIFLASH claims support for AM3x, which miiight include AM35x. So that is potentially another tool you could look at using to see if it works better for your usecase.

    Only a limited number of SItara devices are supported by UniFlash. Unfortunately, AM35x based devices are not:

    https://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_board.html#supported-platforms

  • Hello Mark,

    I'm checking with one more person to see if the source code for FLASHTOOL is hiding on someone's computer somewhere. Feel free to ping the thread if I don't have another update for you within a couple of days.

    Regards,

    Nick

  • Thanks Nick! FWIW, I don't think we need the source for FLASHTOOL. I think instead, I need the source for nand_onfi_16bit_8bit.bin, as that's where the ECC is getting written to the OOB area of NAND, and where an XOR would need to be applied.

    Something else I'm looking into is loading u-boot via YMODEM (via u-boot SPL), and then using U-boot to program NAND instead of flashtool. 

    In this solution, we'd use flashtool to program U-boot SPL (as that needs to use the ROM hardcoded 1-bit Hamming ECC anyway), and then everything else would be programmed via U-boot.

  • Hello Mark,

    I got a couple of people to look around in some old computers and shared folders, but we couldn't find the source code for nand_onfi_16bit, FLASHTOOL, or anything related to that flashing infrastructure other than what I've already provided. I'm sorry, that's probably the best I can do for you at this point.

    I hope you're able to get things working on your setup!

    Regards,

    Nick