Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

atxmega128A4U entries in avrdude.conf missing 'wiring' protocol stuff #3

Open
bombasticbob opened this issue Mar 5, 2018 · 0 comments
Assignees
Labels

Comments

@bombasticbob
Copy link
Contributor

basically need to patch the 'avrdude.conf' file that's include with the IDE files.

a typical patch might look like this (just for the xmeg128a4u)

--- /usr/local/etc/avrdude.conf	2017-05-10 19:17:33.000000000 -0700
+++ avrdude.conf	2018-03-04 18:46:31.998213000 -0800
@@ -14010,10 +14010,21 @@
 part parent ".xmega"
     id		= "x128a4u";
     desc	= "ATxmega128A4U";
     signature	= 0x1e 0x97 0x46;
     usbpid	= 0x2fde;
+    has_jtag	= yes;
+    has_pdi 	= yes;
+    nvm_base	= 0x01c0;
+
+# needed for wiring aka stk500v2 protocol
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    rampz               = 0x3b; # verified in iox128a1u.h
+
 
     memory "eeprom"
         size		= 0x800;
         offset		= 0x8c0000;
         page_size	= 0x20;
@@ -14044,10 +14055,54 @@
     memory "flash"
         size		= 0x22000;
         offset		= 0x800000;
         page_size	= 0x100;
         readsize	= 0x100;
+# needed for wiring aka stk500v2 protocol
+        paged   = yes;  # this appears to affect how it is read/written with stk500v2
+        num_pages   = 544; # 272;
+        blocksize	= 0x100; # #0x200
+        mode      = 0x41;
+        delay     = 10;
+
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+        load_ext_addr   = "  0   1   0   0      1   1   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0 a16",
+                          "  0   0   0   0      0   0   0   0";
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+# needed for wiring aka stk500v2 protocol
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
     ;
 
     memory "usersig"
         size		= 0x100;
         offset		= 0x8e0400;

Note that the # of pages depends on the NVRAM size and the correct page size. In some cases, the avrdude.conf file may have the wrong read size and/or page size, in which case, it will be necessary to test it on a real CPU.

As an example, the xmega128a1u had 512 byte pages. The xmeag128a4u has 256 byte pages. In all other ways they're pretty much the same. For all supported CPUs this will need testing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant