ΣSigmaStudio Ask AI Русский Log in

How do I design a self-boot system?

SigmaDSP & SigmaStudio ADIApproved Jul 28, 2009 00:00 17 replies Original on forum ↗
Subscribe
ADIApproved Question
Jul 28, 2009 00:00

How do I design a self-boot system?

Audio Signal Processors

adau1702

adau1401

adau1446

eeprom

adau1442

adau1445

SigmaDSP Audio Processors

SigmaDSP

adau1701

self-boot

Show More

ADIApproved Reply
Jul 28, 2009 00:00

Application note AN-923: Designing a System Using the ADAU1701/ADAU1702 in Self-Boot Mode describes the basics of self-boot system design.

It specifically describes an ADAU1701/ADAU1702 system, but it also applies to other SigmaDSPs with self-boot functionality.

chenbaoyuan Reply
Jul 30, 2009 00:00

我使用AUDU1446 评估版 为何self-boot 不能实现?

ADIApproved Reply
Jul 30, 2009 00:00

Hello 宝远 chen,

The ADAU1446 can also self-boot. Please use the same method with the ADAU1446 and the ADAU1701.

The EVAL-ADAU1446EBZ has a self-boot EEPROM (U2). You can use this EEPROM to save a self-boot program on the evaluation board.

Then set the self-boot switch (S2-6) to enable self-boot, and reset the board.

ADIApproved Reply
Jul 30, 2009 00:00

NOTE: I can handle questions in English, German, Japanese, and basic Chinese, but please try to post in English if possible.

chenbaoyuan Reply
Jul 31, 2009 00:00

我如你建议(Write latest compilation to e2prom,set the self-boot switch (S2-6) to enable self-boot, and reset the board)后,程序不运行,但是之后经过测试发现,在程序已写入eeprom情况下,按下reset,之后再次进行”Write latest compilation to e2prom“操作时,只要写入部分数据时(再次写eeprom过程尚未完成),程序就能成功运行,这是什么原因?请您提供ADAU1446测试demo(包含eeprom)例程。

ADIApproved Reply
Jul 31, 2009 00:00

Hello宝远 chen,

In order to connect the EEPROM to the I2C bus, LK15 and LK16 (EEPROM Links) must each be connected with jumpers. Have you tried this?

The jumpers must be connected during the download to the EEPROM, AND during the self-boot sequence.

ADIApproved Reply
Jul 31, 2009 00:00

Hello Chen,

If possible, please try to keep your questions in English. According to the Forum Rules of Conduct, "we are only able to

support English language posts at this time." Thank you.

chenbaoyuan Reply
Jul 31, 2009 00:00

Hello,
I'm sure LK15 and LK16 was connected with jumpers,and other jumpers was connected just like the documents.And I can not self-boot my ADAU1466 evaluation board successfully like that:
1,"Link compile download" an programme to the ADAU1446,and the evaluatin board was working;
2,"Write latest compilation to e2prom",and i can read the data from the "read/write window",i also "check last compilation vs eeprom",it was successful;
3,I set the self-boot pin to high(S2 switch 6 is left);
4,I reset ADAU1446(press S3).
After that I could not see the board work,i also do the step like:3,1,2,4. And it also did not self-boot.
But then i "Write latest compilation to e2prom" again,i found the board worked(when it write a part of the data,not all,the board began to work).Why?

Liu.Zicheng Reply
Jul 31, 2009 00:00

Hello BrettG,

I and Chen are sure that the program is success download in the EEPROM,and I through the Oscilloscopes can see the ADAU1446 Load EEPROM in self-boot. I think the program RAM is load from EEPROM.

But after the ADAU1446 self-boot it still can not run my program.If I try rewrite EEPROM again, when the JTAG write only a few bytes, the ADAU1446 is running !!!!

I can see the first block data is JTAG wirte to ADAU1446, and the sub-address is 0xE220. The follow-up data block I can't determine the value.

Please help me analyze what are the factors leading the self-boot fail.

And can you give me a self-boot example project files? Thanks.

ADIApproved Reply
Aug 4, 2009 00:00

Hello Zicheng and Chen,

As this is an issue specific to your setup of the evaluation board, we will work with you directly over email. As your email addresses are not visible, can you please send a request to sigmadsp@analog.com? Thank you.

ADIApproved Reply
Aug 25, 2009 00:00

Hello,

I have discovered the problem with the ADAU144x self-boot. It appears that the self-boot function works just as it should. However, the address 57888 (0xE220) is being written incorrectly with the value 0x00 0x1C.

I am still not sure what is causing this problem, but I believe it has something to do with the EEPROM file generation mechanism in SigmaStudio. I will continue to investigate this problem this week.

