Pages

Tuesday, April 23, 2013

Guzunty Pi non-start/deadlock problem and demultiplexing design notes

Now I am  suing the old "display 0123" program to make sure the tidied up hardware are still working.  The LED does display 4 digits, but 1 digit misaligned.  That is, instead of displaying 0123, it displays 3210.

I met this problem before, and I know how to fix it, simply by hardware resetting using power off then power on.  Last time it worked, and this time it works as well.  I guess that it hardware reset always works.

Actually I encountered a similar problem before, that is the non_start problem.  I forgot which cores I was testing, but the problem is always the same, does not start, and the worst thing is that this problem is intermittant.

This is a big problem, even later on there is a alternative core which provides software reset using GTS, for 2 reasons.  First, I don't know when and if the CPD does not start in the beginning, or gets stuck in the middle.
So I might need to check from time to time, with the help of a watch dog timer and other tools.

The other problem is that the checking and resetting hardware cannot be or associated with the CPLD, otherwise the whole thing could not start, or get into a deadlock.

Another problem is that RPi has only got two channels in SPI0, so only 1 of 2 devices can be selected.  Since I got 4 Guzunty Pi's and probably many more SPI devices later.  So I need some demultiplexing thing to select more than 2, perhaps 16 devices.

Actually Raspberry Pi's I2C has the same problem.  If RPi can only support I2C0 and I2C1, then there is a limit of at most 16 devices.

I vaguely remember that both I2C and SPI can select many more devices.  For I2C the limit is 127, but I am not sure if this is the standard specification.

So I think I better wikiu and goole to learn more.

.END

No comments:

Post a Comment