My new design includes a TI TUSB9261 (USB3.0 to SATA bridge). Connected to the TI part is a SPI Flash. On page 10 of the online TI implementation guide for the TUSB9261 states they have tested the Atmel AT25FS010 and Numonyx M25P10A SPI flash chips as being compatible with the TI part.
The Atmel part is now listed as “not recommended for new designs”. The Numonyx is listed as “declining” , being an older part. I had designed in the Atmel part. So here are my questions:
1) Are there newer SPI flash chips that TI recommends as being compatible with the TUSB9261 part now (i.e. someone has tested them)?
2) Are there any SPI flash chips that are known to be incompatible with the TI part, (or programming firmware)?
3) Would an Atmel AT45DB011D http://www.atmel.com/dyn/resources/prod_documents/doc3639.pdf be compatible with the TI part? This is Atmel’s suggested replacement. The only issue with this Atmel replacement is that it is not pin compatible with the original suggesting SPI flash chips.
4) Will the TI programming firmware support writing to an AT45DB011D?
5) Any other thoughts on this subject?
Thanks, and Best Regards,
-Tim Starr on behalf of MS@BA
We have not tested other SPI flash, I will review the AT45DB011D and give you my comments.
I have also designed in TUSB9261 in my project. As none of the recommended Flash was in the system, I tried AT25DF041 from Atmel. Programming succeeds, according GUI, but firmware will not start. Obviously, the Flash isn't properly programmed. Suspecting an incompatibility, I also tried AT45DB011D. This one is completely incompatible with TUSB9261. It does not even support all the required opcodes (SLLU125B, Page 39). TUSB9261 goes to an endless loop, attempting to program this Flash, until the watchdog stops it.
I also do not exactly know what to do now. I will ask to introduce Micron/Numonyx M25P10A, but this may be rejected due to danger of this part being discontinued. I fear that I cannot finalize the design within Project Plan as the local TI engineer I have asked also seems to have no answer. Did you receive any helpful answer to your questions, similar to mine?
Thank you, Best regards
Have you tried the Pflash PM25LV010A ?
What firmware version are you using? Please use the latest(rev 98) available at http://www.ti.com/product/tusb9261#technicaldocuments
What failure mode are you having, can you send some screen captures of the failure(how does it appear at device manager?)
thank you for timely answering. I have none of the recommended Flash available at the moment, but will try to get some asap. As AT25DF041 supports all required opcodes (except 0x90 which I have never found in any Flash I have used so far - not even the recommended Flash support 0x90), I would expect that there should be no problem. I have used both latest firmwares from TI website (U1/U2 disabled or enabled) with similar result: GUI says: Programming successful. But the TUSB9261 does not change behaviour in any manner. I get no failure code, the TUSB9261 simply goes into idle Mode and keeps waiting for a new firmware. It is as if I would not have programmed anything at all. When I remove the Jumper (SO from Flash), GUI reports a failure to program the Flash, so there is a reaction. I can also measure activity with an oscilloscope on the Flash SPI lines. At startup, the TUSB9261 accesses the Flash for a short time (by far not sufficient to read out 47 kB or so), then connects via USB to my computer appearing in the Flah Burner Window as "TUSB926x Bootloader Device". It also appears in the device manager as described in TI's documentation (HID-compliant Device + USB Human Interface Device/TUSB9260 Flash Burner+USB Composite Device). As the firmware does not run, of course no SATA Device appears. The HID-Compliant Device - Device Instance Path shows up as: HID\VID_0451&PID_926B&MI_00\9&3080FA5F&0&0000. According Documentation, "926B" means that no firmware was found in the Flash.
Chingis Technology Corporation (P-Flash) is not a supplier of my company so any attempt to introduce PM25LV010 will be rejected. Sorry for Chingis, but no way for me to change this.
These are the only Opcodes required by the bootcode: OpcodeWriteEnable, OpcodeReadData, OpcodePageProgram, OpcodeChipErase, OpcodeReadStatus
Any SPI memory with support for these will work.
Can you send your schematics for review?
unfortunately, it is not that easy. Meanwhile I have found the reason for the Flash refusing programming efforts. The Flash I am using - ATMEL AT25DF041A - supports all requíred opcodes you have mentioned. But still it isn't programmable by the routines TUSB9261 uses. I found the root cause because I was trying to programm the Flash with a GALEP-4. Missing support of this Flash, I used AT26DF041 driver from a pin- and opcode compatible part. It was the same result - programming succeeded according GALEP-4 GUI, but a read after that proved that the Flash still was empty.
The reason is: AT25DF041 is double write protected. In addition to the common "Write-Enable" procedure, there is a sector protection which is globally activated after power-on. One has to remove this sector write protect, e. g. writing the status register as recommended by ATMEL 4064.AT25DF041A.pdf. After that, Flash should be programmable - but only until the next power-up. (See ATMEL Data Sheet page 16ff Chapter 9.3. Protect Sector). So there is no way to get this Flash programmed in-circuit by TUSB9261, though it supports all required opcodes. I have to use a different Flash without this additional Sector Protection. Hopefully, I will get the samples of M25P10 today to check if this was the only reason for the problem.
Thank you for listing the really required opcodes. This facilitates finding supported Flash for all users having similar questions.
Meanwhile I have received the M25P10-AVMN6P from Numonyx/Micron. Still the Flash isn't programmed by TUSB9261, but now I do not find any reason why, the Flash being in the list of tested devices. The Schematics is confidential so I must not post it in a Forum like this. I have used the reference design which is implemented according the Schematics in TI Documentation, even including Push-Button and LED's. The Circuit is to be used as a USB 2.0 to SATA Bridge, so the USB 3.0 inputs are left floating. All devices are layouted close together - even the 3.3V (Linear Reg. from 5V) and 1.1V DC/DC are placed near the TUSB9261, using all required blocking capacitors placed close to the Power Pins. Clock is generated using a 20 MHz Crystal, so the Freqsel lines are pulled low. VSSOSC is not connected to GND. USB Circuitry is working, as the Boot loader Device is properly detected by Flash Burner Software. There is also activity on the SPI lines while attempting to program the Flash. GUI reports successful programming, TUSB 9261 restarts - and still is in Boot Loader mode, also after a reset or power down/up procedure. When removing the Jumper on the SPI Data in - line of TUSB9261, the programming fails according GUI, so there is a reaction to this.
now I have written the binary of TUSB9261 Firmware (TUSB926x_FW_v0.98a.bin) to the Flash (M25P10A) and inserted the Flash into the circuit afterwards. Result: The TUSB9261 still doesn't work as a SATA Bridge. Does TUSB9261 in any way modify the firmware before programming the Flash or does it just copy the binary file?
The flash burner will add some information to the binary code, so if you make an image of an already programmed memory and you use that binary code as the firmware to be burned on another memory then after the flash burner you will have a memory with duplicated descriptors information (see Figure 3-1 of the TUSB9260 Flash Burner - User Guide)
Finally, it works!
Solution for TUSB9261, connected to USB 2.0, is:
take the Firmware Binary File (e. g. TUSB926x_FW_v0.98a.bin) and load it with the TI Flashburner Tool. In the Advanced Descriptors Editor (Button on top of the window), check "HID Enable", UAS Enable" and "self-powered". Then, Export this data to a file. Write this exported file (not the original Firmware binary!) to a Flash, using an appropriate programmer. Don't waste your time, trying to program the Flash in-circuit via TUSB9261. I have been trying this for days and it did not work. It may work with USB 3.0 interface (don't think so) or other Flash (probably with the P-Flash type) - until now I have tried to in-circuit program AT25DF041A, M25P10A, and AT45DB041D via USB 2.0 only, all of which failed constantly.
After soldering the pre-programmed Flash in the circuit, Firmware is running. The TUSB9261 with peripheral I am using is copied from the reference design, with SATA TX lines swapped as documented there - so the SATA Disk was found and could be accessed without further effort. I have succeeded with M25P10A Flash so far, but this way may also work with many other Flash, too.
In my application, the TUSB9261 USB port is connected via Hub TUSB2046. This Hub supports only Full speed, according data sheet. Am I right or can this Hub also support High Speed (480 MBit/s)?
The reduced speed is not really a problem for us as the amounts of data to be read/written to SATA are quite small. As can be seen below, everything except In-Circuit programming of the Flash works fine. But we would also like to program the Flash in circuit, if possible.
May the reduced USB speed be the reason for the failure of the Flash Programming routine (timing issues?)? I have the Eval Board here now and I can erase/program the Flash (Numonyx 25P05VP) there successfully. Our board with the TUSB9261 via TUSB2046 fails constantly with Numonyx 25P10A. Obviously, write errors occurr, as the data streams writing/reading are not identical. Does it make sense to try connecting TUSB9261 USB lines directly to the Windows PC like it is on the Eval Board?
Meanwhile I have tried In-Circuit programming the Flash with TUSB9261, connected to USB 2.0 High Speed. Result: Programming works. Conclusion: TUSB9261 needs USB2.0 High-Speed Connection to properly program its Flash, for whatever reason. I would recommend TI should write this in Datasheet/Application notes of TUSB9261 to prevent future users from disappointments like I had.
I'm trying to make the TUSB9261 work on my new board.
Today I've tried to burn my EEPROM using the latest firmware version, after creating the proper file with the FlashBurner Software - Thanks Martin!
I'm burning the EEPROM externally, not using the In circuit programming, and then connecting the TUSB9261 to the EEPROM.
However I couldn't make it work. There were some SPI interactions between them, but that's it.
My Linux CPU couldn't identify the device, it displayed USB High speed device with error 71. I have Several Questions:
1. Is there a big/little endian issue? How should I program the firmware into EEPROM?
2. What are the recommended parameters for using the Flash Burner software, when afterwards burning the EEPROM externally?
3. Other known issues that I should know?
when you have taken the original file from TI Website and exported it with the Flashburner software as described above, the programmed EEPROM should work with TUSB9261. The Heartbeat LED should be blinking and the activity LED dims up and down slowly. I have used a GALEP programmer and just copied the file into the EEPROM.
If it doesn't work at all, you should have a look at the EEPROM's instruction set and compare it with that mentioned in TUSB9261 Datasheet (esp. read, block read operations). Maybe a different EEPROM needs to be used. If possible, try one of the recommended EEPROM devices.
If the LED's are active and just the Linux system doesn't recognize the SATA device, try connecting the TUSB9261 to a windows PC.
There is also a possibility to in-circuit program the TUSB9261 from a Linux system. Ask the TI Support for appropriate software if interested. Note that a USB 2.0 high-speed connection is mandatory to in-circuit program the EEPROM with TUSB9261, as described above.
That's all I can tell you at the moment, not knowing details of your design.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.