Changeset 3364


Ignore:
Timestamp:
Oct 12, 2012, 6:28:22 AM (3 years ago)
Author:
quozl
Message:

OLPC - rewrite SPI and EC flash animation scale calculation following review

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • cpu/arm/olpc/build-fw.fth

    r3354 r3364  
    854854         d# 1000 ms
    855855      else
    856          show-reflash
    857          ['] show-reflash-dot to edi-progress
     856         jots  ['] jot to edi-progress
    858857         update-ec-flash
    859858      then
  • cpu/arm/olpc/edi.fth

    r3359 r3364  
    5151
    5252d# 128 constant /flash-page
    53 defer edi-progress  ' drop to edi-progress  ( n -- )
     53defer edi-progress  ' 2drop to edi-progress  ( offset size -- )
    5454
    5555: edi-cmd,adr  ( offset cmd -- )   \ Send command plus 3 address bytes
     
    196196;
    197197
    198 : .edi-progress  ( n -- )
    199    /ec-flash h# 8000 >  if  1  else  0  then  rshift    ( dot# )
    200    edi-progress                                         ( )
    201 ;
    202 
    203198: edi-program-flash  ( adr len offset -- )
    204199   cr                                          ( adr len offset )
     
    209204         over i +  over i +  edi-program-page  ( adr offset )
    210205      then                                     ( adr offset )
    211       i .edi-progress                          ( adr offset )
     206      i /ec-flash  edi-progress                ( adr offset )
    212207   /flash-page +loop                           ( adr offset )
    213208   2drop                                       ( )
  • cpu/x86/pc/olpc/gui.fth

    r3194 r3364  
    391391;
    392392
    393 d# 834 value bar-y
     393d# 32 value #dots
     394d# 820 value bar-y
    394395d# 150 value bar-x
     396d# 1200 d# 26 - value bar-x-last
    3953970 value dot-adr
     3980 value dot-spacing
     3990 value last-dot#
    396400
    397401: read-dot  ( -- )  \ rom: is unavailable during reflash
     
    401405;
    402406
    403 : show-reflash  ( -- )  \ bottom left corner, chip and progress dots
     407: jots  ( -- )  \ bottom left corner, chip and progress dots
    404408   d# 25 d# 772 set-icon-xy " spi" show-icon
    405    d# 992 bar-x + bar-y set-icon-xy " yellowdot" show-icon
     409   bar-x-last bar-y set-icon-xy " yellowdot" show-icon
    406410   read-dot
    407 ;
    408 
    409 : show-reflash-dot  ( n -- )  \ n to vary h# 0 to h# 8000
    410    dup h# 400 mod 0=  if                   ( n )
    411       dot-adr 0=  if  drop exit  then      ( n )
    412       dot-adr swap h# 20 /  bar-x + bar-y  ( adr x y )
    413       image-width image-height             ( adr x y w h )
    414       " draw-transparent-rectangle" $call-screen
     411   -1 to last-dot#
     412   bar-x-last bar-x - #dots / to dot-spacing
     413;
     414
     415: jot  ( offset size -- )
     416   dot-adr 0=  if  2drop exit  then                     ( offset size )
     417   #dots swap */                                        ( dot# )
     418   dup last-dot# <>  if                                 ( dot# )
     419      dup to last-dot#                                  ( dot# )
     420      dot-adr swap                                      ( adr dot# )
     421      dot-spacing *  bar-x + bar-y                      ( adr x y )
     422      image-width image-height                          ( adr x y w h )
     423      " draw-transparent-rectangle" $call-screen        ( )
    415424   else
    416425      drop
     
    419428
    4204290 [if]
    421 : test-reflash-dot
    422    page show-reflash  t( h# 8000 0 do  i show-reflash-dot  h# 80 +loop )t
     430: test-jots-flash  \ XO-4 B1 13ms
     431   page jots t( /flash 0 do  i /flash jot /flash-page +loop )t
     432;
     433: test-jots-ec  \ XO-4 B1 3ms
     434   page jots t( /ec-flash 0 do  i /ec-flash jot /flash-page +loop )t
    423435;
    424436[then]
  • cpu/x86/pc/olpc/security.fth

    r3349 r3364  
    10071007   ec-indexed-io-off?  if
    10081008      visible
    1009       show-reflash
     1009      jots
    10101010      ." Restarting to enable SPI FLASH writing."  cr
    10111011      d# 3000 ms
     
    10171017   alternate?  if  [char] A h# 82 cmos!  then
    10181018
    1019    show-reflash
    1020    ['] show-reflash-dot to spi-progress
     1019   jots  ['] jot to spi-progress
    10211020   reflash      \ Should power-off and reboot
    10221021   show-x
  • dev/olpc/spiflash/spiui.fth

    r3359 r3364  
    99h# 4000 constant /chunk   \ Convenient sized piece for progress reports
    1010
    11 defer spi-progress  ' drop to spi-progress  ( n -- )
    12 
    13 : .progress  ( offset -- )
    14    /flash h# 10.0000 >  if  6  else  5  then  rshift    ( dot# )
    15    dup spi-progress  h# 400 + spi-progress              ( )
    16 ;
     11defer spi-progress  ' 2drop to spi-progress  ( offset size -- )
    1712
    1813: write-flash-range  ( adr end-offset start-offset -- )
     
    3227         dup  /flash-block  i  flash-write  ( adr )
    3328      then
    34       i .progress                           ( adr )
     29      i /flash  spi-progress                ( adr )
    3530      /flash-block +                        ( adr' )
    3631   /flash-block +loop                       ( adr )
     
    197192
    198193   \ Don't write the block containing the manufacturing data
    199    mfg-data-offset .progress
     194   mfg-data-offset /flash  spi-progress
    200195
    201196   flash-buf mfg-data-end-offset +   /flash  mfg-data-end-offset  write-flash-range  \ Write last part
     
    222217         verify-firmware
    223218      then
    224       /flash .progress
     219      /flash dup  spi-progress
    225220      flash-write-disable
    226221   else
Note: See TracChangeset for help on using the changeset viewer.