XO 4 Touch Testing: Difference between revisions

From OLPC
Jump to navigation Jump to search
(→‎IR PCB ASSY: correct judgment)
 
(51 intermediate revisions by 4 users not shown)
Line 2: Line 2:
This page describes the production test support provided with the touchscreen in [[XO-4]].
This page describes the production test support provided with the touchscreen in [[XO-4]].


Test routines are provided in [[Open Firmware]] for testing the various components of the touchscreen system, at various stages of manufacture. The touchscreen system consists of a microcontroller on the motherboard, an IR PCB which contains the IR transmitters and receivers, a flat flexible cable interconnecting the two, and a plastic lightguide which collimates the light to/from the LED sensors.
Test routines are provided in [[Open Firmware]] and manufacturing-scripts for testing the various components of the touchscreen system, at various stages of manufacture. The touchscreen system consists of a microcontroller on the motherboard, an IR PCB which contains the IR transmitters and receivers, a flat flexible cable interconnecting the two, and a plastic lightguide which collimates the light to/from the LED sensors.



==IR PCB SMT==
==IR PCB SMT==
Line 11: Line 12:
There should be no operator interaction with the IR PCB. They should simply be able to drop a board into the test fixture, press a button on the keyboard, and the screen says pass or fail with an appropriate background (red/green).
There should be no operator interaction with the IR PCB. They should simply be able to drop a board into the test fixture, press a button on the keyboard, and the screen says pass or fail with an appropriate background (red/green).


''After testing is complete, the MSP430 should probably be placed into reset to allow for cable disconnect. It should be rebooted for each test.''
''After testing is complete, the MSP430 should be placed into reset to allow for cable disconnect. The MSP430 should be rebooted for each test.''


'''Implementation Guidance'''
select /touchscreen
* requires Open Firmware Q7A12 or later,
0 to faults test-os
* TS tag need not be set,
faults 0= if green-screen else red-screen then
* activate the test with:
touch-rst-gpio# gpio-clr
11 to test-station \ SMT
key drop
test /touchscreen
* sample output (pass):
Connect IR PCB, press a key
Open and Short
X Axis
Y Axis
Disconnect IR PCB, press a key
ok
* sample output (fail):
Connect IR PCB, press a key
Open and Short
X Axis
( bit 47 )
( bit 51 )
( bit 53 )
( bit 57 )
( bit 59 )
Y Axis
( bit 36 )
( bit 40 )
( bit 42 )
Disconnect IR PCB, press a key
/touchscreen selftest failed. Return code = 8
ok


==IR PCB ASSY==
==IR PCB ASSY==
Line 30: Line 60:
automatic abort of the test (w. fail) if the appropriate motion isn't detected within thirty seconds.
automatic abort of the test (w. fail) if the appropriate motion isn't detected within thirty seconds.


''After testing is complete, the MSP430 should probably be placed into reset to allow for cable disconnect. It should be rebooted for each test.''
''After testing is complete, the MSP430 should be placed into reset to allow for cable disconnect. The MSP430 should be rebooted for each test.''


'''Implementation Guidance'''
* can be done now with revision A IR PCB if the finger or stylus is omitted:
* requires Open Firmware Q7A12 or later,
select /touchscreen
** includes a Forced LED Levels test,
0 to faults test-fss
** tested with revision B IR PCB,
faults 0= if green-screen else red-screen then
* TS tag need not be set,
touch-rst-gpio# gpio-clr
* activate the test with:
key drop
ok test-ir-pcb-assy

* waiting on revision B IR PCB for implementation:
select /touchscreen
0 to faults test-edges \ not yet implemented
faults 0= if green-screen else red-screen then
touch-rst-gpio# gpio-clr
key drop


==MB SMT==
==MB SMT==
Line 54: Line 78:
the test fixture and power it on --starting the automatic test menu. When run the touchscreen test shall attempt to install firmware into the microcontroller, then attempt to communicate with the "known good" IR PCB. The test result should be indicated visually and the automated test stopped on failure.
the test fixture and power it on --starting the automatic test menu. When run the touchscreen test shall attempt to install firmware into the microcontroller, then attempt to communicate with the "known good" IR PCB. The test result should be indicated visually and the automated test stopped on failure.


