diff options
| -rw-r--r-- | openpcd/firmware/src/main_usb.c | 1 | ||||
| -rw-r--r-- | openpcd/firmware/src/openpcd.h | 3 | ||||
| -rw-r--r-- | openpcd/firmware/src/os/dbgu.h | 1 | ||||
| -rw-r--r-- | openpcd/firmware/src/os/dfu.c | 14 | ||||
| -rw-r--r-- | openpcd/firmware/src/os/dfu.h | 4 | ||||
| -rw-r--r-- | openpcd/firmware/src/os/main.c | 7 | ||||
| -rw-r--r-- | openpcd/firmware/src/os/req_ctx.c | 2 | ||||
| -rw-r--r-- | openpcd/firmware/src/os/usb_handler.c | 1 | ||||
| -rw-r--r-- | openpcd/firmware/src/os/usb_handler.h | 2 | ||||
| -rw-r--r-- | openpcd/firmware/src/pcd/main_analog.c | 1 | ||||
| -rw-r--r-- | openpcd/firmware/src/pcd/main_dumbreader.c | 2 | ||||
| -rw-r--r-- | openpcd/firmware/src/pcd/main_pwm.c | 2 | ||||
| -rw-r--r-- | openpcd/firmware/src/pcd/main_reqa.c | 1 | ||||
| -rw-r--r-- | openpcd/firmware/src/pcd/pwm.c | 4 | ||||
| -rw-r--r-- | openpcd/firmware/src/pcd/rc632.c | 2 | ||||
| -rw-r--r-- | openpcd/firmware/src/start/Cstartup.S | 3 | 
16 files changed, 26 insertions, 24 deletions
| diff --git a/openpcd/firmware/src/main_usb.c b/openpcd/firmware/src/main_usb.c index ee9556c..abb6948 100644 --- a/openpcd/firmware/src/main_usb.c +++ b/openpcd/firmware/src/main_usb.c @@ -31,7 +31,6 @@ int _main_dbgu(char key)  void _init_func(void)  { -	udp_init();  	usbtest_init();  } diff --git a/openpcd/firmware/src/openpcd.h b/openpcd/firmware/src/openpcd.h index a368996..51fa98d 100644 --- a/openpcd/firmware/src/openpcd.h +++ b/openpcd/firmware/src/openpcd.h @@ -99,7 +99,4 @@  #define OPENPCD_IRQ_PRIO_UDP	(AT91C_AIC_PRIOR_LOWEST+1)  #define OPENPCD_IRQ_PRIO_RC632	AT91C_AIC_PRIOR_LOWEST -extern void _init_func(void); -extern void _main_func(void); -  #endif /* _OPENPCD_H */ diff --git a/openpcd/firmware/src/os/dbgu.h b/openpcd/firmware/src/os/dbgu.h index 8dd34be..e29e351 100644 --- a/openpcd/firmware/src/os/dbgu.h +++ b/openpcd/firmware/src/os/dbgu.h @@ -26,6 +26,7 @@ void AT91F_DBGU_Init(void);  void AT91F_DBGU_Printk(	char *buffer);
  void AT91F_DBGU_Frame(	char *buffer);
  int AT91F_DBGU_Get( char *val);
 +void dbgu_rb_flush(void);
  #ifndef __WinARM__
  void AT91F_DBGU_scanf(char * type,unsigned int * val);
  #endif
 diff --git a/openpcd/firmware/src/os/dfu.c b/openpcd/firmware/src/os/dfu.c index ec99cef..25040db 100644 --- a/openpcd/firmware/src/os/dfu.c +++ b/openpcd/firmware/src/os/dfu.c @@ -24,8 +24,8 @@  #define DEBUGE DEBUGP  #define DEBUGI DEBUGP  #else -#define DEBUGE(x, args ...) -#define DEBUGI(x, args ...) +#define DEBUGE(x, args ...) do { } while (0) +#define DEBUGI(x, args ...) do { } while (0)  #endif  /* this is only called once before DFU mode, no __dfufunc required */ @@ -160,7 +160,7 @@ static __dfufunc int handle_upload(u_int16_t val, u_int16_t len)  	if (ptr + len > AT91C_IFLASH_SIZE)   		len = AT91C_IFLASH_SIZE - (u_int32_t) ptr; -	udp_ep0_send_data(ptr, len); +	udp_ep0_send_data((char *)ptr, len);  	ptr+= len;  	return len; @@ -176,7 +176,7 @@ static __dfufunc void handle_getstatus(void)  	dstat.bStatus = status;  	dstat.bState = dfu_state;  	dstat.iString = 0; -	udp_ep0_send_data(&dstat, sizeof(dstat)); +	udp_ep0_send_data((char *)&dstat, sizeof(dstat));  }  static void __dfufunc handle_getstate(void) @@ -368,7 +368,7 @@ send_zlp:  static u_int8_t cur_config;  /* USB DFU Device descriptor in DFU mode */ -__dfustruct struct usb_device_descriptor dfu_dev_descriptor = { +__dfustruct const struct usb_device_descriptor dfu_dev_descriptor = {  	.bLength		= USB_DT_DEVICE_SIZE,  	.bDescriptorType	= USB_DT_DEVICE,  	.bcdUSB			= 0x0100, @@ -386,7 +386,7 @@ __dfustruct struct usb_device_descriptor dfu_dev_descriptor = {  };  /* USB DFU Config descriptor in DFU mode */ -__dfustruct struct _dfu_desc dfu_cfg_descriptor = { +__dfustruct const struct _dfu_desc dfu_cfg_descriptor = {  	.ucfg = {  		.bLength = USB_DT_CONFIG_SIZE,  		.bDescriptorType = USB_DT_CONFIG, @@ -665,7 +665,7 @@ void __dfufunc dfu_main(void)  	while (1) ;  } -struct dfuapi __dfufunctab dfu_api = { +const struct dfuapi __dfufunctab dfu_api = {  	.ep0_send_data		= &udp_ep0_send_data,  	.ep0_send_zlp		= &udp_ep0_send_zlp,  	.ep0_send_stall		= &udp_ep0_send_stall, diff --git a/openpcd/firmware/src/os/dfu.h b/openpcd/firmware/src/os/dfu.h index a663688..e68f62d 100644 --- a/openpcd/firmware/src/os/dfu.h +++ b/openpcd/firmware/src/os/dfu.h @@ -72,8 +72,8 @@ struct dfuapi {  				     u_int16_t val, u_int16_t len);  	void (*dfu_switch)(void);  	u_int8_t *dfu_state; -	struct usb_device_descriptor *dfu_dev_descriptor; -	struct _dfu_desc *dfu_cfg_descriptor; +	const struct usb_device_descriptor *dfu_dev_descriptor; +	const struct _dfu_desc *dfu_cfg_descriptor;  }; diff --git a/openpcd/firmware/src/os/main.c b/openpcd/firmware/src/os/main.c index c40fd79..4f637e5 100644 --- a/openpcd/firmware/src/os/main.c +++ b/openpcd/firmware/src/os/main.c @@ -3,6 +3,9 @@  #include <include/lib_AT91SAM7.h>  #include <os/dbgu.h>  #include <os/led.h> +#include <os/dfu.h> +#include <os/main.h> +#include <os/pcd_enumerate.h>  #include "../openpcd.h"  int main(void) @@ -14,6 +17,10 @@ int main(void)  	/* call application specific init function */  	_init_func(); +	/* initialize USB */ +	udp_init(); +	udp_open(); +  	// Enable User Reset and set its minimal assertion to 960 us  	AT91C_BASE_RSTC->RSTC_RMR =  	    AT91C_RSTC_URSTEN | (0x4 << 8) | (unsigned int)(0xA5 << 24); diff --git a/openpcd/firmware/src/os/req_ctx.c b/openpcd/firmware/src/os/req_ctx.c index 831d48e..99d248b 100644 --- a/openpcd/firmware/src/os/req_ctx.c +++ b/openpcd/firmware/src/os/req_ctx.c @@ -31,7 +31,7 @@ struct req_ctx *req_ctx_find_get(unsigned long old_state, unsigned long new_stat  u_int8_t req_ctx_num(struct req_ctx *ctx)  { -	return ((void *)ctx - (void *)&req_ctx[0])/sizeof(*ctx); +	return ((char *)ctx - (char *)&req_ctx[0])/sizeof(*ctx);  }  void req_ctx_set_state(struct req_ctx *ctx, unsigned long new_state) diff --git a/openpcd/firmware/src/os/usb_handler.c b/openpcd/firmware/src/os/usb_handler.c index 82620be..274353c 100644 --- a/openpcd/firmware/src/os/usb_handler.c +++ b/openpcd/firmware/src/os/usb_handler.c @@ -21,6 +21,7 @@ static usb_cmd_fn *cmd_hdlrs[16];  int usb_hdlr_register(usb_cmd_fn *hdlr, u_int8_t class)  {  	cmd_hdlrs[class] = hdlr; +	return 0;  }  void usb_hdlr_unregister(u_int8_t class) diff --git a/openpcd/firmware/src/os/usb_handler.h b/openpcd/firmware/src/os/usb_handler.h index a281c66..3efcc1f 100644 --- a/openpcd/firmware/src/os/usb_handler.h +++ b/openpcd/firmware/src/os/usb_handler.h @@ -2,12 +2,14 @@  #define _USB_HANDLER_H  #include "openpcd.h" +#include <os/req_ctx.h>  #define MAX_PAYLOAD_LEN	(64 - sizeof(struct openpcd_hdr))  typedef int usb_cmd_fn(struct req_ctx *rctx);  extern int usb_hdlr_register(usb_cmd_fn *hdlr, u_int8_t class); +extern void usb_hdlr_unregister(u_int8_t class);  extern void usb_in_process(void);  extern void usb_out_process(void); diff --git a/openpcd/firmware/src/pcd/main_analog.c b/openpcd/firmware/src/pcd/main_analog.c index 45869e1..8ffa1d4 100644 --- a/openpcd/firmware/src/pcd/main_analog.c +++ b/openpcd/firmware/src/pcd/main_analog.c @@ -19,7 +19,6 @@  void _init_func(void)  { -	//udp_init();  	trigger_init();  	rc632_init();  	DEBUGPCRF("turning on RF"); diff --git a/openpcd/firmware/src/pcd/main_dumbreader.c b/openpcd/firmware/src/pcd/main_dumbreader.c index 9e20876..1535e27 100644 --- a/openpcd/firmware/src/pcd/main_dumbreader.c +++ b/openpcd/firmware/src/pcd/main_dumbreader.c @@ -12,8 +12,6 @@  void _init_func(void)  {  	rc632_init(); -	udp_init(); -	udp_open();  	rc632_test(RAH);  } diff --git a/openpcd/firmware/src/pcd/main_pwm.c b/openpcd/firmware/src/pcd/main_pwm.c index 85d304a..691c27d 100644 --- a/openpcd/firmware/src/pcd/main_pwm.c +++ b/openpcd/firmware/src/pcd/main_pwm.c @@ -95,8 +95,6 @@ void _init_func(void)  	pwm_duty_set_percent(0, 22);	/* 22% of 9.43uS = 2.07uS */  	rc632_modulate_mfin(); -	udp_init(); -  	DEBUGPCRF("Initializing SSC RX");  	ssc_rx_init();  } diff --git a/openpcd/firmware/src/pcd/main_reqa.c b/openpcd/firmware/src/pcd/main_reqa.c index 179b423..e28fdff 100644 --- a/openpcd/firmware/src/pcd/main_reqa.c +++ b/openpcd/firmware/src/pcd/main_reqa.c @@ -26,7 +26,6 @@  void _init_func(void)  { -	//udp_init();  	trigger_init();  	DEBUGPCRF("enabling RC632");  	rc632_init(); diff --git a/openpcd/firmware/src/pcd/pwm.c b/openpcd/firmware/src/pcd/pwm.c index ef1ee3f..e05699b 100644 --- a/openpcd/firmware/src/pcd/pwm.c +++ b/openpcd/firmware/src/pcd/pwm.c @@ -107,7 +107,7 @@ void pwm_duty_set_percent(int channel, u_int16_t duty)  static int pwm_usb_in(struct req_ctx *rctx)  {  	struct openpcd_hdr *poh = (struct openpcd_hdr *) &rctx->rx.data[0]; -	struct openpcd_hdr *pih = (struct openpcd_hdr *) &rctx->tx.data[0]; +	/* struct openpcd_hdr *pih = (struct openpcd_hdr *) &rctx->tx.data[0]; */  	u_int32_t *freq;  	switch (poh->cmd) { @@ -126,7 +126,7 @@ static int pwm_usb_in(struct req_ctx *rctx)  	case OPENPCD_CMD_PWM_FREQ_SET:  		if (rctx->rx.tot_len < sizeof(*poh)+4)  			break; -		freq = (void *) poh + sizeof(*poh); +		freq = (unsigned char *) poh + sizeof(*poh);  		pwm_freq_set(0, *freq);  		break;  	case OPENPCD_CMD_PWM_FREQ_GET: diff --git a/openpcd/firmware/src/pcd/rc632.c b/openpcd/firmware/src/pcd/rc632.c index 9fc7428..620d0a0 100644 --- a/openpcd/firmware/src/pcd/rc632.c +++ b/openpcd/firmware/src/pcd/rc632.c @@ -397,7 +397,7 @@ static int rc632_usb_in(struct req_ctx *rctx)  		break;  	case OPENPCD_CMD_READ_FIFO:  		{ -		u_int16_t req_len = poh->val, remain_len, pih_len; +		u_int16_t req_len = poh->val, remain_len = req_len, pih_len;  		if (req_len > MAX_PAYLOAD_LEN) {  			pih_len = MAX_PAYLOAD_LEN;  			remain_len -= pih_len; diff --git a/openpcd/firmware/src/start/Cstartup.S b/openpcd/firmware/src/start/Cstartup.S index 731d4c3..1c9f1db 100644 --- a/openpcd/firmware/src/start/Cstartup.S +++ b/openpcd/firmware/src/start/Cstartup.S @@ -19,11 +19,12 @@  //#define DEBUG_LL  #ifdef DEBUG_LL +/* Debugging macros for switching on/off LED1 (green) */  #define PIOA_PER	0xFFFFF400  #define PIOA_OER	0xFFFFF410  #define PIOA_SODR	0xFFFFF430  #define PIOA_CODR	0xFFFFF434 -#define LED1		25 +#define LED1		25		/* this only works on OpenPICC, not Olimex */  	.macro	led1on  		ldr	r2, =PIOA_CODR  		mov	r1, #(1 << LED1) | 
