[openfirmware] r1652 - cpu/x86/pc/olpc/via

svn at openfirmware.info svn at openfirmware.info
Sat Jan 9 00:12:36 CET 2010


Author: pgf
Date: 2010-01-09 00:12:36 +0100 (Sat, 09 Jan 2010)
New Revision: 1652

Modified:
   cpu/x86/pc/olpc/via/assy.fth
   cpu/x86/pc/olpc/via/runin.fth
   cpu/x86/pc/olpc/via/smt.fth
Log:
add support for the Pr tag.
apply (many of) the changes requested by Wei-Heng in the files he
sent.  one concern:  his "set-tag-assy" routine has a hard-coded
server address, something we were trying to avoid.


Modified: cpu/x86/pc/olpc/via/assy.fth
===================================================================
--- cpu/x86/pc/olpc/via/assy.fth	2010-01-08 07:30:03 UTC (rev 1651)
+++ cpu/x86/pc/olpc/via/assy.fth	2010-01-08 23:12:36 UTC (rev 1652)
@@ -11,7 +11,7 @@
 : swid$  ( -- adr len )  " OFW ASSY test $Revision$"  ;
 
 \ Location of the files containing KA tag data
-: ka-dir$  ( -- adr len )  " http:\\10.1.0.1\ka\"  ;
+: ka-dir$  ( -- adr len )  " http:\\10.0.0.1\ka\"  ;
 
 : find-firmware-file  ( -- name$ )
    wanted-fw$  " u:\\boot\\%s.rom" sprintf    ( name$ )
@@ -42,6 +42,7 @@
    ." Fetching KA tag file " 2dup type cr ( value$ key$ filename$ )
    $read-file  if                     ( value$ key$ )
       ." ERROR: No KA tag file for " 2swap type cr  ( key$ )
+      true  abort" KA file not found" ( key$ )
       2drop                           ( )
    else                               ( value$ key$ file-data$ )
       2swap ($add-tag)                ( value$ )
@@ -74,7 +75,7 @@
 ;
 
 d# 20 buffer: sn-buf
-: sn$  ( -- adr len )  sn-buf count  ;
+: sn$  ( -- adr len ) sn-buf count ;
 
 : try-get-sn  ( -- )
    sn-buf 1+ d# 20 accept   ( n )
@@ -91,13 +92,26 @@
    true
 ;
 
+: handle-pr-tag
+   " SN" find-tag 0= abort" Found Pr with no SN"
+   2dup
+   ." Will use existing SN tag for serial number: " type cr
+   -null
+   sn-buf place
+;
+
 : get-sn  ( -- )
-   ." *****"
-
-   begin
-      " Please Input Serial Number ......" .instructions
-      try-get-sn
-   until
+   " Pr" find-tag if   ( prval$ -- )
+      2drop            ( -- )
+      handle-pr-tag
+      exit
+   else
+      ." *****"
+      begin
+         " Please Input Serial Number ......" .instructions
+         try-get-sn
+      until
+   then
 ;
 
 d# 38 buffer: uuid-buf
@@ -177,6 +191,24 @@
    $copy1
 ;
 
+: check-err-msg  ( adr len -- )
+   begin  dup  while              ( adr len )
+      linefeed left-parse-string  ( rem$ line$ )
+      ?remove-cr                  ( rem$ line$ )
+      [char] : left-parse-string  ( rem$ value$ key$ )
+      " ERR_MSG" $=  if           ( rem$ value$ )
+         page show-fail
+         type                     ( rem$ )
+         cr cr
+         ." Perss any key to power off!"
+         key drop cr cr
+         power-off
+      then                        ( rem$ value$ )
+      2drop                       ( rem$ )
+   repeat                         ( rem$ )
+   2drop                          ( )
+;
+
 0 0 2value response$
 
 : execute-downloads  ( adr len -- )
@@ -220,7 +252,11 @@
    " BD"  ($delete-tag)
    \ leave NT so we can use one tag throughout: " NT"  ($delete-tag)
 
-   sn$          " SN"  put-tag
+   " Pr" find-tag if
+      ." Preserving existing SN tag" cr
+   else
+      sn$          " SN"  put-tag
+   then
    fwver$       " BV"  put-tag
    swid$        " T#"  put-tag
    uuid$        " U#"  put-tag
@@ -251,12 +287,20 @@
    make-assy-request          ( )
    " Request" submit-file     ( )
    " Response" get-response to response$
+   response$ check-err-msg
 ;
 
