Új hozzászólás Aktív témák

  • CPT.Pirk

    Jómunkásember

    Sziasztok!

    Mikrovezérlőben van egy delay függvényünk, ami asm-ben van írva és azt használjuk késleltetésre. Ez a függvény jól működik, viszont ha USB-t is használunk akkor a GCC O3-as optimalizációjával vagy bekapcsolt LTO-val nem jön létre az USB eszköz, míg minden más beállításban igen és jól is működik.

    Azt gyanítjuk, hogy az O3 optimalizálás csinál valamit ezzel az asm kóddal és az időzítés nem lesz kellően pontos, arra pedig érzékeny az USB.

    __attribute __((naked))
    void delay_loop (unsigned n)
    {
    __asm volatile ("1: sub r0, #1");
    __asm volatile (" bne 1b");
    __asm volatile (" bx 1r");
    }

    Szerintetek?

    Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

Új hozzászólás Aktív témák