diff options
author | laforge <laforge@6dc7ffe9-61d6-0310-9af1-9938baff3ed1> | 2006-09-13 16:02:52 +0000 |
---|---|---|
committer | laforge <laforge@6dc7ffe9-61d6-0310-9af1-9938baff3ed1> | 2006-09-13 16:02:52 +0000 |
commit | a97e460bea62375c9c870fb3e3650fbff20c5ad1 (patch) | |
tree | 64c0de524a604015a367aa979c777325765fbfa3 /firmware/src/os/dfu.h | |
parent | 8bd3d51b23e328e91c209dbebe8cfe002b0b0042 (diff) |
Completely separate DFU from application program, we now have a real bootloader.
DFU occupies 0x00100000 - 0x00100fff in flash, application starts at 0x00101000.
DFU also occupies the first couple of bytes in SRAM, application starts at 0x00200024.
In order to produce a samba-flashable image, first build dfu.bin by typing
'make -f Makefule.dfu', succeeded by 'make TARGET=... DEBUG=... BOARD=...' and then
concatenating the two files together, e.g. cat dfu.bin main_reqa.bin > flash.bin.
Actual flashing via DFU is still not operational, but will be implemented next
git-svn-id: https://svn.openpcd.org:2342/trunk@194 6dc7ffe9-61d6-0310-9af1-9938baff3ed1
Diffstat (limited to 'firmware/src/os/dfu.h')
-rw-r--r-- | firmware/src/os/dfu.h | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/firmware/src/os/dfu.h b/firmware/src/os/dfu.h deleted file mode 100644 index 8786044..0000000 --- a/firmware/src/os/dfu.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef _DFU_H -#define _DFU_H - -/* USB Device Firmware Update Implementation for OpenPCD - * (C) 2006 by Harald Welte <hwelte@hmw-consulting.de> - * - * This ought to be compliant to the USB DFU Spec 1.0 as available from - * http://www.usb.org/developers/devclass_docs/usbdfu10.pdf - * - */ - -#include <sys/types.h> -#include <usb_ch9.h> -#include <usb_dfu.h> - -#include "dbgu.h" - -/* USB DFU functional descriptor */ -#define DFU_FUNC_DESC { \ - .bLength = USB_DT_DFU_SIZE, \ - .bDescriptorType = USB_DT_DFU, \ - .bmAttributes = USB_DFU_CAN_UPLOAD | USB_DFU_CAN_DOWNLOAD, \ - .wDetachTimeOut = 0xff00, \ - .wTransferSize = AT91C_IFLASH_PAGE_SIZE, \ - .bcdDFUVersion = 0x0100, \ -} - -/* USB Interface descriptor in Runtime mode */ -#define DFU_RT_IF_DESC { \ - .bLength = USB_DT_INTERFACE_SIZE, \ - .bDescriptorType = USB_DT_INTERFACE, \ - .bInterfaceNumber = 0x01, \ - .bAlternateSetting = 0x00, \ - .bNumEndpoints = 0x00, \ - .bInterfaceClass = 0xfe, \ - .bInterfaceSubClass = 0x01, \ - .bInterfaceProtocol = 0x01, \ - .iInterface = 1, \ -} - -#define __dfufunc __attribute__ ((long_call, section (".dfu.func"))) -#define __dfustruct __attribute__ ((section (".dfu.struct"))) const -#define __dfufunctab __attribute__ ((section (".dfu.functab"))) - -#if 0 -extern void __dfufunc udp_ep0_send_data(const char *data, u_int32_t length); -extern void __dfufunc udp_ep0_send_zlp(void); -extern void __dfufunc udp_ep0_send_stall(void); -extern __dfustruct struct usb_device_descriptor dfu_dev_descriptor; -extern __dfustruct struct _dfu_desc dfu_cfg_descriptor; -extern void dfu_switch(void); -extern int __dfufunc dfu_ep0_handler(u_int8_t req_type, u_int8_t req, - u_int16_t val, u_int16_t len); -extern static u_int8_t dfu_state; -struct udp_pcd; -#endif - - -extern void __dfufunc udp_init(void); - -struct _dfu_desc { - struct usb_config_descriptor ucfg; - struct usb_interface_descriptor uif[2]; - struct usb_dfu_func_descriptor func_dfu; -}; - -struct dfuapi { - void (*ep0_send_data)(const char *data, u_int32_t len); - void (*ep0_send_zlp)(void); - void (*ep0_send_stall)(void); - int (*dfu_ep0_handler)(u_int8_t req_type, u_int8_t req, - u_int16_t val, u_int16_t len); - void (*dfu_switch)(void); - u_int8_t *dfu_state; - const struct usb_device_descriptor *dfu_dev_descriptor; - const struct _dfu_desc *dfu_cfg_descriptor; -}; - - -#endif /* _DFU_H */ |