+: wait-connections  ( -- )
+   silent-probe-usb
+   wait-scanner
+   ?usb-keyboard
+   wait-lan
+;
+
 : start-assy-test  ( -- )
    ?update-firmware
 
-   wait-lan
+   wait-connections
 
    get-info
 
@@ -268,6 +312,11 @@
 
    inject-tags
 
+   clear-screen
+   ." Download PASS... Please press a key to power off." cr cr cr
+   green-screen
+   key drop  cr cr
+
    ." Powering off ..." d# 2000 ms
    power-off
 ;

Modified: cpu/x86/pc/olpc/via/runin.fth
===================================================================
--- cpu/x86/pc/olpc/via/runin.fth	2010-01-08 07:30:03 UTC (rev 1651)
+++ cpu/x86/pc/olpc/via/runin.fth	2010-01-08 23:12:36 UTC (rev 1652)
@@ -16,6 +16,36 @@
 \ the failure log (if int:\runin\fail.log is present) or modifies the
 \ manufacturing data tags to cause the next boot to enter final test.
 
+d# 128 buffer: mb-buf  : mb$ mb-buf count ;
+
+: get-mb-tags  ( --)
+   " B#" find-tag  if
+      ?-null
+   then
+   mb-buf place
+;   
+
+: set-tag-assy ( --)
+   get-mb-tags
+   
+   clear-mfg-buf
+   
+   " "      " ww"  put-ascii-tag
+
+   " "(D3)" " SG"  ($add-tag)
+   mb$      " B#"  put-ascii-tag
+   " EN"    " SS"  put-ascii-tag
+
+   " ASSY"  " TS"  put-ascii-tag
+   " cifs:\\Administrator:qmsswdl at 10.0.0.2\OLPC_TM"      " MS"  put-ascii-tag
+   " u:\boot\olpc.fth net"     " BD"  put-ascii-tag
+
+   flash-write-enable
+   (put-mfg-data)
+   no-kbc-reboot
+   kbc-on
+;
+
 d# 20 buffer: sn-buf
 : sn$  ( -- adr len )  sn-buf count  ;
 
@@ -48,20 +78,44 @@
    -null
 ;
 
-: get-info  ( -- )
-   scan-sn
-;
+: get-sn-value  ( --)
+   " SN" find-tag  if
+      ?-null
+   else
+      abort" Missing SN tag !!!"
+   then
+   sn-buf place
+;   
 
 0 0 2value response$
 
 : final-filename$  ( -- adr len )  sn$ " %s.txt" sprintf  ;
 
+: check-err-msg  ( adr len -- )
+   begin  dup  while              ( adr len )
+      linefeed left-parse-string  ( rem$ line$ )
+      ?remove-cr                  ( rem$ line$ )
+      [char] : left-parse-string  ( rem$ value$ key$ )
+      " ERR_MSG" $=  if           ( rem$ value$ )
+         page show-fail
+         type                     ( rem$ )
+         cr cr
+         ." Perss any key to power off!"
+         key drop cr cr
+         power-off
+      then                        ( rem$ value$ )
+      2drop                       ( rem$ )
+   repeat                         ( rem$ )
+   2drop                          ( )
+;
+
 \ Send the board number as the request and return the response data
 : final-tag-exchange  ( -- )
    final-filename$ open-temp-file
    sn$              " SN:"  put-key+value
    " Request" submit-file
    " Response" get-response  to response$ 
+   response$ check-err-msg
 ;
 
 : show-result-screen  ( -- )
@@ -71,6 +125,7 @@
       green-screen
    else
       ." FAIL" cr cr
+      set-tag-assy
       red-screen
    then
 ;
@@ -79,6 +134,7 @@
    2over  8 min  ka-dir$ " %s%s" sprintf  ( value$ key$ filename$ )
    $read-file  if                     ( value$ key$ )
       ." ERROR: No KA tag file for " 2swap type cr  ( key$ )
+      true  abort" KA file not found" ( key$ )
       2drop                           ( )
    else                               ( value$ key$ file-data$ )
       2swap ($add-tag)                ( value$ )
@@ -171,6 +227,7 @@
    " BD" ($delete-tag)
    " NT" ($delete-tag)
    " MD" ($delete-tag)
+   " Pr" ($delete-tag)
    make-md-tag
 
    response$ parse-tags
@@ -263,8 +320,6 @@
 
 : wait-connections  ( -- )
    silent-probe-usb
-   wait-scanner
-   ?usb-keyboard
    wait-lan
 ;             
 
