Freeware by
Eric Engler

 

Updated: March 23, 2007

 
     

March 23, 2007: Added a section about NanoVM

February 18, 2007: Added my notes about the AN2548 Serial Monior


Pluto Visual Debugger for the Serial Monitor

Here is the list of features for Pluto

Pluto is coded in C# for the .NET Framework. Pluto leverages code from Alex Harvey of Technological Arts, as well as code from the cool SharpDevelop project (I'm using their main TextEditor control). Pluto is an open source project licensed under the GPL.


Prerequisites

You need a somewhat recent version of Windows. I recommend WinXP. I don't know if this will work on Win98, but you're welcome to try it if you have the .NET Framework loaded.

You need the Microsoft .NET Framework on your computer, version 2.0. This is a rich class library developed by Microsoft. You do NOT need the SDK, you only need the re-distributable. AsmIDE will tell you which version(s) you have - see the Help...About window. Another test is to go to the Windows Control Panel, Administrative Tools, and see if you have "Microsoft .NET Framework 2.0 Configuration" as one of the menu choices. If you don't have the .NET Framework, you can download it for free at the Microsoft Website

Get the latest versions of AsmIDE and as12.exe. Pluto will work without AsmIDE, but it's easier if you use AsmIDE. Go to View, Options and select the Assembler tab. Check the box for the Pluto debugger. Now, when you press the Download button in AsmIDE it will launch Pluto for you.

You need the latest as12.exe (which comes with AsmIDE) to take advantage of the new #endinclude directive that automatically gets inserted into your .lst file. This allows Pluto to automatically fold the include files so they don't distract you from your own code. You can easily open the fold if desired.


How does Pluto work?

Pluto opens the .lst file produced by as12.exe (which is called automatically from AsmIDE). Pluto gives you a readonly view of the list file, but it lets you set breakpoints by clicking to the left of a line that has an opcode. You can also single-step and do various debug functions.

Pluto will also use your .s19 file to program the flash memory on your 9s12C32 chip. And the .sym file will be used to provide addresses for user-defined watches.


TIPS

To make Pluto respond quickly, make sure you have disabled "Log Verbosely" and "Log to File" on the Debug menu. These options are helpful if you want to see what's going on inside the code, or if you want to figure out a problem, but they will slow down Pluto. For your convenience these features are automatically disabled in the Animate mode.

You have to "org" your assembler program at $4000 or $C000, and keep your board in the boot mode the whole time. If you press Reset on the board you have to follow that by pressing Reset in Pluto. Ideally you won't need to press Reset on the board often because Pluto's Reset should work.

You must ensure that you do a Download after making changes to your assembler program. Currently Pluto does NOT check this, so it's up to you. Pluto always assumes your .lst file matches the code that was downloaded to flash. You'll be in for some strange debugging if you made changes, but forgot to Download the newly changed .s19 file. Maybe a future version can check your .s19 against the flash memory and warn you if there's a mismatch.

You should specify a reset vector for your program. This is used by Pluto and the Serial monitor as a starting address after a Reset. In other words, after you reset the controller by pressing the Reset button in Pluto, the serial Monitor looks at your reset vector and puts that into your PC. This will be used when you press the Start button. Pluto shows this value in the PC register after a reset.

But Pluto will also let you specify your own starting address in case you don't have a reset vector. However, I still think it's wise to code a reset vector because you'd probably like to have your program run autmatically in the run mode when the board is reset or powered up.

If your program disables interrupts Pluto will lose control. This is fine for very quick tasks, but you should leave interrupts enabled whenever possible.

The BlinkC32 program is for the Technological Arts DIP with docking board. Blink32-fly is a version for Wytec's DragonFly.


Pictures of Pluto

Main screen with some breakpoints set


NanoVM - could this be the future of Pluto?

Many of you may have read my thoughts on making a new embedded virtual machine. I was going to do one myself, and that seemed like a lot of hard work! The main benefits are that it gives users a rich debugging experience and supports new langauges (such as BASIC, C, Java, C#, etc). But due to the heavy amount of work, I didn't start on this yet. But now I stumbled onto another project where someone has already done something like this! He made a mini-JVM for the AVR. This targets the AVR microcontroller, and uses the Java source language, but this is an extensible model! It's a true VM, meaning it can support additional languages. I'm looking into this some more!

This would need more debugging support, but could probably be ported to other processors, like the 6812, Arm, msp430, etc! This is an exciting concept.

UPDATE: See my new NanoVM page!



Notes about the C32 and AN2548 I learned the hard way!

Notes about the AN2548 Serial Monitor

Memory map of the C32, some info also applies to other parts


linux port of Pluto?

This hasn't been ported to linux yet due to an apparent lack of demand. So let me know if you care about this. I can't justify the time to work on something that nobody really wants. A port would have to leverage mono, which is a linux open source version of the .NET Framework. Anyone that wants to help with a linux port would have to give me some dedicated time to help beta test such a port. A program of this complexity can take considerable time to test.



Pluto Downloads

Click here for a summary of changes in the latest version of Pluto

Pluto100.zip - the Pluto executable distribution. July 4, 2006
This comes with everything you need. Extract these files into the same folder as AsmIDE.

PlutoSrc100.zip - the Pluto C# source code distribution. July 4, 2006
You need Visual Studio 2005 to build this (should also work on free Express edition)


Pluto License

Pluto was released as an open source package licensed under the GPL. You may not use any of the source code in Pluto for any application that will be not be freely distributed with full source code.


Visit my other web pages:

AsmIDE Home Page - for hc11/hc12 assembler language development

EmbeddedGNU Home Page - for C language development

Virtual Machine to run Java programs on small embedded devices


My Contact Info

Tell me if you're using my programs! And please report bugs.

Eric Engler email: Eric Engler Email Address

Please consider making a PayPal donation to help me continue development of these embedded projects! Click on the PayPal button below to make a donation.