Changeset 2686


Ignore:
Timestamp:
Nov 15, 2011, 1:14:02 AM (4 years ago)
Author:
wmb
Message:

OLPC trac 11423 - Manufacturing tests - merged common code for manufacturing tests into one file and split the differences out into platform-specific "testitems.fth" files. Also implemented an autorun facility for use in secure mode, per OLPC trac 11423.

Location:
cpu
Files:
3 added
2 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • cpu/arm/olpc/1.75/fw.bth

    r2683 r2686  
    140140\ so exiting from emacs doesn't invoke the diag menu.
    141141' quit to user-interface
    142 fload ${BP}/cpu/arm/olpc/1.75/mfgtest.fth
     142fload ${BP}/cpu/x86/pc/olpc/via/mfgtest.fth
     143fload ${BP}/cpu/arm/olpc/1.75/testitems.fth
    143144
    144145[ifdef] notyet
     
    482483   rocker-left game-key?  if
    483484      protect-fw
    484       text-on  " test-all" ['] eval guarded
     485      text-on  ['] gamekey-auto-menu guarded
    485486      ." Tests complete - powering off" cr  d# 5000 ms  power-off
    486487   then
  • cpu/x86/pc/alex/fw.bth

    r2653 r2686  
    214214patch merge-rect-565 merge-rect merge-cursor  \ Hack since we do all our user-level graphics in 565
    215215patch merge-rect-565 merge-rect merge-cursor  \ Hack since we do all our user-level graphics in 565
    216 fload ${BP}/cpu/x86/pc/alex/mfgtest.fth
     216fload ${BP}/cpu/x86/pc/olpc/via/mfgtest.fth
    217217fload ${BP}/dev/olpc/confirm.fth
    218218: bright!  ( level -- )  drop  ;
  • cpu/x86/pc/olpc/via/fw.bth

    r2683 r2686  
    327327' quit to user-interface
    328328fload ${BP}/cpu/x86/pc/olpc/via/mfgtest.fth
     329fload ${BP}/cpu/x86/pc/olpc/via/testitems.fth
    329330fload ${BP}/cpu/x86/pc/olpc/via/bootmenu.fth
    330331
  • cpu/x86/pc/olpc/via/mfgtest.fth

    r2475 r2686  
    55h# 07e0 constant mfg-color-green
    66
    7 : flush-keyboard  ( -- )  begin  key?  while  key drop  repeat  ;
     7: blank-screen  ( -- )
     8   h# ffff              ( color )
     9   0 0                  ( color x y )
     10   screen-wh            ( color x y w y )
     11   fill-rectangle-noff  ( )
     12;
     13
     14: clear-n-restore-scroller  ( -- )
     15   blank-screen
     16   restore-scroller
     17;
    818
    919: sq-border!  ( bg -- )  current-sq sq >border !  ;
     
    2535      key?  if  key drop  refresh exit  then
    2636      mouse-ih  if
    27          10 get-event  if
     37         mouse-event?  if
    2838            \ Ignore movement, act only on a button down event
    2939            nip nip  if  wait-buttons-up  refresh exit  then
     
    3343;
    3444
    35 : mfg-test-dev  ( $ -- )
    36    restore-scroller
    37    ??cr  ." Testing " 2dup type cr                     ( $ )
    38    2dup locate-device  if                              ( $ )
    39       2drop ." Can't find device node" cr  exit        ( -- )
    40    else
    41       drop                                             ( $ )
    42    then                                                ( $ phandle )
    43    " selftest" execute-device-method  if               ( return-code )
     45: mfg-test-result  ( error? -- )
     46if               ( return-code )
    4447      ?dup  if                                         ( return-code )
    4548         ??cr ." Selftest failed. Return code = " .d cr
     
    5154      else                                                   ( )
    5255         green-letters
    53          ." Okay" cr
     56         ??cr ." Okay" cr
    5457         black-letters
    5558         mfg-color-green sq-border!
    5659         true to pass?
    57          d# 2000 hold-message
     60         d# 2000 hold-message drop
    5861      then
    5962   else
    60       ." Selftest failed due to abort"  cr
     63      ??cr ." Selftest failed due to abort"  cr
    6164      mfg-color-red sq-border!
    6265      false to pass?
     
    6871   flush-keyboard
    6972;
    70 
    71 : draw-error-border  ( -- )
    72    mfg-color-red d# 20 d# 20 d# 1160 d# 820 d# 20 box
    73 ;
    74 
    75 icon: play.icon     rom:play.565
    76 icon: quit.icon     rom:quit.565
    77 icon: cpu.icon      rom:cpu.565
    78 icon: spi.icon      rom:spi.565
    79 icon: ram.icon      rom:ram.565
    80 icon: sdcard.icon   rom:sdcard.565
    81 icon: usb.icon      rom:usb.565
    82 icon: battery.icon  rom:battery.565
    83 icon: camera.icon   rom:camera.565
    84 icon: wifi.icon     rom:wifi.565
    85 icon: audio.icon    rom:audio.565
    86 icon: touchpad.icon rom:touchpad.565
    87 icon: display.icon  rom:display.565
    88 icon: keyboard.icon rom:keyboard.565
    89 icon: timer.icon    rom:timer.565
    90 icon: clock.icon    rom:clock.565
    91 icon: ebook.icon    rom:ebook.565
    92 icon: leds.icon     rom:leds.565
     73: mfg-test-dev  ( $ -- )
     74   clear-n-restore-scroller                       ( $ )
     75   ??cr  ." Testing " 2dup type cr                ( $ )
     76   2dup locate-device  if                         ( $ )
     77      ." Can't find device node " type cr  exit   ( -- )
     78   else                                           ( $ phandle )
     79      drop                                        ( $ )
     80   then                                           ( $ )
     81   " selftest" execute-device-method              ( error? )
     82   mfg-test-result
     83;
    9384
    9485: all-tests-passed  ( -- )
     
    10293;
    10394
    104 d# 15 value #mfgtests
    105 d# 5 value #mfgcols
     950 value #mfgtests
     960 value #mfgcols
     970 value #mfgrows
     98
     99: #mfgtests++  ( -- )  #mfgtests 1+ to #mfgtests  ;
     100
     1010 value cur-col
     1020 value cur-row
     103: cur-col++  ( -- )  cur-col 1+ to cur-col  ;
     104: cur-row++  ( -- )  cur-row 1+ to cur-row  ;
     105: set-col-row ( row col -- )  to cur-col  to cur-row  ;
     106: add-icon   ( -- )
     107   cur-col #mfgcols =  if
     108      cur-row++  cur-row #mfgcols >=  if  abort" Too many icons"  then
     109      0 to cur-col
     110   then
     111   cur-row  cur-col  install-icon
     112   cur-col++
     113;
    106114
    107115: mfg-test-autorunner  ( -- )  \ Unattended autorun of all tests
     
    114122   loop
    115123;
     124
     125icon: play.icon     rom:play.565
     126icon: quit.icon     rom:quit.565
    116127
    117128: play-item     ( -- )   \ Interactive autorun of all tests
     
    129140
    130141: quit-item     ( -- )  menu-done  ;
    131 : cpu-item      ( -- )  " /cpu"       mfg-test-dev  ;
    132 : battery-item  ( -- )  " /battery"   mfg-test-dev  ;
    133 : spiflash-item ( -- )  " /flash"     mfg-test-dev  ;
    134 : memory-item   ( -- )  " /memory"    mfg-test-dev  ;
    135 : usb-item      ( -- )  " /usb"       mfg-test-dev  ;
    136 : int-sd-item   ( -- )  " int:0"      mfg-test-dev  ;
    137 : ext-sd-item   ( -- )  " ext:0"      mfg-test-dev  ;
    138 : rtc-item      ( -- )  " /rtc"       mfg-test-dev  ;
    139 : display-item  ( -- )  " /display"   mfg-test-dev  ;
    140 : audio-item    ( -- )  " /audio"     mfg-test-dev  ;
    141 : camera-item   ( -- )  " /camera"    mfg-test-dev  ;
    142 : wlan-item     ( -- )  " /wlan"      mfg-test-dev  ;
    143 : timer-item    ( -- )  " /timer"     mfg-test-dev  ;
    144 : touchpad-item ( -- )  " /8042/mouse"     mfg-test-dev  ;
    145 : keyboard-item ( -- )  " /8042/keyboard"  mfg-test-dev  ;
    146 : switch-item   ( -- )  " /switches"  mfg-test-dev  ;
    147 : leds-item     ( -- )  " /leds"      mfg-test-dev  ;
    148 
    149 : olpc-menu-items  ( -- )
    150    clear-menu
    151 
    152 \   " CPU"
    153 \   ['] cpu-item      cpu.icon      1 0 install-icon
    154 
    155    " SPI Flash: Contains EC code, firmware, manufacturing data."
    156    ['] spiflash-item    spi.icon      1 0 install-icon
    157 
    158    " RAM chips"
    159    ['] memory-item   ram.icon      1 1 install-icon
    160 
    161    " Internal mass storage"
    162    ['] int-sd-item   sdcard.icon   1 2 install-icon
    163 
    164    " Plug-in SD card"
    165    ['] ext-sd-item   sdcard.icon   1 3 install-icon
    166 
    167    " Wireless LAN"
    168    ['] wlan-item     wifi.icon     1 4 install-icon
    169 
    170    " Display"
    171    ['] display-item  display.icon  2 0 install-icon
    172 
    173    " Camera"
    174    ['] camera-item   camera.icon   2 1 install-icon
    175 
    176    " Audio: Speaker and microphone"
    177    ['] audio-item    audio.icon    2 2 install-icon
    178 
    179    " Battery"
    180    ['] battery-item  battery.icon  2 3 install-icon
    181 
    182    " RTC (Real-Time Clock)"
    183    ['] rtc-item      clock.icon    2 4 install-icon
    184 
    185    " USB ports"
    186    ['] usb-item      usb.icon      3 0 install-icon
    187 
    188    \ These are last because they require user participation.
    189    \ The earlier tests are all included in automatic batch-mode.
    190 
    191    " Keyboard"
    192    ['] keyboard-item keyboard.icon 3 1 install-icon
    193 
    194    " Touchpad"
    195    ['] touchpad-item touchpad.icon 3 2 install-icon
    196 
    197    " LEDs"
    198    ['] leds-item     leds.icon     3 3 install-icon
    199 
    200    " Switches"
    201    ['] switch-item   ebook.icon    3 4 install-icon
    202 ;
    203142
    204143: init-menu  ( -- )
    205    d# 4 to rows
     144   ?open-screen  ?open-mouse
     145   #mfgrows to rows
    206146   #mfgcols to cols
    207147   d# 180 to sq-size
     
    211151;
    212152
     153defer test-menu-items
     154
    213155: full-menu  ( -- )
    214156   init-menu
    215    olpc-menu-items
     157   clear-menu
     158   test-menu-items
    216159
    217160   " Run all non-interactive tests. (Press a key between tests to stop.)"
     
    230173   ['] mfg-test-autorunner to run-menu   \ Run menu automatically
    231174   true to diag-switch?
    232    ['] olpc-menu-items  ['] nest-menu catch  drop
     175   ['] test-menu-items  ['] nest-menu catch  drop
    233176   r> to run-menu
    234177   false to diag-switch?
     
    236179;
    237180
     181: autorun-from-gamekey  ( -- )
     182   default-selection set-current-sq refresh
     183   (cr kill-line
     184   0  d# 30  do
     185      i d# 10 mod 0=  if  (cr i d# 10 / .d  then
     186      mouse-event?  dup  if  nip nip nip  then  ( moused? )
     187      key?  or  if                     ( )
     188         drop                          ( )
     189         menu-interact                 ( )
     190         unloop exit                   ( -- )
     191      then                             ( )
     192      d# 100 ms                        ( )
     193   -1 +loop
     194   play-item
     195;
     196: gamekey-auto-menu  ( -- )
     197   ['] run-menu behavior >r
     198   ['] autorun-from-gamekey to run-menu   \ Run menu automatically after a timeout
     199   (menu)
     200   r> to run-menu
     201;
    238202
    239203\ LICENSE_BEGIN
Note: See TracChangeset for help on using the changeset viewer.