I've designed a new custom carrier board for Edison for a project I am working on.
and I have VSYS powered from 3.3V From a local LDO on the new board.
I have an FTDI Cable attached to UART2 Pins 22 & 27 via a 1.8v to 3.3v level shifter.
When I power the board it doesn't boot, but I do get this output from UART2:
PSH KERNEL VERSION: b0182b2b
SCU IPC: 0x800000d0 0xfffce92c
PSH miaHOB version: TNG.B0.VVBD.0000000c
microkernel built 11:24:08 Feb 5 2015
******* PSH loader *******
PCM page cache s)ze = 192 KB
Cache Constraint = 0 Pages
Arming IPC driver ..
Adding page Store pool .
PagestoreAddr(IMR Start Address) = 0x04899000
pageStoreSize(IMR Size) = 0x00080 00
*** Ready to receive application ***
And then it just stops there indefinitely.
I do not have anything connected to pins 31 or 69, but it looks like it is in firmware recovery mode to me. I could be wrong!
Any ideas what is happening here and what I am doing to prevent it from booting?
Any chance you're current limiting? Next in the boot sequence should be u-boot which loads it's device drivers which increases the current drawn - you might not see any further messages because they don't make it out before Vsys dips too low.
Just a thought - Mario
The Image I am using is http://downloadmirror.intel.com/24910/eng/edison-src-ww18-15.tgz and I don't think it should be current limiting, I'm using +5V from an USB connection via a REG1117 3.3v LDO.
I've seen big current peaks during startup - can you throw a scope on Pin 8 or 10 (System 3.3 V output) and see if the voltage dips? The REG1117 3.3v LDO is rated for a max. 800mA output so I'm really inclined to agree with you that you're not current limiting but a scope on pin 8 or 10 will conclusively eliminate it as an issue. This https://www.scivision.co/measured-power-consumption-of-intel-edison/ page shows current draws at start with a 5 volt power supply and they are max'ing out at around 200mA on 5 volts so in theory you should be good, I just don't know what else you're powering off of the system 3.3v ...
Thanks for your interest in the Intel Edison Platform.
Before providing you any recommendations, could you please tell me: What image are you using?
Also could you try the suggestion given by mpapini.
I will be waiting for your reply, have a weekend!
So I have scoped the 3v3 signal, and also the 1.8v signal coming from Edison.
Neither are dropping out.
I'm really scratching my head on this one.
I have 3v3 on pins 2,4,6 and 14
I have GND on pins 1,5,9,11,13 and 15,
I use the 1v8 output from pin 12 and it powers a WM8731 Audio DAC and is also fed to the VCC_A input of a TXB0108PWR level shifter, VCC_B to that chip is 3v3.
and have confirmed all these pins to be connected using a microscope.
The level shifter is used to interface to a 3v3 FTDI Header for UART2, and a 3v3 Pin header for UART1 (currently with nothing attached to it.).
My entire schematic is http://files.spider-e.com/edison_rock.pdf here.
If I remove the edison and put it onto a Edison Breakout board then it boots normally.
I think I must be missing something obvious.
Can anyone see why this board won't boot? Or maybe point to a document which describes the boot process?
Looked over your schematic and found nothing evil - sorry. The only difference with any of my boards is that I tend to ground unused pins, but thats just habit on my part - try pulling the fw recovery pins low and see this http://www.intel.com/content/www/us/en/support/boards-and-kits/000006138.html link (only place I had found guidance on FW pins) - otherwise, my working boards and your non-booting board are functionally equivalent from a power point of view.
The boot sequence (never found a document myself either so take this with a grain of salt) is PSH (basically an Intel closed source microkernel) that then loads u-boot which loads some basic drivers, loads the kernel into memory and then launches the linux kernel. Your board seems to be in recovery mode as you said, so perhaps tying those pins low will help.
I've double checked the voltages, with the oscilloscope and can't see anything.
I've also put the Edison back on the breakout board and there it boots fine.
I will keep looking. I have four of these boards and they all do the same thing, so unlikely to be short or bad connection, but I'll check everything.
I will try your suggestion of taking those two lines low too.
I don't have too much experience designing custom boards, but I have found this schematic that might be useful to you (mpapini suggested.
I hope you find this information useful, we hope you have a nice day!
OK So I managed to get this to boot.
I removed the TXB0108PWR and it immediately started working, so it must be something to do with signal being presented to UART1 or UART2 during boot.
The TXB0108PWR is a signal level translator that I'm using between the 1.8 V logic and the 3.3 V UART pins.
The TXB0108 is for use on push-pull signals rather then open-drain but I couldn't actually see any information about whether the Edison UART GPIO is push-pull or open drain.
I will now try adding some very weak pull-ups on the RX lines for both UART1 and UART2 and put the TXB0108 back in place. Failing that I might have to swap the chip for a TXS0108 - but Farnell in the UK are out of stock of them till january at least.
At least I can now see why it won't boot!
Not sure myself what's going on with the level shifters in general and the Edison as a whole but you might want to take a look at the edison http://www.intel.com/content/dam/support/us/en/documents/edison/sb/edison_arduino_hvm_8_26.pdf arduino board schematics and gather how they did it.
Best of luck - Mario
Right - I have this figured out now!
During the first part of the boot the drive strength on UART2 is enough to overcome the pull-up built into the FTDI Serial Cable I was using for debug.
After the "ready to receive application" message the drive strength on UART2_TX is less (weak), and the pull-up causes the TXB0108PWR to think that the direction has changed and it starts to drive from B to A, meaning that nothing is received at the serial cable. The chip is trying to do the level translation in the wrong direction. This lead me to believe that the device wasn't booting, because I could not get past the message.
I added a 10K resistor in-line with the FTDI_TX signal and that is enough to keep the TXB0108 translating in the right direction. I can now boot to the prompt!
The rest of the board works a treat including the other UART and the Audio DAC.
I think a good solution would be to use the TXS0108 instead of the TXB0108, or to use a different level translator entirely.
We live and learn!
Thanks to everyone who helped!!
I should also mention - I tried increasing V_SYS to 4.5 Volts, but it made no difference.
Back at 3.3 V and with the resistor I mentioned in my previous post this board is now working!
I'm glad to hear that your Edison is booting now! Thanks for sharing all your results, since it may benefit other users interest in developing their own custom boards.
If you have any more questions regarding the Intel Edison Platform, please don't hesitate to contact us.
Have a nice day!
The presnetation went well and the board behaved perfectly!
I've ordered TXS0108 to replace the TXB0108, and since they are a pin-for-pin match it should be an easy exercise.
It pays to read the small print in the datasheet! The one for the TXB0108 has a good description of how it works to figure out which direction data is flowing.
The one thing that I could not find, and which would have helped me earlier in the process was a good technical description of what happens when Edison is booting.
The change from STRONG to WEAK drive on UART2 during boot is, AFAIK, undocumented and caused me a few days of trouble. I might start a separate discussion about that there, what do you think?
I'm glad to hear that your presentation went well! Yes I think that starting a new discussion will be better, since this thread is already marked as correct answer.
Have a nice day!