@@ -68,12 +68,12 @@ static const uint8_t loader_code_stm32f0[] = {
68
68
0x14 , 0x00 , 0x00 , 0x00
69
69
};
70
70
71
- // flashloaders/stm32lx.s
71
+ // flashloaders/stm32lx.s -- compiled for armv6-m for compatibility with both
72
+ // armv6-m cores (STM32L0) and armv7-m cores (STM32L1)
72
73
static const uint8_t loader_code_stm32lx [] = {
73
74
0x04 , 0x68 , 0x0c , 0x60 ,
74
- 0x00 , 0xf1 , 0x04 , 0x00 ,
75
- 0x01 , 0xf1 , 0x04 , 0x01 ,
76
- 0x04 , 0x3a , 0xf7 , 0xdc ,
75
+ 0x04 , 0x30 , 0x04 , 0x31 ,
76
+ 0x04 , 0x3a , 0xf9 , 0xdc ,
77
77
0x00 , 0xbe , 0x00 , 0x00
78
78
};
79
79
@@ -428,12 +428,11 @@ int32_t stlink_flash_loader_run(stlink_t *sl, flash_loader_t* fl, stm32_addr_t t
428
428
#define L1_WRITE_BLOCK_SIZE 0x80
429
429
#define L0_WRITE_BLOCK_SIZE 0x40
430
430
431
- int32_t stm32l1_write_half_pages (stlink_t * sl , stm32_addr_t addr , uint8_t * base , uint32_t len , uint32_t pagesize ) {
431
+ int32_t stm32l1_write_half_pages (stlink_t * sl , flash_loader_t * fl , stm32_addr_t addr , uint8_t * base , uint32_t len , uint32_t pagesize ) {
432
432
uint32_t count , off ;
433
433
uint32_t num_half_pages = len / pagesize ;
434
434
uint32_t val ;
435
435
uint32_t flash_regs_base = get_stm32l0_flash_base (sl );
436
- flash_loader_t fl ;
437
436
bool use_loader = true;
438
437
int32_t ret = 0 ;
439
438
@@ -448,7 +447,7 @@ int32_t stm32l1_write_half_pages(stlink_t *sl, stm32_addr_t addr, uint8_t *base,
448
447
449
448
for (count = 0 ; count < num_half_pages ; count ++ ) {
450
449
if (use_loader ) {
451
- ret = stlink_flash_loader_run (sl , & fl , addr + count * pagesize , base + count * pagesize , pagesize );
450
+ ret = stlink_flash_loader_run (sl , fl , addr + count * pagesize , base + count * pagesize , pagesize );
452
451
if (ret && count == 0 ) {
453
452
/* It seems that stm32lx devices have a problem when it is blank */
454
453
WLOG ("Failed to use flash loader, fallback to soft write\n" );
@@ -770,7 +769,7 @@ int32_t stlink_flashloader_write(stlink_t *sl, flash_loader_t *fl, stm32_addr_t
770
769
off = 0 ;
771
770
772
771
if (len > pagesize ) {
773
- if (stm32l1_write_half_pages (sl , addr , base , len , pagesize )) {
772
+ if (stm32l1_write_half_pages (sl , fl , addr , base , len , pagesize )) {
774
773
return (-1 );
775
774
} else {
776
775
off = (size_t )(len / pagesize ) * pagesize ;
0 commit comments