I am using a SigmaDSP with self-boot functionality (such as the ADAU1701, ADAU1702, ADAU1401, ADAU1442, ADAU1445, and ADAU1446).
How do I generate a production-ready data file for my target system's self-boot EEPROM?
EEPROM .hex file generation method:(NOTE: your hardware does not need to be connected to complete this task)
- Load up your .dspproj signal flow file in SigmaStudio- Go to the Hardware Configuration tab
- Add a USBi to the project from the communications channel list- Add an E2Prom to the project from the IC list (usually it will be auto-named as "IC 2")- Connect the EEPROM to the USBi communications channel (it will be assigned the address 0xA0)- Click the Link-Compile-Download button to compile your project- Still in the Hardware Configuration tab, right click on the SigmaDSP (usually the DSP is called "IC 1")- Select the option "Write Latest Compilation to EEPROM"
- If your hardware is connected, the target EEPROM will be written at this time- Now, navigate in Windows Explorer to the folder where your project is saved- Find the sub-folder called "IC2"- In this folder, you will find the E2Prom.Hex file
You can download this file directly to an EEPROM with an appropriate EEPROM downloader program.
My EEPROM burner won't read the hex file that SigmaStudio exports. What I've been doing is burning and EEPROM with the AD board, and then reading it with a 3rd party EEPROM reader as a binary file and using that for mass production. Is there a way to get a binary file from SigmaStudio or convert the hex to binary without burning an EEPROM?
The hex file I am getting is in this format:
0X0F , 0XD9 , 0X99 , 0X9A , 0X0F , 0X8C , 0XCC , 0XCD , 0X00 , 0X0C , 0XCC , 0XCD , 0X00 , 0X80 , 0X00 , 0X00 ,
Different EEPROM manufacturers use varying file formats for the data that is burned to the EEPROM. ADI recommends using a text editor (UltraEdit seems to be the industry standard) to re-format the data file to a suitable form for your particular EEPROM burning hardware.
We plan to support the Intel Hex format in the near future.
Is there any free software which can be used to convert the hex file generated by sigmastudio to intel hex. UltraEdit is costly for a student.
Or is there any reference on what the file format of hex generated by sigmastudio is based so that I could write my own software?
The EEPROM file generated by SigmaStudio is just a comma-delimited hex file. A couple example lines from an E2Prom.hex file from SigmaStudio looks like this:
0x01 , 0x00 , 0x05 , 0x00 , 0x08 , 0x1C , 0x00 , 0x58 ,0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 ,
I'm running into the same problem. I'm programming my EEPROM using the Microchip MPLAB Starter Kit, but MPLAB is requiring Intex format. I downloaded a small command-line conversion utility called BIN2HEX and the resulting file imports successfully into MPLAB, but it doesn't look like the values are right to me. Manually converting this file using UltraEdit or something does not make sense at all since the Intex format requires address and other information in this file. So I'm pretty stuck, eh?
I have not actually used this software, so I am hesitant to endorse it, but I suggest you look into an open source software package called SRecord. It converts between many different file formats for EEPROM data. The software developer is a Unix loyalist, so there's no Windows executable available, but he provides tools and instructions for creating your own build on Windows.
By the way, I have entered a request for Intel Hex output format on our feature request list. However, there are many items on the list already and I don't imagine that this will be given high enough priority to be implemented in the near future.
I'm not really a Windows guy anyways. I'm running SigmaStudio on Windows XP under Parallels on my MacBookPro. Works great!
I was able to convert the file using a Python script I found online to convert from binary to intex (bin2hex).
I'm just curious if you could share some information to help out people who might be in the same situation as you. Did you have to do any special formatting to the E2PROM.hex file after you exported it from SigmaStudio? I'm guessing that you'd have to first remove the "0x" and comma delimiters, as well as spaces. Did you then save the file in a special format in order to prepare it for the bin2hex conversion program?
I'd like to try this out myself, but I don't have an EEPROM programmer around that accepts intex format.
Here's what I had to:
1) Generate the production file (comma-delimited hex values) as described earlier.
2) Go to the Hardware Configuration tab, then IC 2 (WinE2PromLoader)
3) Click in the white text box to browse files.
4) Find the new hex file I had just created in step 1
5) Click "Display File" button.
6) All of the hex values are now displayed at the right, but without "0x" or commas. Highlight the whole thing with your mouse and copy to clipboard.
7) Open a hex editor like "0xED" (Mac app) and paste the clipboard data into it.
8) Save the file with a ".bin" extension
9) Feed this new .bin file into a python script like Intelhex (bin2hex.py) and spit it out as a .hex file (intex hex).
10) Import this new .hex file into MPLAB and burn to EEPROM.
Further to the previous advice, anyone who (like me) finds a free, Windows-based solution the most convenient might like to try the freeware HxD hex editor from http://mh-nexus.de/en/
Copy the hex data from the SigmaStudio WinE2PromLoader window as above, then launch HxD and select File>New. Paste the data into the window, then File>Export as whatever flavour of Intel Hex or S-Record you prefer.
Of course, it would be even better if SigmaStudio could export IntelHex directly, so I hope it is making its way towards the top of the Requested Features list...
Hope this helps - best regards,
Thanks a lot for the great tip, SteveL. IntelHex format is definitely on the requested features list…
From: SteveL email@example.com
Sent: Friday, October 14, 2011 8:49 AM
To: Gildersleeve, Brett
Subject: New message: "How do I generate a production-ready data file for my target system's self-boot EEPROM?"
Analog Devices EngineerZone<http://ez.analog.com/index.jspa>
reply from SteveL<http://ez.analog.com/people/SteveL> in SigmaDSP Processors - View the full discussion<http://ez.analog.com/message/34306#34306
Looks like SigmaStudio WinE2PromLoader exports in a different format than it imports?
Export format is:
But if you try to import this format, it crashes:
---------------------------Application Exception---------------------------Object reference not set to an instance of an object. at ADICtrls.WinE2PromLoader.downLoadButton_Click(Object sender, EventArgs e) at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ButtonBase.WndProc(Message& m) at System.Windows.Forms.Button.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)---------------------------Abort Retry Ignore ---------------------------
Object reference not set to an instance of an object.
at ADICtrls.WinE2PromLoader.downLoadButton_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Abort Retry Ignore
You can use a text editor's "Search and Replace" function to change this into the format required for import:
0x01 , 0x00 , 0x05 , 0x00 , 0x08 , 0x1C , 0x00 , 0x58 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , ...
Then it can be downloaded into the EEPROM.
To convert the "export format" into binary:
srec_cat.exe" %1 --guess -o "%~dpn1.bin" -binary
SRecord doesn't understand the "import format":
srec_info.exe" %1 --guess
It looks like 6 years have gone by and there is still no simple way to get production data out of SigmaStudio
Two ways that kinda work ... build a small board with a EEPROM on it, and use the "write latest compilation to EEPROM" option ... you'll need to figure out how to power the EEPROM and the right connections to get it to go ...
then when it's done, plug it into your EEPROM programmer, read the chip and store the file ... crude, but it works. I was using the USBi adaptor to program my development boards anyway, so I was half way there.
There is a useful utility on this guys page:
I guess he gave up waiting for anyone to update SigmaStudio to write data in a useable form, so he wrote a convertor. It works fine, you just have to use the the "write latest compilation to ..." option and it creates the E2Prom.hex file ... and this utility will convert it to an Intel HEX format file for you
Retrieving data ...