• Пытаюсь собрать прошивку для stm32. Ошибка "src/core_cm3.c: Assembler messages"?

    @Tolsedum Автор вопроса
    Запустил компиляцию через arm-linux-gnueabi-g++, c указанием устройства с посощью флага '-mcpu'. Появилась неприятность, связанная с ошибкой в файле core_cm3.c.

    /tmp/cc1tAFNo.s:930: Error: registers may not be the same -- `strexb r3,r2,[r3]'
    /tmp/cc1tAFNo.s:985: Error: registers may not be the same -- `strexh r3,r2,[r3]'


    Дело в том что при использовании команд strexb и strexh, нельзя задействовать один и тот-же регистр. Пришлось исправить файл, следующим образом:

    uint32_t __STREXB(uint8_t value, uint8_t *addr)
    {
       uint32_t result=0;
      
      //  __ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
       __ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
       return(result);
    }
    
    uint32_t __STREXH(uint16_t value, uint16_t *addr)
    {
       uint32_t result=0;
      
      //  __ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
       __ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value));
       return(result);
    }


    После компеляции прошил устройство, но светодиод моргать не захотел. Буду разбираться дальше.
    Спасибо за помощь!
    Написано