'''Implementation Guidance'''
* checking for proper functioning of the touchscreen microcontroller and connector to the IR PCB can be achieved with:
* requires Open Firmware Q7A12 or later,
* TS tag must be SMT,
* touchscreen microcontroller firmware must be flashed,
** using: " u:\zforce.hex" $flash-bsl
** progress will be displayed (svn 3239 or later),
** it takes about 58 seconds,
** the microcontroller is available for testing immediately without a power cycle,
** ''flashing of microcontroller is implemented by Quanta in manufacturing-scripts:cl4/smt/cl4.smt flash-nn-fw''
* check for proper functioning of the touchscreen microcontroller and connector to the IR PCB with:
test /touchscreen
test /touchscreen
* possible failures are:
* firmware can be flashed using:
** ''no response to reset'', the microcontroller did not make the data ready signal active within 250 ms of the reset signal being made inactive,
" u:\zforce.hex" $flash-bsl
** ''failed to boot'', the microcontroller did make the data ready signal active, but did not respond to I2C bus signalling,
* is it safe to repeatedly flash firmware into the microcontroller?
** ''failed to configure'', the microcontroller stopped responding during the configuration process,
* the time taken to flash firmware can be quite long, should this be done at this test stage?
** ''timeout'', the microcontroller did not respond within the expected time to one of the several operations; status, initialise, set resolution, activate, and deactivate.


==MB ASSY==
==MB FINAL==
This test is done to each assembled laptop as part of assembly testing (TS code ASSY). The code runs on XO-4 A2 or later motherboards.
This test is done to each assembled laptop as part of final testing after assembly (TS code FINAL). The code runs on XO-4 A2 or later motherboards.


The idea is to check for proper functioning of the touchscreen microcontroller, IR PCB/lightguide assembly, and the connection between the two.
The idea is to check for proper functioning of the touchscreen microcontroller, IR PCB/lightguide assembly, and the connection between the two.
Line 68: Line 102:
The operator will power the laptop on --starting the automatic test menu. When run, the touchscreen test shall establish communications with the microcontroller. Then it should wait for the operator to run their finger/stylus along two adjacent edges of the light guide. The test result should be indicated visually and the automated test stopped on failure. If no operator input is detected in a fixed amount of time (thirty seconds), the test should be stopped indicating failure.
The operator will power the laptop on --starting the automatic test menu. When run, the touchscreen test shall establish communications with the microcontroller. Then it should wait for the operator to run their finger/stylus along two adjacent edges of the light guide. The test result should be indicated visually and the automated test stopped on failure. If no operator input is detected in a fixed amount of time (thirty seconds), the test should be stopped indicating failure.


Also, a linearity test shall ensure that a stylus drawn along a straight edge will generate data with a minimum of departure from the line. The test shall not proceed until the linearity meets criteria, prompting the operator to repeat the attempt.
* waiting on revision B IR PCB for implementation:

test /touchscreen
'''Implementation Guidance'''
* activate the adjacent edges test with:
ok 2 tsts
* activate the linearity test with:
ok select /touchscreen
ok mb-final


==Lightguide Tooling==
==Lightguide Tooling==
Line 78: Line 118:
They should simply be able to attach a bezel assembly to the motherboard, and press a button on the keyboard. No interaction with the lightguide is required during the testing. Upon completion, the screen indicates pass or fail, but also provides numbers reporting the performance of the different optical paths.
They should simply be able to attach a bezel assembly to the motherboard, and press a button on the keyboard. No interaction with the lightguide is required during the testing. Upon completion, the screen indicates pass or fail, but also provides numbers reporting the performance of the different optical paths.


"We need a GUI program to provide a straightforward visual indication of whether the IR PCBA is working or not. A simple and effective visual output would be just displaying: (1) Red screen with the word "FAIL" in the center when equal to or greater than one (1) error non-connection of transmission channel. (2) Green screen with the word "PASS" in the center when zero (0) error occurs."
diag-mode test /touchscreen \ gives pass fail

'''Implementation Guidance'''

* requires Open Firmware Q7A12 or later,
* TS tag need not be set,
* activate the test with:
ok test-lightguide


==Sampled QA==
==Sampled QA==
This test is done to assembled laptops for quality control once production has started. The code runs on XO-4 A2 or later motherboards .
This test is done to assembled laptops for quality control once production has started. The code runs on XO-4 A2 or later motherboards.


The idea is to check for proper operation of the touchscreen, including specific light guide performance.
The idea is to check for proper operation of the touchscreen, including specific light guide performance.
Line 96: Line 143:


If a problem is found which can be traced to a particular component (IR diode, IR LED, or connector), it should be clearly identified.
If a problem is found which can be traced to a particular component (IR diode, IR LED, or connector), it should be clearly identified.

==Miscellaneous==