@@ -294,9 +349,14 @@
 
 
 : finish-final-test  ( -- )
+   
+   " del int:\runin\olpc.fth" ['] eval catch
+   " copy int:\runin\repass.fth int:\runin\olpc.fth" ['] eval catch
+   " del int:\runin\repass.fth" ['] eval catch
+  
    wait-connections
 
-   get-info
+   get-sn-value
 
    verify-rtc-date
 

Modified: cpu/x86/pc/olpc/via/smt.fth
===================================================================
--- cpu/x86/pc/olpc/via/smt.fth	2010-01-08 07:30:03 UTC (rev 1651)
+++ cpu/x86/pc/olpc/via/smt.fth	2010-01-08 23:12:36 UTC (rev 1652)
@@ -34,22 +34,56 @@
 ' mfg-ntp-server to ntp-servers
 
 d# 20 buffer: bn-buf  \ Buffer for scanned-in board number string
-: board#$  ( -- adr len )  bn-buf count  ;
+: board#$  ( -- adr len ) bn-buf count ;
+d# 20 buffer: sn-buf  \ Buffer for preserving serial number string
+: sn$  ( -- adr len ) sn-buf count ;
 
+: save-manuf-data
+   ." Connecting to save mfg data .. "  cifs-connect ." Connected .. "
+   sn$ open-temp-file
+   mfg-data-range cifs-write
+   " MfgDataSave" submit-file
+   cifs-disconnect
+;
+
+: handle-pr-tag
+   " B#" find-tag 0= abort" Found Pr with no B#"
+   2dup
+   ." Will use existing B# tag for board number: " type cr
+   -null
+   bn-buf place
+
+   " SN" find-tag 0= abort" Found Pr with no SN"
+   2dup
+   ." Will use existing SN tag for serial number: " type cr
+   -null
+   sn-buf place
+
+   save-manuf-data
+;
+
 \ Get a board number from the user, retrying until valid
 \ Usually the number is entered with a barcode scanner
+\ If the Pr tag is present, make steps to preserve board and
+\ serial numbers, and avoid prompting for them.
 : get-board#  ( -- )
-   ." *****"
-   begin
-      " Please Input Board Number ......" .instructions
-      bn-buf d# 20 accept-to-buf   ( n )
-      d# 14 <>  if
-         " Wrong length (must be 14 characters), try again" .problem
-      else
-         bn-buf 1+ c@ [char] Q =  if  exit  then
-         " Must begin with Q, try again" .problem
-      then
-   again
+   " Pr" find-tag if
+      2drop
+      handle-pr-tag
+      exit
+   else
+      ." *****"
+      begin
+         " Please Input Board Number ......" .instructions
+         bn-buf d# 20 accept-to-buf   ( n )
+         d# 14 <>  if
+            " Wrong length (must be 14 characters), try again" .problem
+         else
+            bn-buf 1+ c@ [char] Q =  if  exit  then
+            " Must begin with Q, try again" .problem
+         then
+      again
+   then
 ;
 
 d# 20 buffer: station#-buf
@@ -146,6 +180,25 @@
    put-ascii-tag
 ;
 
+: check-err-msg  ( adr len -- )
+   begin  dup  while              ( adr len )
+      linefeed left-parse-string  ( rem$ line$ )
+      ?remove-cr                  ( rem$ line$ )
+      [char] : left-parse-string  ( rem$ value$ key$ )
+      " ERR_MSG" $=  if           ( rem$ value$ )
+         page show-fail
+         type                     ( rem$ )
+         cr cr
+         ." Press any key to power off!"
+         key drop cr cr
+         power-off
+      then                        ( rem$ value$ )
+      2drop                       ( rem$ )
+   repeat                         ( rem$ )
+   2drop                          ( )
+;
+
+
 0 0 2value response$
 
 false value any-tags?
@@ -182,6 +235,10 @@
 
    " EN"    " SS"  put-ascii-tag         ( )
 
+   sn$ dup 0<> if
+      " SN" put-ascii-tag
+      " x" " Pr" put-ascii-tag then
+
 \   board#$  " B#"  put-ascii-tag         ( )
 \   " ASSY"  " TS"  put-ascii-tag         ( )
 \   " "(D3)" " SG"  ($add-tag)            ( )
@@ -239,6 +296,8 @@
    cifs-disconnect
    ." Done" cr
 
+   response$ check-err-msg
+
    autorun-mfg-tests
 
    ." Sending test result "




More information about the openfirmware mailing list