[openfirmware] r1569 - cpu/x86/pc/olpc/via
svn at openfirmware.info
svn at openfirmware.info
Fri Dec 11 06:22:41 CET 2009
Author: wmb
Date: 2009-12-11 06:22:40 +0100 (Fri, 11 Dec 2009)
New Revision: 1569
Modified:
cpu/x86/pc/olpc/via/after_runin.fth
Log:
OLPC manufacturing tests - Added final test sequencing to RUNIN phase script.
Modified: cpu/x86/pc/olpc/via/after_runin.fth
===================================================================
--- cpu/x86/pc/olpc/via/after_runin.fth 2009-12-11 05:15:35 UTC (rev 1568)
+++ cpu/x86/pc/olpc/via/after_runin.fth 2009-12-11 05:22:40 UTC (rev 1569)
@@ -1,5 +1,7 @@
\ Post-runin boot script $Revision$
+visible
+
\ The Linux-based runin selftests put this file at int:\runin\olpc.fth
\ after they have finished. On the next reboot, OFW thus boots this
\ script instead of int:\boot\olpc.fth . This script either displays
@@ -36,28 +38,209 @@
;
[then]
-h# 128 buffer: ms-value
-h# 128 buffer: bd-value
+d# 20 buffer: sn-buf
+: sn$ ( -- adr len ) sn-buf count ;
-: set-tags-for-fqa ( -- )
- " NM" find-tag if ms-value place then
- " NB" find-tag if bd-value place then
+: try-get-sn ( -- )
+ sn-buf 1+ d# 20 accept ( n )
+ d# 12 <> if
+ " Wrong length, try again" .problem
+ exit
+ then
+ sn-buf 1+ " TSHC" comp if
+ " Must begin with TSHC, try again" .problem
+ exit
+ then
+ sn-buf 2+ sn-buf 1+ d# 11 move \ Elide the T
+ d# 11 sn-buf c!
+;
+: get-sn ( -- )
+ ." *****"
+
+ begin
+ " Please Input Serial Number ......" .instructions
+ try-get-sn
+ sn-acquired? until
+;
+
+: board#$ ( -- adr len )
+ " B#" find-tag 0= abort" Missing B# tag !!!"
+ -null
+;
+
+: get-info ( -- )
+ get-sn
+;
+
+0 0 2value response$
+
+\ Send the board number as the request and return the response data
+: final-tag-exchange ( -- )
+ board#$ " %s.txt" open-temp-file
+ sn$ " SN:" put-key+value
+ " Request" submit-file
+ " Response" get-response to response$
+;
+
+0 value test-passed?
+: show-result-screen ( -- )
+ restore-scroller
+ clear-screen
+ test-passed? if
+ ." Selftest passed." cr cr cr
+ green-screen
+ else
+ ." Selftest failed." cr cr cr
+ red-screen
+ then
+ d# 2000 ms
+;
+
+: parse-tags ( adr len -- )
+ begin dup while ( adr len )
+ linefeed left-parse-string ( rem$ line$ )
+ ?remove-cr ( rem$ line$ )
+ [char] : left-parse-string ( rem$ value$ key$ )
+ dup 2 = if ( rem$ value$ key$ )
+ put-tag ( rem$ )
+ else ( rem$ value$ key$ )
+ 4drop ( rem$ )
+ then ( rem$ )
+ repeat ( adr len )
+ 2drop ( )
+;
+
+: inject-tags ( -- )
get-mfg-data
" TS" ($delete-tag)
" MS" ($delete-tag)
" BD" ($delete-tag)
- " NM" ($delete-tag)
- " NB" ($delete-tag)
- ms-value count " MS" ($add-tag)
- bd-value count " BD" ($add-tag)
- " FINAL" " TS" ($add-tag)
+ " SHIP" " TS" ($add-tag)
+ response$ parse-tags
+
put-mfg-data
;
+: mfg-ntp-server ( -- name$ )
+ " NT" find-tag if ?-null else " 10.60.0.2" then
+;
+' mfg-ntp-server to ntp-servers
+
+d# 4 constant rtc-threshold
+: verify-rtc-date ( -- )
+ ." Getting time from NTP server "
+ begin ntp-timestamp while ." Retry " repeat ( d.timestamp )
+ cr
+ ntp>time&date unix-seconds> ( ntp-seconds )
+ today unix-seconds> ( ntp-seconds rtc-seconds )
+ - ( difference )
+ dup rtc-threshold > if ( difference )
+ page show-fail
+ ." Clock lost " .d ." seconds since SMT" cr
+ begin halt again
+ else
+ abs rtc-threshold > if
+ page show-fail
+ ." Clock gained " .d ." seconds since SMT" cr
+ begin halt again
+ then
+ then
+;
+
+: finish-final-test ( -- )
+ show-result-screen
+
+ test-passed? 0= if
+ ." Type a key to power off "
+ key drop cr power-off
+ then
+
+ wait-lan
+ wait-scanner
+
+ get-info
+
+ verify-rtc-date
+
+ cifs-connect
+ ." Connecting to server " final-tag-exchange ." Done" cr
+ cifs-disconnect
+
+ inject-tags
+
+ ." Powering off ..." d# 2000 ms
+ power-off
+;
+
+
+d# 15 to #mfgtests
+
+: final-tests ( -- )
+ 5 #mfgtests + 5 do
+ i set-current-sq
+ refresh
+ d# 1000 ms
+ doit
+ pass? 0= if false to test-passed? finish-final-test unloop exit then
+ loop
+ true to test-passed? finish-final-test
+;
+
+\ Make the "wait for SD insertion" step highly visible
+dev ext
+warning @ warning off
+: selftest ( -- ) page show-pass selftest ;
+warning !
+dend
+
+\ This modifies the menu to be non-interactive
+: doit-once ( -- ) do-key final-tests ;
+patch doit-once do-key menu-interact
+
+: silent-probe-usb ( -- )
+ " /" ['] (probe-usb2) scan-subtree
+ " /" ['] (probe-usb1) scan-subtree
+ report-disk report-net report-keyboard
+;
+
+: scanner? ( -- flag )
+ " usb-keyboard" expand-alias if 2drop true else false then
+;
+: wait-scanner ( -- )
+ scanner? 0= if
+ " Connect USB barcode scanner" .instructions
+ begin d# 1000 ms silent-probe-usb scanner? until
+ then
+ ;
+: wired-lan? ( -- flag )
+ " /usb/ethernet" locate-device if false else drop true then
+;
+: wait-lan ( -- )
+ wired-lan? 0= if
+ " Connect USB Ethernet Adapter" .instructions
+ begin d# 1000 ms silent-probe-usb wired-lan? until
+ then
+;
+: usb-key? ( -- flag )
+ " /usb/disk" locate-device if false else drop true then
+;
+: wait-usb-key ( -- )
+ usb-key? 0= if
+ " Connect USB memory stick" .instructions
+ begin d# 1000 ms silent-probe-usb usb-key? until
+ then
+;
+: wait-connections ( -- )
+ silent-probe-usb
+ wait-scanner
+ wait-lan
+\ wait-usb-key
+;
+
: fail-log-file$ ( -- name$ ) " int:\runin\fail.log" ;
: after-runin ( -- )
@@ -68,12 +251,14 @@
key drop cr cr
list
else
- set-tags-for-fqa
- " int:\runin\olpc.fth" $delete-all
+\ set-tags-for-fqa
+\ " int:\runin\olpc.fth" $delete-all
- page
- show-pass
- ." System is ready for final test" cr
+ 5 to test-station
+ true to diag-switch?
+ " patch final-tests play-item mfgtest-menu" evaluate
+ menu
+ \ Shouldn't get here because the menu never exits
then
." Type a key to power off"
@@ -82,3 +267,77 @@
;
after-runin
+
+SN:SHC946009D3
+B#:QTFJCA94400297
+P#:1CL11ZU0KDU
+M#:CL1
+LA:USA
+CC:2222XXXXXX
+F#:F6
+L#:J
+S#:CL1XL00802000
+T#:TSIMG_V3.0.6
+WM:00-17-C4-B9-39-ED
+MN:XO-1
+BV:Q2E34
+U#:A4112195-98FE-419A-A77B-9F33C08FF913
+SD:241109
+IM_IP:10.1.0.2
+IM_ROOT:CL1XL00802000
+IM_NAME:CL1XL00802000
+WP:0
+Countries:Alabama
+LO:en_US.UTF-8
+KA:USInternational_Keyboard
+KM:olpc
+KL:us
+KV:olpc
+ak:0
+sk:20
+SG:79
+DT:20091124152811
+
+SET WO=304027439
+
+Use these info to check the tags inside the SPI flash.
+
+Write the following tags from response file:
+
+WP:
+SG:
+
+Get date time from NTP server 10.1.0.1 and write MD tag
+ MD: 20081014T200700Z
+
+Set TS tag to SHIP
+
+Send the following information to shop flow
+
+SN:
+M#:
+U#:
+P#:
+B#:
+LA:
+CC:
+F#:
+L#:
+S#:
+T#:
+BV:
+TS:
+SS:
+FQ:
+SD:
+WM:
+MN:
+KL:
+KV:
+KM:
+LO:
+WP:
+RESULT:PASS
+
+
+
More information about the openfirmware
mailing list