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

No output when uploadet to EEPROM?

SigmaDSP & SigmaStudio IPv6 Oct 13, 2016 00:00 6 replies Original on forum ↗
Subscribe
IPv6 Question
Oct 13, 2016 00:00

I got a little problem with my ADAU1701.

I've made a sigmastudioproject out of my requirements and everything is working great so far with the "Link Compile Download" button.

But as soon as i upload the program to the EEPROM and try it out without my computer i got no output.

I have to mention that the project is pretty big, so that might be the point. But it is below 1024 instructions, i got no errormessage while compiling.

If i remove one block (filter, superbass, level detector) and upload it again to the EEPROM, it works without any problem.

But as soon as i put the removed block back in it won't work out of the EEPROM. Via the "Link Compile Download" it does exactly what it's suppost to be.

What could cause this problem? Is there a way to avoid it?

I've uploaded my project below this message.

Best regards

Audio Signal Processors

eeprom

SigmaDSP Audio Processors

selfboot

adau1701

DaveThib Reply
Oct 13, 2016 00:00

Thanks for supplying the project. I am looking into it now...

Dave T

DaveThib Reply
Oct 13, 2016 00:00

Hello IPv6,

I loaded up your project, the only change I made was to change the output port assignments to be DAC 2 & 3 so it would work with the eval board and a set of headphones.

You project does load up and run. The pot on the eval board changes something in one of the filters and I can hear that working.

I write the latest compilation to the EEPROM and selfboot and it works fine. I erased the EEPROM and verified that it no longer had a program on it and wrote it again and it still worked.

So what is the size of your EEPROM?

What are the settings you are putting into the window when it pops up to configure the EEPROM? Take a screenshot.

Thanks,

Dave T

IPv6 Reply
Oct 14, 2016 00:00

Hello Dave,

thanks a lot for your response!

I did the same, erased the eeprom ("00" everywhere) and put the program back on. There's still no output.
But there's one thing i've noticed: If i clear the eeprom and put the program with one filter removed on it, so that i got an outputsignal, there are some "00" left at the end of the memory.
If i clear the eeprom again and put the whole program (with the removed filter added) in it, there are no "00" left at the end of the eeprom.
The "Mem Usage" label says the program uses only 27%. I think with only 27% used memory there should be some free space at the end of the memory?
I attached some screenshots of the memory values.

My eeprom should have 32kbyte, i also attached a screenshot of the configuration window.

It seems to be an issue with my eeprom.

Just the moment I wanted to send this message i finally figured out how i could solve the problem!

If i reduce the amount of stored parameters of the lookup filters from 51 (eq) and 50 (high- and lowpass) to 43 (eq) and 44 (high- and lowpass) it works running out of the eeprom as expected. As soon as i add one more curve to one of the lookup filters i got no output again.

So it's definitely a memory caused problem. I don't know what exacly causes the error but reducing the amount of curves a little is a good compromise for me.

DaveThib Reply
Oct 14, 2016 00:00

Hello IPv6,

I did some investigation of this issue. I do see something but I can use some more information from you to help me figure this out. If I set SigmaStudio to 32kbyte EEPROM it works on my system but I think there is a reason for it. I will explain more later.

So can you do a few things for me. Take the exact program you sent over to me, compile it and write it to the EEPROM. Make sure it was erased first. Then take a screen shot of the beginning of the EEPROM in SigmaStudio. Then also take a screenshot of the very end. (it should be all zeros).

Let me know what EEPROM you are using, the part number.

Then remove the filter and repeat, erase the EEPROM and write the program to it. Check that the first time it did not selfboot and the second time it did selfboot. Send me the screenshot of the beginning of the EEPROM again.

Now for a workaround. (and this is also a test). Compile the full program and then take the hex file and upload it to the EEPROM. It is located in the folder that is named the same as the IC. So it is either IC1 or IC2. I am not talking about the xxxx_Hex.dat file. I mean the E2PROM.Hex file. If this still does not boot up then if you have some other EEPROM loader, then try to use that with the Hex file.

Thanks,

Dave T

IPv6 Reply
Oct 15, 2016 00:00

Hello Dave,

thanks again for your help!

I'm using an 24C64WP EEPROM.

And that is embarrassing to me now, because a quick google search says it is only a 8kByte EEPROM.
The basic sigmastudio project file published by the manufacturer of my board has this 32kByte EEPROM setting so i thought the installed EEPROM is also a 32kByte one.
I wasn't aware that using a smaller EEPROM than set causes no errormessage, so i didn't look at the EEPROM chip first.

It's not surprising that using more than 25% of the set 32kByte EEPROM causes an error.
The solution should be to change the EEPROM to a 16 oder 32kByte one.

Please excuse the unnecessary expenses, i'm really sorry.

Best regards

DaveThib Reply
Oct 17, 2016 00:00

Hello IPv6,

Don't worry, I think the vast majority of engineers reading this can tell stories of something they overlooked or assumed in a design that came back to bite them! I inherited a design a few years ago that had multiple issues with wrong part numbers and bad part definitions/footprints that cost me months! We all learn and move on!

What I think happens, and this is what I was looking for in the hex files, is that once you exceed the EEPROM memory size it will ignore the upper bits and start writing again at the start of the memory space. So the beginning of the program would get trashed and not load properly when the DSP tries to load it. I am not a memory expert but I guess it would depend on the implementation inside of the EEPROM. I guess the programmers would think why would someone try to address a location greater than the max EEPROM size? I cannot argue with that.

So I think you will be fine when you try a larger EEPROM. By the way. The program size is about 8500 bytes so it would overrun the 8124 bytes of the 8K byte EEPROM. So all the symptoms line up.

Dave T