This commit is contained in:
David A. Mellis 2006-03-21 19:46:13 +00:00
parent c6704296c1
commit 4061d17578
2 changed files with 39 additions and 33 deletions

View File

@ -1805,7 +1805,7 @@ public class Editor extends JFrame
//boolean success = sketch.isLibrary() ?
//sketch.exportLibrary() : sketch.exportApplet();
Uploader uploader = new Uploader();
boolean success = uploader.burnBootloader();
boolean success = uploader.burnBootloaderAVRISP();
if (success) {
message("Done burning bootloader.");

View File

@ -78,32 +78,7 @@ public class Uploader implements MessageConsumer {
return uisp(commandDownloader);
}
public boolean burnBootloader() throws RunnerException {
// I know this is ugly; apologies - that's what happens when you try to
// write Lisp-style code in Java.
// Some of these values should be specified in preferences.txt.
return
// unlock bootloader segment of flash memory
uploadUsingAVRISP(Arrays.asList(new String[] {
"--wr_lock=" + Preferences.get("bootloader.unlock_bits") })) &&
// write fuses:
// bootloader size of 512 words; from 0xE00-0xFFF
// clock speed of 16 MHz, external quartz
uploadUsingAVRISP(Arrays.asList(new String[] {
"--wr_fuse_l=" + Preferences.get("bootloader.low_fuses"),
"--wr_fuse_h=" + Preferences.get("bootloader.high_fuses") })) &&
// upload bootloader
uploadUsingAVRISP(Arrays.asList(new String[] {
"--erase", "--upload", "--verify",
"if=" + Preferences.get("bootloader.path") + File.separator +
Preferences.get("bootloader.file") })) &&
// lock bootloader segment
uploadUsingAVRISP(Arrays.asList(new String[] {
"--wr_lock=" + Preferences.get("bootloader.lock_bits") }));
}
public boolean uploadUsingAVRISP(Collection params) throws RunnerException {
public boolean burnBootloaderAVRISP() throws RunnerException {
List commandDownloader = new ArrayList();
commandDownloader.add("-dprog=" + Preferences.get("bootloader.programmer"));
commandDownloader.add(
@ -111,12 +86,43 @@ public class Uploader implements MessageConsumer {
"/dev/" + Preferences.get("serial.port").toLowerCase() :
Preferences.get("serial.port")));
commandDownloader.add("-dspeed=" + Preferences.get("serial.burn_rate"));
commandDownloader.addAll(params);
//commandDownloader.add("--erase");
//commandDownloader.add("--upload");
//commandDownloader.add("--verify");
//commandDownloader.add("if=" + buildPath + File.separator + className + ".hex");
return uisp(commandDownloader);
return burnBootloader(commandDownloader);
}
public boolean burnBootloaderParallel() throws RunnerException {
List commandDownloader = new ArrayList();
commandDownloader.add("-dprog=dapa");
commandDownloader.add("-dlpt=" + Preferences.get("parallel.port"));
return burnBootloader(commandDownloader);
}
protected boolean burnBootloader(Collection params) throws RunnerException {
// I know this is ugly; apologies - that's what happens when you try to
// write Lisp-style code in Java.
return
// unlock bootloader segment of flash memory
uisp(params, Arrays.asList(new String[] {
"--wr_lock=" + Preferences.get("bootloader.unlock_bits") })) &&
// write fuses:
// bootloader size of 512 words; from 0xE00-0xFFF
// clock speed of 16 MHz, external quartz
uisp(params, Arrays.asList(new String[] {
"--wr_fuse_l=" + Preferences.get("bootloader.low_fuses"),
"--wr_fuse_h=" + Preferences.get("bootloader.high_fuses") })) &&
// upload bootloader
uisp(params, Arrays.asList(new String[] {
"--erase", "--upload", "--verify",
"if=" + Preferences.get("bootloader.path") + File.separator +
Preferences.get("bootloader.file") })) &&
// lock bootloader segment
uisp(params, Arrays.asList(new String[] {
"--wr_lock=" + Preferences.get("bootloader.lock_bits") }));
}
public boolean uisp(Collection p1, Collection p2) throws RunnerException {
ArrayList p = new ArrayList(p1);
p.addAll(p2);
return uisp(p);
}
public boolean uisp(Collection params) throws RunnerException {