Merge commit '231d42d58172a2169d99c6e618192ac0d514d3b9' into sam-update
This commit is contained in:
commit
95655b838e
@ -79,10 +79,12 @@ def stm32_manifest(dev):
|
|||||||
sleep(status.bwPollTimeout / 1000.0)
|
sleep(status.bwPollTimeout / 1000.0)
|
||||||
if status.bState == dfu.STATE_DFU_MANIFEST:
|
if status.bState == dfu.STATE_DFU_MANIFEST:
|
||||||
break
|
break
|
||||||
def stm32_scan(args):
|
def stm32_scan(args, test):
|
||||||
devs = dfu.finddevs()
|
devs = dfu.finddevs()
|
||||||
bmp = 0
|
bmp = 0
|
||||||
if not devs:
|
if not devs:
|
||||||
|
if test == True:
|
||||||
|
return
|
||||||
print "No DFU devices found!"
|
print "No DFU devices found!"
|
||||||
exit(-1)
|
exit(-1)
|
||||||
|
|
||||||
@ -91,9 +93,13 @@ def stm32_scan(args):
|
|||||||
man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
|
man = dfudev.handle.getString(dfudev.dev.iManufacturer, 30)
|
||||||
if man == "Black Sphere Technologies": bmp = bmp + 1
|
if man == "Black Sphere Technologies": bmp = bmp + 1
|
||||||
if bmp == 0 :
|
if bmp == 0 :
|
||||||
|
if test == True:
|
||||||
|
return
|
||||||
print "No compatible device found\n"
|
print "No compatible device found\n"
|
||||||
exit(-1)
|
exit(-1)
|
||||||
if bmp > 1 and not args.serial_target :
|
if bmp > 1 and not args.serial_target :
|
||||||
|
if test == True:
|
||||||
|
return
|
||||||
print "Found multiple devices:\n"
|
print "Found multiple devices:\n"
|
||||||
for dev in devs:
|
for dev in devs:
|
||||||
dfudev = dfu.dfu_device(*dev)
|
dfudev = dfu.dfu_device(*dev)
|
||||||
@ -138,7 +144,7 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument("-a", "--address", help="Start address for firmware")
|
parser.add_argument("-a", "--address", help="Start address for firmware")
|
||||||
parser.add_argument("-m", "--manifest", help="Start application, if in DFU mode", action='store_true')
|
parser.add_argument("-m", "--manifest", help="Start application, if in DFU mode", action='store_true')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
dfudev = stm32_scan(args)
|
dfudev = stm32_scan(args, False)
|
||||||
try:
|
try:
|
||||||
state = dfudev.get_state()
|
state = dfudev.get_state()
|
||||||
except:
|
except:
|
||||||
@ -153,7 +159,7 @@ if __name__ == "__main__":
|
|||||||
while True :
|
while True :
|
||||||
sleep(0.5)
|
sleep(0.5)
|
||||||
timeout = timeout + 0.5
|
timeout = timeout + 0.5
|
||||||
dfudev = stm32_scan(args)
|
dfudev = stm32_scan(args, True)
|
||||||
if dfudev: break
|
if dfudev: break
|
||||||
if timeout > 5 :
|
if timeout > 5 :
|
||||||
print "Error: DFU device did not appear"
|
print "Error: DFU device did not appear"
|
||||||
|
@ -62,7 +62,7 @@ void platform_init(void)
|
|||||||
scb_reset_core();
|
scb_reset_core();
|
||||||
}
|
}
|
||||||
|
|
||||||
rcc_clock_setup_hse_3v3(&hse_8mhz_3v3[CLOCK_3V3_48MHZ]);
|
rcc_clock_setup_hse_3v3(&rcc_hse_8mhz_3v3[RCC_CLOCK_3V3_48MHZ]);
|
||||||
|
|
||||||
/* Enable peripherals */
|
/* Enable peripherals */
|
||||||
rcc_periph_clock_enable(RCC_OTGFS);
|
rcc_periph_clock_enable(RCC_OTGFS);
|
||||||
|
@ -46,7 +46,7 @@ void platform_init(void)
|
|||||||
scb_reset_core();
|
scb_reset_core();
|
||||||
}
|
}
|
||||||
|
|
||||||
rcc_clock_setup_hse_3v3(&hse_8mhz_3v3[CLOCK_3V3_48MHZ]);
|
rcc_clock_setup_hse_3v3(&rcc_hse_8mhz_3v3[RCC_CLOCK_3V3_48MHZ]);
|
||||||
|
|
||||||
/* Enable peripherals */
|
/* Enable peripherals */
|
||||||
rcc_peripheral_enable_clock(&RCC_AHB2ENR, RCC_AHB2ENR_OTGFSEN);
|
rcc_peripheral_enable_clock(&RCC_AHB2ENR, RCC_AHB2ENR_OTGFSEN);
|
||||||
@ -103,4 +103,3 @@ void platform_request_boot(void)
|
|||||||
SYSCFG_MEMRM &= ~3;
|
SYSCFG_MEMRM &= ~3;
|
||||||
SYSCFG_MEMRM |= 1;
|
SYSCFG_MEMRM |= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,6 +173,8 @@ jtagtap_tdi_tdo_seq(uint8_t *DO, const uint8_t final_tms, const uint8_t *DI, int
|
|||||||
/*if(rsize) printf("%02X ", tmp[index]);*/
|
/*if(rsize) printf("%02X ", tmp[index]);*/
|
||||||
*DO++ = tmp[index++];
|
*DO++ = tmp[index++];
|
||||||
}
|
}
|
||||||
|
if (rticks == 0)
|
||||||
|
*DO++ = 0;
|
||||||
if(final_tms) {
|
if(final_tms) {
|
||||||
rticks++;
|
rticks++;
|
||||||
*(--DO) >>= 1;
|
*(--DO) >>= 1;
|
||||||
|
@ -222,7 +222,7 @@ static void adc_init(void)
|
|||||||
gpio_set_mode(GPIOB, GPIO_MODE_INPUT,
|
gpio_set_mode(GPIOB, GPIO_MODE_INPUT,
|
||||||
GPIO_CNF_INPUT_ANALOG, GPIO0);
|
GPIO_CNF_INPUT_ANALOG, GPIO0);
|
||||||
|
|
||||||
adc_off(ADC1);
|
adc_power_off(ADC1);
|
||||||
adc_disable_scan_mode(ADC1);
|
adc_disable_scan_mode(ADC1);
|
||||||
adc_set_single_conversion_mode(ADC1);
|
adc_set_single_conversion_mode(ADC1);
|
||||||
adc_disable_external_trigger_regular(ADC1);
|
adc_disable_external_trigger_regular(ADC1);
|
||||||
@ -236,7 +236,7 @@ static void adc_init(void)
|
|||||||
__asm__("nop");
|
__asm__("nop");
|
||||||
|
|
||||||
adc_reset_calibration(ADC1);
|
adc_reset_calibration(ADC1);
|
||||||
adc_calibration(ADC1);
|
adc_calibrate(ADC1);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *platform_target_voltage(void)
|
const char *platform_target_voltage(void)
|
||||||
|
@ -128,7 +128,7 @@
|
|||||||
GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, USBUSART_TX_PIN); \
|
GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, USBUSART_TX_PIN); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
#define USB_DRIVER stm32f103_usb_driver
|
#define USB_DRIVER st_usbfs_v1_usb_driver
|
||||||
#define USB_IRQ NVIC_USB_LP_CAN_RX0_IRQ
|
#define USB_IRQ NVIC_USB_LP_CAN_RX0_IRQ
|
||||||
#define USB_ISR usb_lp_can_rx0_isr
|
#define USB_ISR usb_lp_can_rx0_isr
|
||||||
/* Interrupt priorities. Low numbers are high priority.
|
/* Interrupt priorities. Low numbers are high priority.
|
||||||
|
@ -60,7 +60,7 @@ int main(void)
|
|||||||
gpio_set_mode(LED_PORT, GPIO_MODE_OUTPUT_2_MHZ,
|
gpio_set_mode(LED_PORT, GPIO_MODE_OUTPUT_2_MHZ,
|
||||||
GPIO_CNF_OUTPUT_PUSHPULL, LED_0 | LED_1 | LED_2);
|
GPIO_CNF_OUTPUT_PUSHPULL, LED_0 | LED_1 | LED_2);
|
||||||
|
|
||||||
dfu_init(&stm32f103_usb_driver, DFU_MODE);
|
dfu_init(&st_usbfs_v1_usb_driver, DFU_MODE);
|
||||||
|
|
||||||
/* Configure the USB pull up pin. */
|
/* Configure the USB pull up pin. */
|
||||||
gpio_set(GPIOA, GPIO8);
|
gpio_set(GPIOA, GPIO8);
|
||||||
|
@ -58,7 +58,7 @@ int main(void)
|
|||||||
|
|
||||||
if (rev > 1) /* Reconnect USB */
|
if (rev > 1) /* Reconnect USB */
|
||||||
gpio_set(GPIOA, GPIO15);
|
gpio_set(GPIOA, GPIO15);
|
||||||
dfu_init(&stm32f103_usb_driver, UPD_MODE);
|
dfu_init(&st_usbfs_v1_usb_driver, UPD_MODE);
|
||||||
|
|
||||||
dfu_main();
|
dfu_main();
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@
|
|||||||
gpio_set_mode(USBUSART_PORT, GPIO_MODE_OUTPUT_2_MHZ, \
|
gpio_set_mode(USBUSART_PORT, GPIO_MODE_OUTPUT_2_MHZ, \
|
||||||
GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, USBUSART_TX_PIN);
|
GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, USBUSART_TX_PIN);
|
||||||
|
|
||||||
#define USB_DRIVER stm32f103_usb_driver
|
#define USB_DRIVER st_usbfs_v1_usb_driver
|
||||||
#define USB_IRQ NVIC_USB_LP_CAN_RX0_IRQ
|
#define USB_IRQ NVIC_USB_LP_CAN_RX0_IRQ
|
||||||
#define USB_ISR usb_lp_can_rx0_isr
|
#define USB_ISR usb_lp_can_rx0_isr
|
||||||
/* Interrupt priorities. Low numbers are high priority.
|
/* Interrupt priorities. Low numbers are high priority.
|
||||||
|
@ -75,7 +75,7 @@ uint32_t detect_rev(void)
|
|||||||
rev = 1;
|
rev = 1;
|
||||||
/* On Rev > 0 unconditionally activate MCO on PORTA8 with HSE! */
|
/* On Rev > 0 unconditionally activate MCO on PORTA8 with HSE! */
|
||||||
RCC_CFGR &= ~(0xf << 24);
|
RCC_CFGR &= ~(0xf << 24);
|
||||||
RCC_CFGR |= (RCC_CFGR_MCO_HSECLK << 24);
|
RCC_CFGR |= (RCC_CFGR_MCO_HSE << 24);
|
||||||
gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ,
|
gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ,
|
||||||
GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO8);
|
GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO8);
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ int main(void)
|
|||||||
|
|
||||||
if (rev > 1)
|
if (rev > 1)
|
||||||
gpio_set(GPIOA, GPIO15);
|
gpio_set(GPIOA, GPIO15);
|
||||||
dfu_init(&stm32f103_usb_driver, DFU_MODE);
|
dfu_init(&st_usbfs_v1_usb_driver, DFU_MODE);
|
||||||
|
|
||||||
dfu_main();
|
dfu_main();
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ void traceswo_init(void)
|
|||||||
timer_ic_set_polarity(TRACE_TIM, TIM_IC2, TIM_IC_FALLING);
|
timer_ic_set_polarity(TRACE_TIM, TIM_IC2, TIM_IC_FALLING);
|
||||||
|
|
||||||
/* Trigger on Filtered Timer Input 1 (TI1FP1) */
|
/* Trigger on Filtered Timer Input 1 (TI1FP1) */
|
||||||
timer_slave_set_trigger(TRACE_TIM, TIM_SMCR_TS_IT1FP1);
|
timer_slave_set_trigger(TRACE_TIM, TIM_SMCR_TS_TI1FP1);
|
||||||
|
|
||||||
/* Slave reset mode: reset counter on trigger */
|
/* Slave reset mode: reset counter on trigger */
|
||||||
timer_slave_set_mode(TRACE_TIM, TIM_SMCR_SMS_RM);
|
timer_slave_set_mode(TRACE_TIM, TIM_SMCR_SMS_RM);
|
||||||
|
@ -72,7 +72,7 @@ void usbuart_init(void)
|
|||||||
timer_set_mode(USBUSART_TIM, TIM_CR1_CKD_CK_INT,
|
timer_set_mode(USBUSART_TIM, TIM_CR1_CKD_CK_INT,
|
||||||
TIM_CR1_CMS_EDGE, TIM_CR1_DIR_UP);
|
TIM_CR1_CMS_EDGE, TIM_CR1_DIR_UP);
|
||||||
timer_set_prescaler(USBUSART_TIM,
|
timer_set_prescaler(USBUSART_TIM,
|
||||||
rcc_ppre2_frequency / USBUART_TIMER_FREQ_HZ * 2 - 1);
|
rcc_apb2_frequency / USBUART_TIMER_FREQ_HZ * 2 - 1);
|
||||||
timer_set_period(USBUSART_TIM,
|
timer_set_period(USBUSART_TIM,
|
||||||
USBUART_TIMER_FREQ_HZ / USBUART_RUN_FREQ_HZ - 1);
|
USBUART_TIMER_FREQ_HZ / USBUART_RUN_FREQ_HZ - 1);
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@
|
|||||||
GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, USBUSART_TX_PIN); \
|
GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, USBUSART_TX_PIN); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define USB_DRIVER stm32f103_usb_driver
|
#define USB_DRIVER st_usbfs_v1_usb_driver
|
||||||
#define USB_IRQ NVIC_USB_LP_CAN_RX0_IRQ
|
#define USB_IRQ NVIC_USB_LP_CAN_RX0_IRQ
|
||||||
#define USB_ISR usb_lp_can_rx0_isr
|
#define USB_ISR usb_lp_can_rx0_isr
|
||||||
/* Interrupt priorities. Low numbers are high priority.
|
/* Interrupt priorities. Low numbers are high priority.
|
||||||
|
@ -83,7 +83,7 @@ int main(void)
|
|||||||
systick_interrupt_enable();
|
systick_interrupt_enable();
|
||||||
systick_counter_enable();
|
systick_counter_enable();
|
||||||
|
|
||||||
dfu_init(&stm32f103_usb_driver, DFU_MODE);
|
dfu_init(&st_usbfs_v1_usb_driver, DFU_MODE);
|
||||||
|
|
||||||
dfu_main();
|
dfu_main();
|
||||||
}
|
}
|
||||||
|
@ -199,7 +199,8 @@ int target_flash_erase(target *t, target_addr addr, size_t len)
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
while (len) {
|
while (len) {
|
||||||
struct target_flash *f = flash_for_addr(t, addr);
|
struct target_flash *f = flash_for_addr(t, addr);
|
||||||
size_t tmplen = MIN(len, f->length - (addr % f->length));
|
size_t tmptarget = MIN(addr + len, f->start + f->length);
|
||||||
|
size_t tmplen = tmptarget - addr;
|
||||||
ret |= f->erase(f, addr, tmplen);
|
ret |= f->erase(f, addr, tmplen);
|
||||||
addr += tmplen;
|
addr += tmplen;
|
||||||
len -= tmplen;
|
len -= tmplen;
|
||||||
@ -213,16 +214,18 @@ int target_flash_write(target *t,
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
while (len) {
|
while (len) {
|
||||||
struct target_flash *f = flash_for_addr(t, dest);
|
struct target_flash *f = flash_for_addr(t, dest);
|
||||||
size_t tmplen = MIN(len, f->length - (dest % f->length));
|
size_t tmptarget = MIN(dest + len, f->start + f->length);
|
||||||
|
size_t tmplen = tmptarget - dest;
|
||||||
if (f->align > 1) {
|
if (f->align > 1) {
|
||||||
uint32_t offset = dest % f->align;
|
uint32_t offset = dest % f->align;
|
||||||
uint8_t data[ALIGN(offset + len, f->align)];
|
uint8_t data[ALIGN(offset + tmplen, f->align)];
|
||||||
memset(data, f->erased, sizeof(data));
|
memset(data, f->erased, sizeof(data));
|
||||||
memcpy((uint8_t *)data + offset, src, len);
|
memcpy((uint8_t *)data + offset, src, tmplen);
|
||||||
ret |= f->write(f, dest - offset, data, sizeof(data));
|
ret |= f->write(f, dest - offset, data, sizeof(data));
|
||||||
} else {
|
} else {
|
||||||
ret |= f->write(f, dest, src, tmplen);
|
ret |= f->write(f, dest, src, tmplen);
|
||||||
}
|
}
|
||||||
|
dest += tmplen;
|
||||||
src += tmplen;
|
src += tmplen;
|
||||||
len -= tmplen;
|
len -= tmplen;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user