Re: FCDEV3B sleep mode bug update

2018-04-02 Thread Mychaela Falconia
Hello FreeCalypso community,

With April Fools silliness out of the way, I have some real news
regarding the progress of our family of projects.

The first update is that I have progressed one more step in the sleep
mode bug investigation.  With help from our dear Das Signal, I learned
how to convert one of my oscilloscope probes from the hook type to the
needle type, and I was then able to use this o'scope probe to observe
the FDP signal (Calypso output) on a decased Pirelli motherboard.  I
powered it with alligator clips on the spring contacts of the battery
connector (a total hack, but I got the clips to stay connected and not
short for the duration of the experiment), loaded an AT-over-RVTMUX
Magnetite fw build via USB and fc-xram (connect USB with no battery
power, run fc-xram, then apply power to the battery contacts), and
observed the FDP signal that comes out to an unpopulated 0402R
footprint with different AT%SLEEP settings.

The observation of this FDP signal confirmed my hypothesis: it does go
low in all sleep modes including small sleep, but stays a constant
high when all sleep modes are disabled.  Consequently, my bigger
hypothesis that having this FDP signal connected to the flash chip's
reset input is what causes the sleep mode bug (because of it going low
in all sleep modes and jerking the flash chip's reset line) is still
plausible, and is supported by the observation that on Pirelli's board
this FDP signal does NOT drive the flash reset line - that resistor is
unpopulated.

The next step will be to try a very delicate surgical experiment on an
FCDEV3B: remove the flash+pSRAM chip (BGA rework station to the
rescue), cut the trace between the D5 ball pad (flash reset) and the
microvia it goes to, make a solder bridge or some other hacky
connection to the C5 ball pad next to it (WP#/ACC input, connected to
flash Vcc through a pull-up resistor), and then put a new
S71PL129NC0HFW4B flash+pSRAM chip back on (BGA rework station once
again).  The effect will be to disconnect the flash chip's reset input
from FDP and tie it high instead.  Then see if this hw change makes
the sleep mode bug go away.  I am going to email Technotronix and ask
them if they can do the just-described feat.

The other big venture I've been doing is dealing with several
different LCD manufacturers in China, trying to find a suitable LCD
module for our FC Libre Dumbphone handset.  My display size
requirement is 176x220 pixels (color TFT), chosen for two reasons:
(1) so that the first prototype of our handset can also serve as a
replacement for TI's D-Sample, and (2) to maximize our ability to
reuse TI's existing starting-point UI code that is written for this
display size.  The second requirement after the size is that the
interface needs to be 16-bit parallel (as opposed to 8-bit parallel or
SPI, which are the other common options in the industry); this
requirement is driven by performance considerations: both the D-Sample
and the Pirelli have 16-bit LCDs, wired such that each RGB565 pixel is
sent to the display with a single Calypso ARM7 write cycle, and I am
not comfortable with using a slower LCD interface in our own design.
The third and final requirement is that the LCD needs to be designed
for 6 o'clock viewing direction, as that is the direction from which
the display on a cellphone handset is going to be viewed.

I used to be a big fan of Crystalfontz, a USA-based distributor of LCD
modules who generally have good technical documentation for their LCDs
and offer all of their products in a hobbyist-friendly manner with no
MOQs, but their 176x220 module only brings out 8 data lines; the
actual controller in their LCD is 16-bit-capable, but only 8 lines are
brought out to the FPC tail.  I asked them if they could make a
modified version with all 16 lines brought out, and they responded
with a price figure that is not reasonable for our little project.  So
I went to Alibaba (the Chinese market) and found that quite a few of
those Chinese manufacturers already have 176x220 pix 2" TFT LCD
modules that bring out all 16 data lines plus the IM0 configuration
pin, so the LCD can be used in either 8-bit or 16-bit mode.

The big difficulty is that the details of the LCD interface (whether
the FPC tail is soldered down or goes into a ZIF connector, and the
exact pinout of this connector or solder-down tail) are different for
each manufacturer's LCD module, not standardized in any way.  It is
therefore not possible to design a handset motherboard to accept "any"
LCD module and let various manufacturers compete for our business at
some far future date when we go into volume production, instead we
have to design our motherboard for some specific LCD module XYZ from
manufacturer ABC from the start.  Changing to a different LCD module
from a different manuf further down the line (for example, if our
originally chosen vendor goes out of business or starts demanding an
unreasonably high MOQ*unit_price product) will be possible, but 

Re: FCDEV3B sleep mode bug update

2018-03-26 Thread Mychaela Falconia
Hi DS!

> First of all, congratulations on this new breakthrough!

Well, it is not quite a breakthrough yet, only a hypothesis (so far
unproven) that FDP going low during sleep and driving the flash reset
is the culprit, but the fact that the Pirelli has FDP disconnected
from this flash reset line is strong evidence in support of it.  We
still need to test it properly to be certain.

> About the new batch of FCDEV3B: as this would be quite expensive,
> don't you think it'd be perhaps best to set this money aside for the
> next step of FC hardware, namely the handset?

Yes, I will need to give it some more thought.  At the minimum though,
we still need to do the probing test on a decased Pirelli motherboard
(where an unpopulated 0R footprint can be used as a test point) to
confirm if indeed Calypso's FDP output does what I think it does, and
the surgery experiment on an FCDEV3B to see if my proposed change will
make the problem go away.  Even if we end up never making a corrected
FCDEV3B batch, knowing the fix would be valuable for answering
potential buyer inquiries, and of course we would need the same fix
for the HSMBP, hence knowing it would be a great peace of mind.

> As I imagine the costs
> to create a handset would be very large and may require a lot of
> cash upfront, every amount would count.

Actually I do not currently anticipate a single large upfront cost
that has to be paid all at once, instead over the course of the year
or two that it will take me to do the design, I anticipate having lots
of little expenses here and there, primarily for hiring outsourced
help for various little steps which would be too difficult for me to
do on my own.  Here are some examples:

* I am currently in the process of evaluating LCD modules from 3
  different vendors, or more precisely, in the process of ordering
  sample pieces for evaluation.  The cost of these sample pieces
  themselves is negligible, but in order to evaluate them, I may need
  to make a little LCD test board.

* As far as serial interfaces go, I am pursuing the following
  arrangement: the MODEM UART will be brought out on the handset's USB
  port via a CP2102 or FT232R chip, combined with charging, whereas
  the IrDA UART will be brought out to a debug connector together with
  JTAG.  The debug connector will take an FPC cable going to a
  FreeCalypso debug adapter board, and the latter will be nothing more
  than an FT2232D adapter with the special connector.  The principle
  is exactly the same as Openmoko's debug board, but the debug connector
  pinout and form factor will be copied from the Pirelli.  I will need
  to have the modified FT2232D adapter board and the FPC cable made,
  and I will test these pieces against a decased Pirelli motherboard
  ahead of our own HSMBP.  Building the debug tooling for our HSMBP
  ahead of the main device itself is the hardware engineering analogue
  of test-driven development in software, where you write the tests
  ahead of the production code to which they apply.

* Once I get to doing the schematic-level design of the HSMBP itself,
  I would really like to be able to get some hired help from someone
  who is more of an EE than I am.  I would like to have a backlight
  driver circuit that produces the same current through the LEDs
  regardless of the battery state of charge and thus the voltage; a
  plain series resistor won't do the trick, and I would like the help
  of a real EE (which I am not) to come up with a smarter circuit,
  ideally one that is also more efficient than a voltage-dropping
  series resistor.  I may need similar EE help in some parts of the
  audio subsystem and with the charging circuit.

* I am tired of being held hostage to proprietary tools, hence my plan
  with the HSMBP is to bite the bullet and do it properly in a FLOSS
  PCB layout tool.  KiCad is a turn-off for me, but pcb-rnd has been
  making great progress lately, and it appears to be very close to a
  state where it could do the needed job.  But I will probably need to
  offer some $$$ to a pcb-rnd developer to implement some finishing
  touches which we need but which others apparently don't need, and
  which would therefore not get implemented organically.

As you can see, there will be a cost associated with each of these
steps, but they are relatively small costs which would need to be paid
to different people for entirely unrelated jobs, and can therefore be
spread out over time.  I will write more later, but I am very tired
right now, so I am just getting this reply out with my current not-
quite-finished thoughts.

M~
___
Community mailing list
Community@freecalypso.org
https://www.freecalypso.org/mailman/listinfo/community