PIPE is coming...
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
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
Comments
this is cool...
Good show!
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Just tossing my two bits worth into the bit bucket
KK
·
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.
··
·· 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
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
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
The PIPE (ALPHA version) is awesome. I can't wait for the Beta or final release.
Paul Kang
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
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!"
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!
You have just made me a happy person..
Keep up the good work!
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
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
sourceforge.net/projects/ppropellersim
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
propeller.wikispaces.com/Debuggers+and+Emulators
I've also added a page for doing the same with Bootloaders ..
propeller.wikispaces.com/Bootloaders
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.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