How do I design a self-boot system?
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.
我使用AUDU1446 评估版 为何self-boot 不能实现？
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.
我如你建议（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)例程。
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.
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.
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 firstname.lastname@example.org? Thank you.
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.
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.
2. Check the DSP Register Modes 2 Tab
3. Make sure the Dejitter window is set to Lower End Window 5.
4. With evaluation hardware connected to the PC, Link-Compile-Download your project.
5. In the hardware configuration tab,right click on the ADAU144x and click "Write Latest Compilation to E2PROM."
6. In the project folder's "IC2" subfolder, find the E2Prom.hex file.
7. Open this file with a hex editor like UltraEdit.
8. Search for the string "0x00 , 0x1C , 0x00 , 0x05"
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.
10. Save the file.
11. In SigmaStudio 3.1.9 or later, right-click on the EEPROM cell and choose "Read/Write Window"
12. Click in the top white space to select a file.
13. Select the file you just edited.
14. Click the "Download file to E2Prom" button.
15. Make sure the SELFBOOT pin is tied high on the ADAU144x, and then reset the device. The selfboot should now work properly.
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.
A description of the updated EEPROM image generation method is here:
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.
Thank you for pointing out this typo. This will be addressed on the next revision of the datasheet.
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.
NOTE: I can handle questions in English, German, Japanese, and basic Chinese, but please try to post in English if possible.
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?
Retrieving data ...