The quick workaround is to write to address 0xE220 directly after the self-boot completes. The datasheet describes different values that should be used depending on the source of the frame clocks for the system. For an internally generated 48 kHz frame clock (the most common option), write 0x00 0x00 to address 0xE220 after the self-boot has completed. This should allow audio to pass through the DSP.

ADIApproved Reply
Oct 29, 2009 00:00

The self-boot issue will be fixed in SigmaStudio 3.1.10. However, with version 3.1.9, there will be a workaround.

ADAU144x Self-Boot Workaround

1. In SigmaStudio, go to the Hardware Configuration Tab, then click on the ADAU144x register window tab at the bottom of the screen.

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/8357.d0d2b13107818ec889b70b2edc32fa8e.bin

2. Check the DSP Register Modes 2 Tab

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/3124.201975bc17feaf55d6e552e50c88dbef.bin

3. Make sure the Dejitter window is set to Lower End Window 5.

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/7356.8fe181dfbc9ea3e30cedd58faaa721f6.bin

4. With evaluation hardware connected to the PC, Link-Compile-Download your project.

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/3122.69af4078ea86a35a79f744b64fe449fa.htmlhttps://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/3022.a0c3ee46a607d6ff91bb2a235b3550e6.bin

5. In the hardware configuration tab,right click on the ADAU144x and click "Write Latest Compilation to E2PROM."

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/5353.9e0e826e17efe054009e4802995c09bd.bin

6. In the project folder's "IC2" subfolder, find the E2Prom.hex file.

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/6283.2ecd8b93b3ba5509f12fb12c4b7b0211.bin

7. Open this file with a hex editor like UltraEdit.

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/6266.d1db1b8c52dc02c9c9bd9a486a77b9a0.bin

8. Search for the string "0x00 , 0x1C , 0x00 , 0x05"

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/1768.47b818b53fc5c2799c131cc3e0f04233.bin

9. Replace the 0x1C with the proper value for the "Start Pulse Select" register. For 48 kHz internal, this is 0x00. For 96 kHz internal, this is 0x01. For 192 kHz, this is 0x00.

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/6014.b5aa2c1de1e2ddf205e3e56d3b7fa7aa.bin

10. Save the file.

11. In SigmaStudio 3.1.9 or later, right-click on the EEPROM cell and choose "Read/Write Window"

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/6433.deef32967b16721147c0e65e220d9fef.bin

12. Click in the top white space to select a file.

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/8764.696064b680cbaeb10cc2e6e9d3df950e.bin

13. Select the file you just edited.

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/7713.2322b3f37c9fa712f4a39bae52edea35.bin

14. Click the "Download file to E2Prom" button.

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/3058.2e49073388efabd78446ec6797f719d4.bin

15. Make sure the SELFBOOT pin is tied high on the ADAU144x, and then reset the device. The selfboot should now work properly.

ADIApproved Reply
Dec 4, 2009 00:00

To everyone following this topic, the fix has finally been implemented in SigmaStudio. In the next release of SigmaStudio (that is, the release following 3.1.9), the self-boot EEPROM image generation functionality will now work properly for all supported SigmaDSPs.

Users will also be able to generate EEPROM images of any write sequence using the sequencer window. A new function has been implemented that will export any saved sequence as a .hex file compatible with our EEPROM loader.

When the new version of SigmaStudio releases, I'll reply again to this thread with a brief tutorial of the new functionality.

Thanks,

Brett

ADIApproved Reply
Dec 4, 2009 00:00

A description of the updated EEPROM image generation method is here:

https://ez.analog.com/thread/2422?tstart=0

andrea.labhf Reply
Jan 26, 2010 00:00

I've the same problem...

For succesfully complete a selfboot I've to write 0x00000000 in 0xE220 address, then stop and start core run bit.

Now I'll try the workaround that you have suggested.

If it works I can avoid to use a microcontroller for write 0xE220 register.

I've seen a little "error" in ADAU1446 datasheet, EEPROM Format section:

Page 28: The body of the message following the message type should

start with a byte indicating message length and then include a

byte indicating the chip address. Following this is always a

2-byte register or memory address field, as with all other

control port transactions.

I'm going crazy to decode selfboot eeprom... I'm pretty sure that there are always 2 byte indicating the message lenght.

Thanks

ADIApproved Reply
Jan 28, 2010 00:00

Hello andrea.labhf,

Thank you for pointing out this typo. This will be addressed on the next revision of the datasheet.

EZAdministrator Reply
Apr 29, 2019 00:00

This question has been closed by the EZ team and is assumed answered.