Shop OBEX P1 Docs P2 Docs Learn Events
PIPE is coming... — Parallax Forums

PIPE is coming...

BuddhaBuddha Posts: 25
edited 2008-06-22 22:07 in Propeller 1
Since the Propeller doesn't have any debugging support, I thought it would be nice to have an environment where single-stepping through assembly code would be possible. This type of interface would allow multi-COG programs to be debugged much more easily than is currently possible, especially for programs that are self-modifying and/or take up the entire COG with no room for debugging I/O.

Enter: PIPE. The acronym means "Pipe Is not a Propeller Emulator". Because it's not, really. [noparse]:)[/noparse] It's just an interesting VM that happens to interpret Propeller assembly. And to that end, it will come with no warranties of such functionality.

It's currently in an "alpha" stage, which means it doesn't have all of the basic functionality required for use. But I wanted to post a screenshot and some information to see what the Propeller community thought about this sort of thing. Any and all feedback is welcome!

What it can do right now is:

Simulate all 8 COGs and the HUB.
Simulate the I/O bus.
Provide real-time disassembly of all of the COG registers, to help debug self-modifying code.
Provide a complete view of all of the COG registers, HUB memory, and I/O pin states, in a cycle-accurate manner.
Load and execute a ROM file.

What it will be able to do at "beta":

Load compiled code into RAM and execute it. (Note that it will only be able to execute "pure assembly" programs, and not any that include significant SPIN code.)
Simulate the PLLs and video generators.
Stream I/O to/from files on disk to allow cycle-accurate debugging of protocols.
Interface to actual PC I/O boards to allow the VM to talk with the outside world!
Provide a look into the inner world of the system, such as the actual execution stage of the COGs per cycle.
Run SPIN code someday? (Would need decrypted Propeller ROM or custom SPIN interpreter code.)
Run much, much faster. The current simulated speed is 3Mhz, but that will increase as the program reaches "beta".

About the screenshot: what you see here is an ALPHA version executing a Propeller ROM dump. It is not decrypted, so the assembly it's running is garbage. See this post for more information: http://forums.parallax.com/showthread.php?p=593557

Edit: I just noticed that there's a bug visible in the screenshot: the disassembly view isn't showing the addresses or the values in hex, as the button states would suggest. The disassembler doesn't have that functionality yet, but it's trivial to add. [noparse]:)[/noparse]

Post Edited (Buddha) : 7/12/2006 7:14:09 AM GMT
995 x 840 - 99K

