Skip to content

Instantly share code, notes, and snippets.

@geekman
Created July 20, 2017 14:12
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save geekman/4bf8cd13a491106ae4f92d6aec9598c3 to your computer and use it in GitHub Desktop.
Save geekman/4bf8cd13a491106ae4f92d6aec9598c3 to your computer and use it in GitHub Desktop.
USBasp patch for the zhifengsoft USB ISP device (and newer avr-gcc)
diff -ur firmware/Makefile firmware-new/Makefile
--- firmware/Makefile 2011-05-28 15:57:49 +0800
+++ firmware-new/Makefile 2017-07-16 01:12:03 +0800
@@ -7,7 +7,7 @@
# TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef
# TARGET=atmega48 HFUSE=0xdd LFUSE=0xff
# TARGET=at90s2313
-TARGET=atmega8
+TARGET=atmega88
HFUSE=0xc9
LFUSE=0xef
diff -ur firmware/main.c firmware-new/main.c
--- firmware/main.c 2011-05-28 15:57:49 +0800
+++ firmware-new/main.c 2017-07-20 22:09:17 +0800
@@ -307,7 +307,7 @@
PORTD = 0;
PORTB = 0;
/* all outputs except PD2 = INT0 */
- DDRD = ~(1 << 2);
+ DDRD = 0;
/* output SE0 for USB reset */
DDRB = ~0;
diff -ur firmware/usbdrv/usbdrv.c firmware-new/usbdrv/usbdrv.c
--- firmware/usbdrv/usbdrv.c 2011-01-20 01:17:36 +0800
+++ firmware-new/usbdrv/usbdrv.c 2017-07-16 11:46:17 +0800
@@ -67,7 +67,7 @@
#if USB_CFG_DESCR_PROPS_STRING_0 == 0
#undef USB_CFG_DESCR_PROPS_STRING_0
#define USB_CFG_DESCR_PROPS_STRING_0 sizeof(usbDescriptorString0)
-PROGMEM char usbDescriptorString0[] = { /* language descriptor */
+PROGMEM const char usbDescriptorString0[] = { /* language descriptor */
4, /* sizeof(usbDescriptorString0): length of descriptor in bytes */
3, /* descriptor type */
0x09, 0x04, /* language index (0x0409 = US-English) */
@@ -77,7 +77,7 @@
#if USB_CFG_DESCR_PROPS_STRING_VENDOR == 0 && USB_CFG_VENDOR_NAME_LEN
#undef USB_CFG_DESCR_PROPS_STRING_VENDOR
#define USB_CFG_DESCR_PROPS_STRING_VENDOR sizeof(usbDescriptorStringVendor)
-PROGMEM int usbDescriptorStringVendor[] = {
+PROGMEM const int usbDescriptorStringVendor[] = {
USB_STRING_DESCRIPTOR_HEADER(USB_CFG_VENDOR_NAME_LEN),
USB_CFG_VENDOR_NAME
};
@@ -86,7 +86,7 @@
#if USB_CFG_DESCR_PROPS_STRING_PRODUCT == 0 && USB_CFG_DEVICE_NAME_LEN
#undef USB_CFG_DESCR_PROPS_STRING_PRODUCT
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT sizeof(usbDescriptorStringDevice)
-PROGMEM int usbDescriptorStringDevice[] = {
+PROGMEM const int usbDescriptorStringDevice[] = {
USB_STRING_DESCRIPTOR_HEADER(USB_CFG_DEVICE_NAME_LEN),
USB_CFG_DEVICE_NAME
};
@@ -95,7 +95,7 @@
#if USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER == 0 && USB_CFG_SERIAL_NUMBER_LEN
#undef USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER sizeof(usbDescriptorStringSerialNumber)
-PROGMEM int usbDescriptorStringSerialNumber[] = {
+PROGMEM const int usbDescriptorStringSerialNumber[] = {
USB_STRING_DESCRIPTOR_HEADER(USB_CFG_SERIAL_NUMBER_LEN),
USB_CFG_SERIAL_NUMBER
};
@@ -108,7 +108,7 @@
#if USB_CFG_DESCR_PROPS_DEVICE == 0
#undef USB_CFG_DESCR_PROPS_DEVICE
#define USB_CFG_DESCR_PROPS_DEVICE sizeof(usbDescriptorDevice)
-PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */
+PROGMEM const char usbDescriptorDevice[] = { /* USB device descriptor */
18, /* sizeof(usbDescriptorDevice): length of descriptor in bytes */
USBDESCR_DEVICE, /* descriptor type */
0x10, 0x01, /* USB version supported */
@@ -139,7 +139,7 @@
#if USB_CFG_DESCR_PROPS_CONFIGURATION == 0
#undef USB_CFG_DESCR_PROPS_CONFIGURATION
#define USB_CFG_DESCR_PROPS_CONFIGURATION sizeof(usbDescriptorConfiguration)
-PROGMEM char usbDescriptorConfiguration[] = { /* USB configuration descriptor */
+PROGMEM const char usbDescriptorConfiguration[] = { /* USB configuration descriptor */
9, /* sizeof(usbDescriptorConfiguration): length of descriptor in bytes */
USBDESCR_CONFIG, /* descriptor type */
18 + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT3 +
diff -ur firmware/usbdrv/usbdrv.h firmware-new/usbdrv/usbdrv.h
--- firmware/usbdrv/usbdrv.h 2011-01-20 01:17:36 +0800
+++ firmware-new/usbdrv/usbdrv.h 2017-07-16 11:47:13 +0800
@@ -452,43 +452,43 @@
#if !(USB_CFG_DESCR_PROPS_DEVICE & USB_PROP_IS_RAM)
PROGMEM
#endif
-char usbDescriptorDevice[];
+const char usbDescriptorDevice[];
extern
#if !(USB_CFG_DESCR_PROPS_CONFIGURATION & USB_PROP_IS_RAM)
PROGMEM
#endif
-char usbDescriptorConfiguration[];
+const char usbDescriptorConfiguration[];
extern
#if !(USB_CFG_DESCR_PROPS_HID_REPORT & USB_PROP_IS_RAM)
PROGMEM
#endif
-char usbDescriptorHidReport[];
+const char usbDescriptorHidReport[];
extern
#if !(USB_CFG_DESCR_PROPS_STRING_0 & USB_PROP_IS_RAM)
PROGMEM
#endif
-char usbDescriptorString0[];
+const char usbDescriptorString0[];
extern
#if !(USB_CFG_DESCR_PROPS_STRING_VENDOR & USB_PROP_IS_RAM)
PROGMEM
#endif
-int usbDescriptorStringVendor[];
+const int usbDescriptorStringVendor[];
extern
#if !(USB_CFG_DESCR_PROPS_STRING_PRODUCT & USB_PROP_IS_RAM)
PROGMEM
#endif
-int usbDescriptorStringDevice[];
+const int usbDescriptorStringDevice[];
extern
#if !(USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER & USB_PROP_IS_RAM)
PROGMEM
#endif
-int usbDescriptorStringSerialNumber[];
+const int usbDescriptorStringSerialNumber[];
#endif /* __ASSEMBLER__ */
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment