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:
|
|
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.