Comments

  • Kaos KiddKaos Kidd Posts: 614
    edited 2006-07-12 13:19
    WOW...
    this is cool...
    Good show!

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Just tossing my two bits worth into the bit bucket


    KK
    ·
  • Bill BairdBill Baird Posts: 23
    edited 2006-07-14 18:48
    That is fantastic ! How do I get on the beta testing list?
  • BuddhaBuddha Posts: 25
    edited 2006-07-15 00:13
    Bill Baird said...
    How do I get on the beta testing list?

    Bill, I will send you a message through the forum when Pipe is ready for testing. It's not quite at that stage yet, but I'm working towards it as fast as possible. A pre-beta test will probably be ready by next weekend. It could even happen this weekend if I have enough caffeine in the house. [noparse];)[/noparse]

    If anyone else would like to get their hands on this while it's still a little rough, just send me a message!

    For everyone else, there will be a public release just as soon as the basic features are in and it's stable.
  • APStech-AttilaAPStech-Attila Posts: 38
    edited 2006-07-21 08:13
    Buddha said...


    Bill, I will send you a message through the forum when Pipe is ready for testing. It's not quite at that stage yet, but I'm working towards it as fast as possible. A pre-beta test will probably be ready by next weekend. It could even happen this weekend if I have enough caffeine in the house. [noparse];)[/noparse]

    If anyone else would like to get their hands on this while it's still a little rough, just send me a message!

    For everyone else, there will be a public release just as soon as the basic features are in and it's stable.
    Dear Buddha,
    ··

    ·· I wouldn't care if the software crashez every minute and it is·alpha-beta-beta-pre release, I would be happy to test it! The PIPE is just the thing everybody needs for ASM development! Great work!

    Attila
  • BuddhaBuddha Posts: 25
    edited 2006-07-23 04:40
    Attila said...
    I wouldn't care if the software crashez every minute and it is alpha-beta-beta-pre release, I would be happy to test it! The PIPE is just the thing everybody needs for ASM development! Great work!

    Atilla, here's the information I sent to the beta testers already. Since more people keep asking about it, I decided to just post this publicly. Thanks for your interest! [noparse]:)[/noparse]


    Here's really rough pre-alpha version of Pipe is available, if you would like a sneak preview. [noparse]:)[/noparse] There's a readme.txt file in the zip archive that includes instructions for a simple demo of the functionality.

    Almost every feature is unfinished, and the GUI is only partially functional. The Hub view, in particular, is quite lacking, and the I/O pins status isn't visible anywhere. But enough negatives. The fact is, there's already a lot of cool features that do work, not the least of which is the fact that it can actually load .binary files directly from the Propeller IDE!

    The big caveat with running code on the emulator right now is the lack of SPIN code emulation. For now, the emulator just skips the first 6 longs in hub RAM and starts running code from there. The COGINIT instruction also adds a +4 offset when it starts a cog, since it is assumed that there will be SPIN code at the start of the object. (NOTE: This causes a discrepancy between code that will work on the Propeller and code that will run on the emulator. This should be fixed by the next PIPE release.) Please see the two demo .spin files for an example of how to write test code for the emulator.

    Sorry there's not more documentation, but the simple truth is that I don't have time to write it! As this heads towards beta, I'll begin writing real help files that explain the interface, etc. For right now, it should be mostly self-explanatory.

    Any feedback (especially bugs!) you can provide are very welcome! Feature requests are also welcome.

    mp3.mechanism8.com:8080/PIPE/Pipe_Pre_Alpha_07_16_2006.zip


    Note that this requires the .Net 2.0 framework to run. It's available here:

    www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en

    If you're into programming, it also requires Visual Studio 2005 (or Visual C++ 2005 Express) to open the solution and project files:

    msdn.microsoft.com/vstudio/express/visualc/default.aspx

    Edit: Updated the URL because Verizon blocks port 80.

    Post Edited (Buddha) : 10/19/2006 4:40:59 AM GMT
  • BuddhaBuddha Posts: 25
    edited 2006-07-24 06:25
    Hello everyone,

    An updated version of Pipe is available. I didn't have much time to work on it this weekend, but the Hub view has been updated and the coginit address hack has been removed. The sample code has been updated to reflect the hack removal. [noparse]:)[/noparse]

    The I/O bus state is not yet viewable, but that is the next thing on my list.

    Enjoy, and feedback is welcome, as always!

    mp3.mechanism8.com:8080/PIPE/Pipe_Pre_Alpha_07_24_2006.zip

    Edit: Added some images.

    Edit: Updated the URL because Verizon blocks port 80.

    Post Edited (Buddha) : 10/19/2006 4:39:37 AM GMT
  • paulchainkangpaulchainkang Posts: 10
    edited 2006-07-25 01:48
    Buddha,

    The PIPE (ALPHA version) is awesome. I can't wait for the Beta or final release.

    Paul Kang
  • RinksCustomsRinksCustoms Posts: 531
    edited 2006-09-03 17:07
    I'd also be wanting to try the Beta, do you think you'd make a 1.0 ver? I'd be willing to pay up to $25 for a simple but powerfull debugger for the prop. One creature feature request, might there be a way you could integrate some kind of flash-dashboard so you could get a visual on whats going on inside the prop? I could probably generate a flash-dash if you could controll the flash with code.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Definetly a E3 (Electronics Engineer Extrodinare!)
    "I laugh in the face of imposible,... not because i know it all, ... but because I don't know well enough!"
  • BuddhaBuddha Posts: 25
    edited 2006-09-05 16:36
    RinksCustoms said...
    I'd also be wanting to try the Beta, do you think you'd make a 1.0 ver?

    You'll be happy to know that this project is NOT dead. However, due to work, school, and home life, I haven't had much time to work on PIPE lately. But since there seems to be a lot of interest (59 downloads of the latest version!) I'll definitely make some time to keep the wheels turning.

    No promises yet, but the next focus will be debugging features, such as breakpoints. [noparse]:)[/noparse]

    As a side note, I've really been blown away by the quality of feedback and the number of positive comments from everyone. The Propeller community makes projects like these a real pleasure. Thanks for your interest!
  • PropeleroPropelero Posts: 5
    edited 2006-11-23 23:01
    Thank you so much for working in this GREAT solution!!!

    You have just made me a happy person.. smile.gif
  • DuckHeadDuckHead Posts: 7
    edited 2006-11-24 17:59
    Awsome! This app is just what the propeller people needs...
    Keep up the good work!

    jumpin.gif·
  • KodeDaemonKodeDaemon Posts: 4
    edited 2008-06-21 16:44
    Is this still in development?
  • SapiehaSapieha Posts: 2,964
    edited 2008-06-21 17:05
    Hi Buddha

    My explorer can´t read You file - mp3.mechanism8.com:8080/PIPE/Pipe_Pre_Alpha_07_24_2006.zip

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nothing is impossible, there are only different degrees of difficulty.

    Sapieha
  • AribaAriba Posts: 2,685
    edited 2008-06-21 18:21
    KodeDeamon

    Have a look at PASD, it is something similar.
    PASD can only debug 1 Cog at a time, but with a Sourcecode listing.

    www.insonix.ch/propeller/prop_pasd.html

    Andy
  • AleAle Posts: 2,363
    edited 2008-06-21 19:05
    or take a look at pPropellerSim: It includes editor and compiler (java source included).

    sourceforge.net/projects/ppropellersim
  • mirrormirror Posts: 322
    edited 2008-06-21 22:31
    And for a PC based emulation environment - all 8 cogs, pasm and spin see GEAR. http://forums.parallax.com/forums/default.aspx?f=25&m=242685

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
  • hippyhippy Posts: 1,981
    edited 2008-06-22 16:44
    As we seem to go through listing these debuggers and emulators quite frequently, I've created a Wiki page for them. If authors or anyone else wants to go in and add a brief description about the tools please feel free to do so. Probably best to create a sub-page for a more comprehensive description if that's wanted. Anyone else with similar tools are of course welcome to add theirs to the list, and no offence intended to anyone I've forgotten ...

    propeller.wikispaces.com/Debuggers+and+Emulators

    I've also added a page for doing the same with Bootloaders ..

    propeller.wikispaces.com/Bootloaders
  • AleAle Posts: 2,363
    edited 2008-06-22 17:19
    That hippy was an excellent idea. So we do not fight with our selves wink.gif We only need a sticky if it does not exist yet.
  • KodeDaemonKodeDaemon Posts: 4
    edited 2008-06-22 17:21
    Awesome, thanks everyone! I·began writing·an emulator·until mirror suggested Gear, it's everything I'm looking for and more. Television and VGA emulation·are a real big plus for me. The emulation could really benefit from some optimizing though, but it's still great for testing out code.
  • mirrormirror Posts: 322
    edited 2008-06-22 22:07
    Hi KodeDaemon,

    The instruction emulation in Gear is probably about as fast as it's going to get. It could porbably be made faster by re-writing in some native language (C etc.) as opposed to C#, but is adequate for most proof of concept stuff.

    Regards,
    Mirror.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Sign In or Register to comment.