Additional diagnostics can be used.

=== Scribble ===

[[Image:1434602804.png|thumb]]

This draws each ''down'' or ''move'' event as a 3x3 graphic dot. Press any key to exit.

select /touchscreen
scribble

=== Boxes ===

[[Image:1434604745.png|thumb]]

This draws a grid of red boxes and begins listening for touch events. Each ''down'' or ''move'' event clears a box to green. Once all boxes are green, the test exits. Boxes also exits if 30 seconds have elapsed, or if a key is pressed.

select /touchscreen
boxes

=== Watch Fixed Signal Strength ===

[[Image:1434603781.png|thumb]]

select /touchscreen
watch-fss

This draws a cross of blocks. The vertical set represents the left and right edges. The horizontal set represents the top and bottom edges.

Each block represents a signal path from an IR LED to a photodiode. The IR LEDs are driven with a fixed transmit power. The brightness of each block represents the received signal strength. A small white dot in the middle of the block means the signal strength is zero.

There should be no small white dot blocks unless a finger or other obstruction is present.

The brightness of the blocks should not change unduly with flexing.

The brightness of the blocks need not be consistent across the axes.

Press u or d to change the transmit power.

Press q or escape to quit.

=== Watch Forced LED Levels ===

select /touchscreen
watch-fll

This draws a cross of blocks. The vertical set represents the left and right edges. The horizontal set represents the top and bottom edges.

Each block represents a signal path from an IR LED to a photodiode. The IR LEDs are driven with a transmit power sufficient to achieve a useful signal. The brightness of each block represents the received signal strength, ''at the moderated transmit power''. A small white dot in the middle of the block means the end to end loss was too great.

There must be no small white dot blocks unless a finger or other obstruction is present.

The brightness of the blocks should not change unduly with flexing.

The brightness of the blocks should be consistent across the screen.

Press any key to quit.

==Reprogramming the Neonode Firmware==

Display the firmware version like this:

ok select /touchscreen
ok show-version

=== XO-4 C1 or later, with Q7B11 or later ===

The Neonode firmware will be upgraded automatically by Open Firmware following an Open Firmware upgrade, unless version 0.0.0.9 or earlier is present. To step over this limitation, use the command

ok update-nn-flash

=== XO-4 C1 or later, with Q7B05 to Q7B10 ===

The Neonode firmware will be upgraded automatically by Open Firmware following an Open Firmware upgrade, up until version 0.0.0.9.

=== XO-4 B1, with Q7B05 or later ===

The Neonode firmware may be upgraded to the version included with Open Firmware, by typing:
flash-nn rom:\nn.hex

The Neonode firmware may be upgraded by placing the new firmware on a USB key, and typing:

flash-nn u:\firmware.hex

Replace firmware.hex with the name used for the firmware on the USB key.

=== XO-4 B1, with Q7B04 and earlier ===

The Neonode firmware may be upgraded by placing the new firmware on a USB key, and typing:

" u:\firmware.hex" $flash-bsl

Replace firmware.hex with the name used for the firmware on the USB key. The space between the quote and the u is essential.

=== Firmware Library ===

The library of touchscreen firmware is at
* http://dev.laptop.org/pub/firmware/nn/

Several older versions are available for specific hardware:
* XO-4 B1 clear light guides should use 0.0.0.4, unless linearity is not a concern, in which case use the latest,
* XO-4 B1 dark light guides should use the latest,
* XO-4 C1 and later should use the latest,


[[Category:Hardware]]
[[Category:Hardware]]

Latest revision as of 05:21, 18 June 2015

  This page is monitored by the OLPC team.

This page describes the production test support provided with the touchscreen in XO-4.

Test routines are provided in Open Firmware and manufacturing-scripts for testing the various components of the touchscreen system, at various stages of manufacture. The touchscreen system consists of a microcontroller on the motherboard, an IR PCB which contains the IR transmitters and receivers, a flat flexible cable interconnecting the two, and a plastic lightguide which collimates the light to/from the LED sensors.


IR PCB SMT

This test is done to bare IR PCB boards, without a light guide. The code runs on XO-4 A2 or later motherboards.

The idea is to check for opens and shorts of the IR diodes and detectors, as well as proper mounting of the ASIC and connector on the IR PCB.

There should be no operator interaction with the IR PCB. They should simply be able to drop a board into the test fixture, press a button on the keyboard, and the screen says pass or fail with an appropriate background (red/green).

After testing is complete, the MSP430 should be placed into reset to allow for cable disconnect. The MSP430 should be rebooted for each test.

