We’re trying to finish up the last bits and pieces of our BSP. And of course, we’ve run into another strange problem.
Background: We've got a custom board with an iMX53 on it. We're started with a WEC7 BSP from Adeneo and have most everything
working. We are using the iim driver from the BSP from Freescale/Adeneo. We have written a program that takes the address and the value as command line parameters and then loads the driver and programs the fuses, and then displays all of the fuses in bank 0 and 1. The Reference Manual (with addendum) talks about the fuse box, iim, and the in the addendum lists the fuse information.
Problem: We are trying to program some fuses, but they don't stay programmed after a re-boot. We've verified that they do get programmed, and are programmed by reading the fuses.
What we've tried:
- At first we tried programming the user space ones (0x0860 - 0x087C). We would program them with something, and then power cycle the board, and display the fuses again, and the bits were all back to 0's.
- We found the documentation on VDD_FUSE in the imx53iec.pdf that said that the VDD_FUSE needed to be connected, so we connected it through a 100K pull-up first, then a 1K pull-up to the 3.3V supply on the board. Again we attempted to program both the user space and the mad address areas, and after a power cycle we were back to 0's, again.
- We got the source code to uBoot since that seems to be what most people are using, and compared the programming functions in both eBoot and uBoot. The only major difference that we found was that eBoot programs the IIM_FCTL with 0x31, where uBoot just programs it with 0x01. So eBoot tells it to use a program pulse of 3 rather than 0 that uBoot uses.
- Connected the VDD_FUSE to 26 ohm power resistor then to a 3.2 V power supply. The power supply was reporting 120 mA current, and then something has stopped working. (I was about to say blown up, but there was no magic smoke. How disappointing. ;-) ) So this might have worked, if my board hand's stopped working.
- Has anyone had success programming fuses through the iim WEC7 driver? (I just need to know that, yes, it can be done.)
- Is there something else that has to happen after programming? Are there other bits that need to be set? Do I need to program the lock the bits?(I was trying to avoid this).
- What else should I try?