Shop OBEX P1 Docs P2 Docs Learn Events
Stack monitor — Parallax Forums

Stack monitor

Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
edited 2006-03-20 14:21 in Propeller 1
I've had some difficulty determining how large to make the stacks that cognew requires. Here's a Spin object that monitors any selected stack and displays its maximum depth on the development board's LEDs. Just be sure to start with a large stack at first to do the monitoring. Then you can determine how big it really needs to be, adding a margin for safety, of course!

[i][b]'' Stack Monitor: Displays maximum stack depth on the eval board's LEDs.[/b][/i]
[i][b]''[/b][/i]
[i][b]'' To start, call this BEFORE launching the cog that uses the stack being monitored:[/b][/i]
[i][b]''[/b][/i]
[i][b]''   stack_monitor.start(@stack, stack_size_in_longs)[/b][/i]
[i][b]''[/b][/i]
[i][b]'' This will fill the stack buffer with a filler pattern. Then it will launch a cog that monitors[/b][/i]
[i][b]'' how many non-filler longs exist in the buffer at any time and display that value in binary with the LEDs.[/b][/i]
[i][b]''[/b][/i]
[i][b]'' Copyright 2006 Phil Pilgrim[/b][/i]
[i][b]''[/b][/i]
[i][b]'' Anyone is free to use, copy, modify, and distribute this program. There is NO WARRANTY, period.[/b][/i]
[i][b]'' Please retain this boilerplate in any copies distributed.[/b][/i]

[b]CON[/b]

  filler = $5aa5a55a

[b]VAR[/b]

  [b]word[/b]  my_stack[noparse][[/noparse]32]

[b]PUB[/b] start(addr, size)

  [b]longfill[/b](addr, filler, size)
  [b]return[/b] [b]cognew[/b](monitor(addr, size), @my_stack) => 0  

[b]PUB[/b] monitor(addr, size) | used, i

  [b]dira[/b] := $FF0000
  [b]outa[/b] := 0
  [b]repeat[/b]
    used := 0
    [b]repeat[/b] i [b]from[/b] addr to addr + size * 4 step 4
      used -= [b]long[/b][noparse][[/noparse]i] <> filler
    [b]outa[/b] := used << 16  





-Phil

Post Edited (Phil Pilgrim (PhiPi)) : 3/20/2006 4:16:43 AM GMT

Comments

  • Paul BakerPaul Baker Posts: 6,351
    edited 2006-03-20 14:21
    Very nice solution to the question you asked about stack size, congrats Phil. Now that I passed my quarter's·workflow with 103.7% (my job is performance based) I can now return to my regular scheduled programming [noparse]:)[/noparse].

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    ·1+1=10

    Post Edited (Paul Baker) : 3/20/2006 2:25:04 PM GMT
Sign In or Register to comment.