ArdUp - An Arduino Hex File Uploader

I'm not sure this is the correct forum, but here goes.

I've built a GUI on top of avrdude that eases the process of uploading hex files created in AVRStudio/WinAVR.

You can read more about this on my blog at: http://smileymicros.com/blog/?p=221 which also has a link to get ArdUp as ArdUp.zip.

I'd very much appreciate it folks who use the Arduino Duemilanove board with AVRStudio/WinAVR would try this and provide me with critiques.

Smiley

OK, Smiley,
Maybe I'm being stupid. I downloaded the zip file and unzipped it to a folder on my desktop. This is on an XP machine that I have been developing Arduino sketches on for quite awhile.
Since there isn't any install, I tried running ArdUp.exe and got:
"The application failed to initialize properly (0xc0000135). Click on OK to terminate application".

I tried a fresh reboot. I've got Arduino-0017 running. Do I need a newer version? I try not to upgrade my tools in the middle of a project.

I would be happy to shop your shop if I can get this working.
Steve (Frowny, at the moment).

You aren't being stupid ;). I just realized that I usually issue these things using the C# publish method so that it installs and checks to make sure you have all the supporting libraries you need (mainly .NET). I'll try to redo this tomorrow and repost the download.

Sorry for the inconvenience.
Smiley

I've changed the zip file to ArdUpInstall.zip that you can get from my blog link above. This uses the Windows Installer and should work.

I'd appreciate any feedback.

Smiley

I will give it a shot, this weekend, avrdude can be a right pita sometimes

I will check it out too. I still still do a lot of work with AVRGCC so this might be fun to mess with.

(I know the average AVRFREAKS and geeks seem to dislike the concept of an avrdude gui... but I always thought it would be nice to have)

Glad to hear it. And remember I would like feedback, even negative feedback can help. I find this a lot easier than raw avrdude, but I don't know how other folks will view it.

Smiley

You must have AVRStudio and WinAVR installed.

Why does it need AVRStudio?
Consider having it automatically detect an Ardunio IDE installation, and use that version of AVRDude?
I'm not exactly sure why someone with only Arduino installed would want to use this utility, but it seems like it would be an easy enough addition...

Well, you don't actually have to have them installed. All you really need is avrdude and a hex file to upload.

My assumption is that this is for use by relative novices who want to use the Arduino board with the standard Atmel tools. I felt it would be too much information to try to get them to use the application and have to hunt for the the hex file from the Arduino IDE and the avrdude loaded during the Arduino install.

Someone with the Arduino IDE already installed might want to use this if they are wanting to transition to the standard Atmel tools: AVRStudio / WinAVR / avrdude. I think the Arduino IDE is great for getting started out, but eventually you are going to run into limitations not present in the standard tools so IMHO ArdUp helps with the transition because avrdude can be a bear to use raw in the DOS window.

I'm happy to hear opposing views.

[edit]
I just looked at the code and if you already have avrdude installed you don't need to install it again so it should work with only the Arduino IDE installed if you can find you hex file to upload. That is assuming that the Arduino IDE install creates a path in the environment for avrdude. I'd have to uninstall a bunch of stuff and reinstall the Arduino IDE to find out, so if anyone tries this without installing the WinAVR toolset I'd like to hear about their results.
[/edit]

Smiley

Well, you don't actually have to have them installed.

Yeah, I mean I understand your intentions here, but maybe the word "MUST" could be replaced with "should". My testing shows that there are no real dependencies other than the need to have access to AVRDUDE.

Program RUNS with no complaints on a system without AVRstudio and WINavr, but that does limit its usefulness, of course.

Looks real nice, btw.

I did notice that it does not show up in "start" menu... that would be nice to have.

Secondly, the EXE does seem to be lacking a ICON in the Program Files directory... but it's there if I create a shortcut.

You did mention that a sample hex was included... but actually, I didn't see it.

After successfully locating the arduino and finding a random hexfile, I did get the not insync message... it was just the one line and "done".

Started avrdude.  Please stand by..
avrdude.exe: stk500_getsync(): not in sync: resp=0xe0

avrdude.exe done.  Thank you.

Not actually checked what it did yet...

I think it's just saying that my COM port was found, but my settings are wrong for the particular Arduino I have. (Boarduino USB with a 168 installed.)

After that, I pressed HELP (yeah, should have done that first, I suppose).. I got this when I pressed help:

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ComponentModel.Win32Exception: The system cannot find the file specified
   at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start(String fileName)
   at ArdUp.MainForm.buttonHELP_Click_1(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3615 (GDR.050727-3600)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
ArdUp
    Assembly Version: 1.0.3939.24807
    Win32 Version: 1.0.3939.24807
    CodeBase: file:///C:/Program%20Files/ArdUp/ArdUp.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3614 (GDR.050727-3600)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

NOTE: HELP WORKS until I try to SCAN and UPLOAD... after that... it does not work until I close the program and restart it.

Dunno if this is helping.

My system is XP SP3.

I'm not sure where the sample file went nor what causes it to lose the manual on the second use.

The not insync error almost certainly came because the device is set to m328p and the baudrate to 57600 so your '168 wouldn't work.

I'll check into these issues.

I did another program for more advanced users a few months back that lets the user set the device and baudrate and suchlike, and once I get a bit more feedback on this, I'll redo that program.

Smiley

I have tried this and it works great!!! Problem is......Arduino IDE does this with ALOT less steps. If I wanted to upload HEX to say.....an Atmega16......what should I do???? I uploaded the Arduino ISP and attempted to upload the Blink sketch to an Atmega16.....but it only programmed the Arduino back to the Blink sketch. Should I look elsewhere for my purpose of programming a microcontroller through the Arduino?

I'm not sure what you are asking. Please read the first post in this thread and you'll see that what you are trying isn't related to what this device does. If you want more detailed information please read the blog entry.

Smiley,

Some ideas:

  • A few weeks ago there was a question about replicating code from an Arduino to another one. I imagine that ArdUp could perform such a process.
  • Also when I need to program e.g. 400 Arduino's with the same program it would be nice if it could be automated, that I just have to plug in USB ports.
  • Would be nice if it could upload EEPROM and automatically change some bytes (e.g. IP adress or serial number) of a larger batch. Somehow like how scanners store images with a sequence number or so.

my 2 cents to keep you busy :slight_smile:
Rob

This is really a C# program that generates and runs an avrdude script. Since the source code is available you could modify it to add whatever you want avrdude to do, so making it program an Arudino at the push of a button or to upload an eeprom file shouldn't for someone familiar with C.

Smiley