BMA GUI Multi-COG PASM Debugger
jazzed
Posts: 11,803
Here is the BMA PASM Debugger with a GUI. It is built for Windows with .net 2.0+
This is a simple multi-cog capable debugger program that uses the mature BMADebugger.
Features
Cheers.
--Steve
V0.2 - Fixes problem with breakpoint set.
V0.1 - Added BSTC special.
V0.0
Post Edited (jazzed) : 2/6/2010 3:59:59 AM GMT
This is a simple multi-cog capable debugger program that uses the mature BMADebugger.
Features
- Set breakpoints in COGs and Continue, switch to another COG and do work there, etc....
- See COG variable data by putting your mouse over the variable name
- Step over PASM subroutine CALLs
- Single step PASM and into subroutines
- Help is available from the program Help Menu.
Cheers.
--Steve
V0.2 - Fixes problem with breakpoint set.
V0.1 - Added BSTC special.
V0.0
Post Edited (jazzed) : 2/6/2010 3:59:59 AM GMT
Comments
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
Las - Large model assembler Largos - upcoming nano operating system
Multi-cog debugging! Great work!
Ross.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Catalina - a FREE C compiler for the Propeller - see Catalina
could you provide a link to bstc v0.15.4-pre3, I only seem to be able to locate pre2? I know it's probably somewhere in the bst thread ... needle ... hay [noparse]:)[/noparse]
No, it's not. It's a special I knocked up for Steve. I'm still wrestling with some command line parameter changes required to do what it needed to do for the debugger, so I've not uploaded the binaries yet.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Life may be "too short", but it's the longest thing we ever do.
It's fine on my desktop PC with XP.
Leon
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Amateur radio callsign: G1HSM
Post Edited (Leon) : 2/4/2010 3:48:41 PM GMT
I'll make a special that uses an installer with .net 3.5 to see if that helps.
BIG FOOBAR: I forgot to include the BSTC special in BMA GUI Debugger V0.0. Sorry about that. Please find attached.
BMA GUI Debugger V0.1 in the top post has the file now.
Post Edited (jazzed) : 2/4/2010 4:49:33 PM GMT
Leon
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Amateur radio callsign: G1HSM
Leon I'll make a package for you tomorrow morning.
The best thing to do is run the BMADebugger_demo and get a feeling for what's happening.
Press "enter" to single step after you get the "T0.PC 008 OK>" prompt. Press ? for help.
Basically, the COG to debug gets started with a utility which allows you to single-step code or examine/modify registers or hub memory locations. You can set a break-point at an address and hit "g" to run the COG at full speed until that instruction gets hit. The same goes for multiple COG debugging.
The only differences between single and multiple COG debug are the way the COGs get started and the need to switch context with the "t n" command (task n). You can set breakpoints for COG 1 and hit "g" for task 1 to run and switch to task 2 with "t 2". If you have multiple COG debugging needs, you use the BMAUtility.taskstart(...) to schedule the cogs, then BMAUtility.start to start the debugger. If you only need to debug 1 cog use BMAUtility.debug.
One thing I often have to do is start a test thread with spin using cognew(test,@stack) ... This allows Spin to communicate with the COG(s) being debugged so I don't have to play with mailbox values from within the debugger.
Any cog to debug must have 8 free registers at COG address 0. The debugger will fill the data for you.
The BSTC listing (bstc -ls ...) is very important for debugging because it shows addresses of instructions, labels, and comments. It also tells the addresses of DAT data. VAR data addresses are harder to understand, but generally start at the end of the SPIN code.
The hardest thing to get used to with the user interface (besides looking up addresses in the BSTC.list file) is the way commands are parsed. The "pr" command will print all registers, when entered is shows up as "p r". The fill long command has the syntax "flN A D" and the spaces are required there. The help menu shows the expected command syntax. All data is entered as hex.
Hope this helps.