IAP with USB usage
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2014-04-30 1:39 AM
Posted on April 30, 2014 at 10:39
Hello List,
I have a working IAP program that uses USB to upload new code. See http://fwnhousing.rug.nl/stm-test for the code. The project IAPtest contains the code, including an example to upload new code, using the linux command ./sendcode <bin-file> There is however a problem when I want to use USB in the code to upload DIRECTLY after flashing new code. If after uploading a reset is performed the newcode (including USB use) is working perfectly! Here a fragment of the IAPtest code:mode = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0);
if (!mode) {
// we want to flash new code
usb_init();
if ((i=getcode()) != 0) {
while (1) {
GPIO_ToggleBits(LED_RED_GPIO_PORT, LED_RED_PIN);
delay(100);
}
// to give usb time to settle, 100 seems ok
delay(100);
NVIC_DisableIRQ(OTG_FS_WKUP_IRQn);
NVIC_DisableIRQ(OTG_FS_IRQn);
}
}
/* Test if user code is programmed starting from address ''APPLICATION_ADDRESS'' */
if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20020000)
{
/* Jump to user application */
JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
Jump_To_Application();
}
The problem is of course that USB code is used in uploading and after that in the uploaded code.
How do I ''reset'' the USB code after ''getcode()'' so it later can we initialized again in the newcode?
In this version I try to disable the USB interrupts, but that clearly is not enough.
Hopefully someone can shed some light on this.
Thanks in advance,
Sietse
#iap-usb
Labels:
- Labels:
-
USB
2 REPLIES 2
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2014-04-30 2:03 AM
Posted on April 30, 2014 at 11:03
Hi
// force a USB soft disconnect USB_OTG_dev.regs.DREGS->DCTL |= 0x02;Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2014-05-01 12:10 AM
Posted on May 01, 2014 at 09:10
That did it!
Thanks