Implementation Guidance

  • requires Open Firmware Q7A12 or later,
  • TS tag need not be set,
  • activate the test with:
11 to test-station \ SMT
test /touchscreen
  • sample output (pass):
Connect IR PCB, press a key
Open and Short
    X Axis

    Y Axis

Disconnect IR PCB, press a key
ok
  • sample output (fail):
Connect IR PCB, press a key
Open and Short
    X Axis
         ( bit 47 )
         ( bit 51 )
         ( bit 53 )
         ( bit 57 )
         ( bit 59 )

    Y Axis
         ( bit 36 )
         ( bit 40 )
         ( bit 42 )

Disconnect IR PCB, press a key

/touchscreen selftest failed. Return code = 8
ok

IR PCB ASSY

This test is done to IR PCB assemblies, including a light guide and bezel. The code runs on XO-4 A2 or later motherboards in a production line situation, using a test fixture to connect to the bezel assembly.

The idea is to check for proper assembly of the lightguide and IR PCB, as well as proper lightguide and IR PCB operation.

They should simply be able to drop a bezel assembly into the test fixture, and press a button on the keyboard. They then need to pass a finger or stylus along two adjacent inside edges of the bezel to complete the test. Upon completion, the screen says pass or fail with an appropriate background (red/green). There should be an automatic abort of the test (w. fail) if the appropriate motion isn't detected within thirty seconds.

After testing is complete, the MSP430 should be placed into reset to allow for cable disconnect. The MSP430 should be rebooted for each test.

Implementation Guidance

  • requires Open Firmware Q7A12 or later,
    • includes a Forced LED Levels test,
    • tested with revision B IR PCB,
  • TS tag need not be set,
  • activate the test with:
ok test-ir-pcb-assy

MB SMT

This test is done to each bare laptop motherboards as part of SMT testing (TS code SMT). The code runs on XO-4 A2 or later motherboards.

The idea is to check for proper functioning of the touchscreen microcontroller and connector to the IR PCB.

There should be no operator interaction with the "known good" IR PCB. The operator should be able to drop a motherboard into the test fixture and power it on --starting the automatic test menu. When run the touchscreen test shall attempt to install firmware into the microcontroller, then attempt to communicate with the "known good" IR PCB. The test result should be indicated visually and the automated test stopped on failure.

Implementation Guidance

  • requires Open Firmware Q7A12 or later,
  • TS tag must be SMT,
  • touchscreen microcontroller firmware must be flashed,
    • using: " u:\zforce.hex" $flash-bsl
    • progress will be displayed (svn 3239 or later),
    • it takes about 58 seconds,
    • the microcontroller is available for testing immediately without a power cycle,
    • flashing of microcontroller is implemented by Quanta in manufacturing-scripts:cl4/smt/cl4.smt flash-nn-fw
  • check for proper functioning of the touchscreen microcontroller and connector to the IR PCB with:
test /touchscreen
  • possible failures are:
    • no response to reset, the microcontroller did not make the data ready signal active within 250 ms of the reset signal being made inactive,
    • failed to boot, the microcontroller did make the data ready signal active, but did not respond to I2C bus signalling,
    • failed to configure, the microcontroller stopped responding during the configuration process,
    • timeout, the microcontroller did not respond within the expected time to one of the several operations; status, initialise, set resolution, activate, and deactivate.

MB FINAL

This test is done to each assembled laptop as part of final testing after assembly (TS code FINAL). The code runs on XO-4 A2 or later motherboards.

The idea is to check for proper functioning of the touchscreen microcontroller, IR PCB/lightguide assembly, and the connection between the two.

The operator will power the laptop on --starting the automatic test menu. When run, the touchscreen test shall establish communications with the microcontroller. Then it should wait for the operator to run their finger/stylus along two adjacent edges of the light guide. The test result should be indicated visually and the automated test stopped on failure. If no operator input is detected in a fixed amount of time (thirty seconds), the test should be stopped indicating failure.

Also, a linearity test shall ensure that a stylus drawn along a straight edge will generate data with a minimum of departure from the line. The test shall not proceed until the linearity meets criteria, prompting the operator to repeat the attempt.

Implementation Guidance

  • activate the adjacent edges test with:
ok 2 tsts
  • activate the linearity test with:
ok select /touchscreen
ok mb-final

Lightguide Tooling

This test is done to light guides, mainly during tooling development, but also for quality control once production has started. The code runs on XO-4 A2 or later motherboards in a production line situation.

The idea is to check for proper operation of the lightguide, using a known good IR PCB.

