From 1ba82b71074e31e0a9451e80c2de4bca2716adf2 Mon Sep 17 00:00:00 2001 From: laforge Date: Fri, 22 Sep 2006 22:10:46 +0000 Subject: make sure DFU loader always prints some informational / copyright message upon startup git-svn-id: https://svn.openpcd.org:2342/trunk@220 6dc7ffe9-61d6-0310-9af1-9938baff3ed1 --- firmware/Makefile.dfu | 4 ++-- firmware/src/dfu/dbgu.c | 24 ++++++++++++------------ firmware/src/dfu/dbgu.h | 12 +++++------- firmware/src/dfu/dfu.c | 18 +++++++++++------- 4 files changed, 30 insertions(+), 28 deletions(-) (limited to 'firmware') diff --git a/firmware/Makefile.dfu b/firmware/Makefile.dfu index d7ca713..99cd1b1 100644 --- a/firmware/Makefile.dfu +++ b/firmware/Makefile.dfu @@ -76,7 +76,7 @@ SRC = # List C source files here which must be compiled in ARM-Mode. # use file-extension c for "c-only"-files -SRCARM = src/start/Cstartup_SAM7.c \ +SRCARM = src/start/Cstartup_SAM7.c lib/lib_AT91SAM7.c \ src/dfu/dfu.c src/dfu/dbgu.c src/dfu/flash.c # List C++ source files here. @@ -101,7 +101,7 @@ ASRC = ASRCARM = src/start/Cstartup.S ifeq ($(DEBUG),1) -SRCARM += lib/lib_AT91SAM7.c lib/vsprintf.c lib/ctype.c lib/string.c +SRCARM += lib/vsprintf.c lib/ctype.c lib/string.c ASRCARM += lib/div64.S endif diff --git a/firmware/src/dfu/dbgu.c b/firmware/src/dfu/dbgu.c index 367a399..9bfefc3 100644 --- a/firmware/src/dfu/dbgu.c +++ b/firmware/src/dfu/dbgu.c @@ -24,8 +24,6 @@ #include #include -#ifdef DEBUG - #define USART_SYS_LEVEL 4 void AT91F_DBGU_Ready(void) { @@ -70,7 +68,6 @@ void AT91F_DBGU_Init(void) DBGU_irq_handler); AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_SYS); - AT91F_DBGU_Printk("\n\rsam7dfu (C) 2006 by Harald Welte\n\r"); } void AT91F_DBGU_Printk(char *buffer) @@ -81,6 +78,18 @@ void AT91F_DBGU_Printk(char *buffer) } } +int AT91F_DBGU_Get(char *val) +{ + if ((AT91F_US_RxReady((AT91PS_USART) AT91C_BASE_DBGU)) == 0) + return (0); + else { + *val = AT91F_US_GetChar((AT91PS_USART) AT91C_BASE_DBGU); + return (-1); + } +} + +#ifdef DEBUG + void AT91F_DBGU_Frame(char *buffer) { unsigned char len; @@ -91,15 +100,6 @@ void AT91F_DBGU_Frame(char *buffer) (unsigned char *)buffer, len, 0, 0); } -int AT91F_DBGU_Get(char *val) -{ - if ((AT91F_US_RxReady((AT91PS_USART) AT91C_BASE_DBGU)) == 0) - return (0); - else { - *val = AT91F_US_GetChar((AT91PS_USART) AT91C_BASE_DBGU); - return (-1); - } -} const char * hexdump(const void *data, unsigned int len) diff --git a/firmware/src/dfu/dbgu.h b/firmware/src/dfu/dbgu.h index 9f4f002..358a066 100644 --- a/firmware/src/dfu/dbgu.h +++ b/firmware/src/dfu/dbgu.h @@ -7,21 +7,19 @@ #define DEBUGPCR(x, args ...) DEBUGP(x "\r\n", ## args) #define DEBUGPCRF(x, args ...) DEBUGPCR("%s(%d): " x, __FUNCTION__, __LINE__, ## args) +extern void AT91F_DBGU_Init(void); +extern void AT91F_DBGU_Printk(char *buffer); +extern int AT91F_DBGU_Get(char *val); +extern void AT91F_DBGU_Ready(void); + #ifdef DEBUG extern void debugp(const char *format, ...); extern const char *hexdump(const void *data, unsigned int len); -extern void AT91F_DBGU_Init(void); -extern void AT91F_DBGU_Printk(char *buffer); extern void AT91F_DBGU_Frame(char *buffer); -extern int AT91F_DBGU_Get(char *val); #else #define debugp(x, args ...) #define hexdump(x, args ...) -#define AT91F_DBGU_Get(x, args ...) 0; #define AT91F_DBGU_Frame(x) -#define AT91F_DBGU_Printk(x) -#define AT91F_DBGU_Init() -#define AT91F_DBGU_Ready() #endif #endif /* dbgu_h */ diff --git a/firmware/src/dfu/dfu.c b/firmware/src/dfu/dfu.c index 693f2eb..7e7c575 100644 --- a/firmware/src/dfu/dfu.c +++ b/firmware/src/dfu/dfu.c @@ -808,7 +808,6 @@ static __dfufunc void dfu_udp_irq(void) AT91F_AIC_ClearIt(AT91C_BASE_AIC, AT91C_ID_UDP); - { volatile int i; for (i=0; i< 0x3ff; i++) ; } led1off(); } @@ -817,6 +816,7 @@ static void dfu_switch(void) { AT91PS_AIC pAic = AT91C_BASE_AIC; + DEBUGE("\r\nsam7dfu: switching to DFU mode\r\n"); AT91F_PIO_CfgOutput(AT91C_BASE_PIOA, OPENPCD_PIO_LED1); AT91F_PIO_CfgOutput(AT91C_BASE_PIOA, OPENPCD_PIO_LED2); led1off(); @@ -830,6 +830,9 @@ static void dfu_switch(void) pAic->AIC_SVR[AT91C_ID_UDP] = (unsigned int) &dfu_udp_irq; dfu_state = DFU_STATE_dfuIDLE; dfu_status = DFU_STATUS_OK; + //AT91F_DBGU_Printk("You may now start the DFU up/download process\r\n"); + AT91F_DBGU_Printk("\r\nTHIS DOES NOT WORK YET, " + " PLEASE PUSH THE BUTTON WHILE POWERING UP\r\n"); } void __dfufunc dfu_main(void) @@ -840,11 +843,12 @@ void __dfufunc dfu_main(void) led2off(); AT91F_DBGU_Init(); - DEBUGE("sam7dfu startup\r\n"); - - AT91F_DBGU_Printk("\n\r"); - AT91F_DBGU_Printk(COMPILE_DATE " " COMPILE_BY " " COMPILE_SVNREV); - AT91F_DBGU_Printk("\n\r"); + AT91F_DBGU_Printk("\n\r\n\rsam7dfu - AT91SAM7 USB DFU bootloader\n\r" + "(C) 2006 by Harald Welte \n\r" + "This software is FREE SOFTWARE licensed under GNU GPL\n\r"); + AT91F_DBGU_Printk("Version " COMPILE_SVNREV + " compiled " COMPILE_DATE + " by " COMPILE_BY "\n\r\n\r"); udp_init(); @@ -871,7 +875,7 @@ void __dfufunc dfu_main(void) flash_init(); - DEBUGE("sam7dfu entering main loop\r\n"); + AT91F_DBGU_Printk("You may now start the DFU up/download process\r\n"); /* do nothing, since all of DFU is interrupt driven */ while (1) ; } -- cgit v1.2.3