Post Go back to editing

Interface write block causing boot failure (tried everything)

Category: Software
Product Number: ADAU1462
Software Version: SS 4.7

Hi everyone,

I'm working with a project that need change between 3 inputs, so I'm using a rotary encoder to do this job.

The problem it's when I use a Interface Read/write block to save on my EEPROM the state of the rotary, the next reset, the DSP fail to boot.

It's certainly a checksum error, like the EEPROM values changed (because the iface write block), the checksum it's not updated accordingly.

I read on another post ( RE: [Bug Report] ADAU1467 Interface Write creates Self Boot failure) to write 0x00 on the last 8 byts of the EEPROM data, so I did:

I downloaded the modified code and......

Nothing worked. --- Just a parentesis: Sometime, when I try 4, 5, 6 times, some sometime works, but it's not sure.

For me, everytime I need write to EEPROM, I need erase it first, and then, write to EEPROM (with my ADAU1462). I have a 1701 and doesn't need this. (Just to know).

Things I tried:

Erase EEPROM -> Write normal code -> Write modified code ----- Sometime works, like 1 each 6~10 times.

Erase EEPROM -> Write normal code -> Erase EEPROM -> Write modified code -----  Worked once.

Erase EEPROM -> Write modified code ----- Never Worked

Write normal code -> Write modified code ----- Never worked

Write modified code no matter what I've done before ----- Never worked

Think it's a bug? Because DaveThib said the last sigmastudio version, when use a InterfaceWrite block, the software already change the checksum to all 00, but it's not what I'm seeing.

It's not working for me, HELP

  • Hello IcaroViana2,

    Can you attach your project?

    If you send me a PM make sure to also send me a friend invite otherwise I cannot reply. 

    The issue with needing to erase the EEPROM has to do with having Selfboot enabled. If you have a larger program then what happens is that when the part is reset to start the writing to EEPROM it actually starts booting from the EEPROM meanwhile SigmaStudio is also loading in a program for exchanging data from the slave port to the master port which ends up corrupting the program in RAM. 

    If you erase the EEPROM then the selfboot routine tries three times and fails because it does not see the correct hex number in location zero. This happens very fast before SigmaStudio has time to start loading in the program so it works. 

    So you are sort of fighting two issues at once. 

    Send over your program and I will see if I can get it to work.

    Dave T

  • Hey Dave, this is the project... A little big, btw.

    My selfboot jumper its always closed (to disable selfboot) when downloading.

      

    7875.0 - SIGMASTUDIO BKP.zip

  • Hello IcaroViana2,

    I tested this with ADAU1462/66/67 DLL's. Initially nothing worked but after Dave's workaround (zero out those last 8 bytes and download the data from sequencer window), everything properly works, and I verified it multiple times. I use SS 4.7. So, I don't think there is a bug.

    I have got few strange errors when I compiled your project. I'm looking into that.

    Can you please check this basic project in your hardware and get back to us?

    This is a basic rotary encoder- volume control project. Follow the steps and zero out those 8 bytes and download the data. Then initiate self-boot operation.

    5658.rotvol_check.zip

    Regards,

    Harish

  • Hi Harish, 

    I did what you asked but it didn't worked.... Same as previous, didn't boot after chaging the 8 last bytes... I checked the selfboot pin, everything was ok.

    Ps.: I had to change your project, because I'm using 1466 and you sent 1462 project, however, same blocks as the original.

  • Hey Harish, some update? I'm just anxious to make it work, all thing I've tried failed

  • Hello IcaroViana2,

    Sorry for the delay in response.

    I have tried your project, but I removed all the master control port blocks. You have six external I2C chips for external communication from the master control port, I removed all and I set the serial port formats and things as I want for my eval board. I was programming the DSP from I2C and talking to the EEPROM from master control port by SPI.

    The same thing that Dave suggests works fine with your project. So, your project is actually fine (If you set proper clocking as you want). Did you connect all of these external I2C chips and I2C EEPROM in a same bus?

    The next thing will be probing the signal. when you initiate self-boot, see what's happening in the I2C line.

    Please mention what is EEPROM that you are using.

    Regards,

    Harish

  • Hi Harish, 

    I'm using the ADAU1466 in my project as you probably noted, so the i2c bus its the same for both EEPROM and all external chips (1x PCM1865, 4x PCM5122, 1x PCA9536)

    My actual EEPROM its the 24AA512 (I2C) because all my project have to use I2C, as my programming board just communicate with it...

  • Hello,

    Can you please probe the I2C line and verify what is being sent from the master control port?

    May be just try with only one slave connected. I suggest you try just reading one part only and only a short read of a few bytes. May be a small program with DC cell or something. This way the checksum still has to be zero'd out.  So, if it boots, then you may be having timing problem with your original project. since I2C is slow, we need to consider few other things. Just try this and get back to us. we will move forward based on your results.

    Regards,

    Harish