They should simply be able to attach a bezel assembly to the motherboard, and press a button on the keyboard. No interaction with the lightguide is required during the testing. Upon completion, the screen indicates pass or fail, but also provides numbers reporting the performance of the different optical paths.

"We need a GUI program to provide a straightforward visual indication of whether the IR PCBA is working or not. A simple and effective visual output would be just displaying: (1) Red screen with the word "FAIL" in the center when equal to or greater than one (1) error non-connection of transmission channel. (2) Green screen with the word "PASS" in the center when zero (0) error occurs."

Implementation Guidance

  • requires Open Firmware Q7A12 or later,
  • TS tag need not be set,
  • activate the test with:
ok test-lightguide

Sampled QA

This test is done to assembled laptops for quality control once production has started. The code runs on XO-4 A2 or later motherboards.

The idea is to check for proper operation of the touchscreen, including specific light guide performance.

They will have to power the unit up to Open Firmware, then manually execute two or more tests:

  • The lightguide quality test, printing out the perceived performance of the lightguide
  • A linearity test, where they use a straight edge and a stylus, and the "max error" is computed

Field Repair

This test is done to units suspected of having a problem with their touchcreen:

test /touchscreen

If a problem is found which can be traced to a particular component (IR diode, IR LED, or connector), it should be clearly identified.

Miscellaneous

Additional diagnostics can be used.

Scribble

1434602804.png

This draws each down or move event as a 3x3 graphic dot. Press any key to exit.

select /touchscreen
scribble

Boxes

1434604745.png

This draws a grid of red boxes and begins listening for touch events. Each down or move event clears a box to green. Once all boxes are green, the test exits. Boxes also exits if 30 seconds have elapsed, or if a key is pressed.

select /touchscreen
boxes

Watch Fixed Signal Strength

1434603781.png
select /touchscreen
watch-fss

This draws a cross of blocks. The vertical set represents the left and right edges. The horizontal set represents the top and bottom edges.

Each block represents a signal path from an IR LED to a photodiode. The IR LEDs are driven with a fixed transmit power. The brightness of each block represents the received signal strength. A small white dot in the middle of the block means the signal strength is zero.

There should be no small white dot blocks unless a finger or other obstruction is present.

The brightness of the blocks should not change unduly with flexing.

The brightness of the blocks need not be consistent across the axes.

Press u or d to change the transmit power.

Press q or escape to quit.

Watch Forced LED Levels

select /touchscreen
watch-fll

This draws a cross of blocks. The vertical set represents the left and right edges. The horizontal set represents the top and bottom edges.

Each block represents a signal path from an IR LED to a photodiode. The IR LEDs are driven with a transmit power sufficient to achieve a useful signal. The brightness of each block represents the received signal strength, at the moderated transmit power. A small white dot in the middle of the block means the end to end loss was too great.

There must be no small white dot blocks unless a finger or other obstruction is present.

The brightness of the blocks should not change unduly with flexing.

The brightness of the blocks should be consistent across the screen.

Press any key to quit.

Reprogramming the Neonode Firmware

Display the firmware version like this:

ok select /touchscreen
ok show-version

XO-4 C1 or later, with Q7B11 or later

The Neonode firmware will be upgraded automatically by Open Firmware following an Open Firmware upgrade, unless version 0.0.0.9 or earlier is present. To step over this limitation, use the command

ok update-nn-flash

XO-4 C1 or later, with Q7B05 to Q7B10

The Neonode firmware will be upgraded automatically by Open Firmware following an Open Firmware upgrade, up until version 0.0.0.9.

XO-4 B1, with Q7B05 or later

The Neonode firmware may be upgraded to the version included with Open Firmware, by typing:

flash-nn rom:\nn.hex

The Neonode firmware may be upgraded by placing the new firmware on a USB key, and typing:

flash-nn u:\firmware.hex

Replace firmware.hex with the name used for the firmware on the USB key.

XO-4 B1, with Q7B04 and earlier

The Neonode firmware may be upgraded by placing the new firmware on a USB key, and typing:

" u:\firmware.hex" $flash-bsl

Replace firmware.hex with the name used for the firmware on the USB key. The space between the quote and the u is essential.

Firmware Library

The library of touchscreen firmware is at

Several older versions are available for specific hardware:

  • XO-4 B1 clear light guides should use 0.0.0.4, unless linearity is not a concern, in which case use the latest,
  • XO-4 B1 dark light guides should use the latest,
  • XO-4 C1 and later should use the latest,