diff --git a/firmware/atmel_softpack_libraries/libchip_sam3s/source/flashd.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/flashd.c index 6247139d..e11c2abf 100644 --- a/firmware/atmel_softpack_libraries/libchip_sam3s/source/flashd.c +++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/flashd.c @@ -151,7 +151,10 @@ static void ComputeLockRange( uint32_t dwStart, uint32_t dwEnd, uint32_t *pdwAct extern void FLASHD_Initialize( uint32_t dwMCk, uint32_t dwUseIAP ) { EFC_DisableFrdyIt( EFC ) ; - +#if 1 + /* See Revision A errata 46.1.1.3 */ + EFC_SetWaitState(EFC, 6); +#else if ( (dwMCk/1000000) >= 64 ) { EFC_SetWaitState( EFC, 2 ) ; @@ -167,7 +170,7 @@ extern void FLASHD_Initialize( uint32_t dwMCk, uint32_t dwUseIAP ) EFC_SetWaitState( EFC, 0 ) ; } } - +#endif _dwUseIAP=dwUseIAP ; } diff --git a/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_driver.c b/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_driver.c index 71529de6..f5e7c828 100644 --- a/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_driver.c +++ b/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_driver.c @@ -459,6 +459,8 @@ void USBDFU_SwitchToApp(void) /* make sure the MAGIC is not set to enter DFU again */ *(unsigned int *)USB_DFU_MAGIC_ADDR = 0; + printf("switching to app\r\n"); + /* disconnect from USB to ensure re-enumeration */ USBD_Disconnect(); diff --git a/firmware/libboard/common/source/board_cstartup_gnu.c b/firmware/libboard/common/source/board_cstartup_gnu.c index 17592b03..d5cb8bf7 100644 --- a/firmware/libboard/common/source/board_cstartup_gnu.c +++ b/firmware/libboard/common/source/board_cstartup_gnu.c @@ -133,6 +133,9 @@ static void BootIntoApp(void) pSrc = (unsigned int *) ((unsigned char *)IFLASH_ADDR + BOARD_DFU_BOOT_SIZE); SCB->VTOR = ((unsigned int)(pSrc)) | (0x0 << 7); appReset = pSrc[1]; + + printf("Booting into App from %p, PC=%p\r\n", pSrc, appReset); + appReset(); } #endif