Arduino IDE - STM32 spolupráca C a ASM

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
styro
Stály člen
Stály člen
Príspevky: 137
Dátum registrácie: 14 Dec 2012, 14:10
Bydlisko: TT, BA

Arduino IDE - STM32 spolupráca C a ASM

Príspevok od používateľa styro » 13 Nov 2019, 02:48

Zdravím všetkých. Hľadám, hľadám, ale nič rozumné nenachádzam, tak sa skúsim opýtať tu.
Dá sa nejako jednoducho volať assemblerovský podprogram z programu napísaného v C v prostredí Arduino IDE?
Trochu podrobnejšie: mám dosku bluepill s STM32F103 a v Arduino IDE dohrané veci okolo toho. Programovanie v C ide v pohode, aj používanie knižníc. Ale keďže ma chytá nostalgia po assembleri (ešte z doby ZX Spectra so Z80kou), rád by som si nejakú obsluhu HW napísal aj v strojáku. Zopár informácií som aj našiel, ale všetky sa týkali AVR a nie STM. Tak by som rád vedel, či je to možné nejako jednoducho vyriešiť.
Ja si to predstavujem asi takto (možno trochu naivne): podprogramy by boli umiestnené v samostatnom súbore s príponou .S a boli by stanovené nejaké pravidlá, napr.:
- R0 a R1 sa použijú na prenos hodnôt z C s obmedzením na 32bit int
- R2 až R5 sa pred použitím musia uchovať a pred návratom obnoviť
- R6 až R10 sú k dispozícii a netreba ich uchovávať
- návratová hodnota do C programu by sa prevzala z R0
Použitie by vyzeralo asi takto:
v C (bez deklarovania): a = 3; b = 4; c = sucet (a, b);
v strojáku: sucet {ADD R0, R1};
Je také niečo reálne alebo sa mám prebudiť zo sna? :D
0

Používateľov profilový obrázok
lucky62
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1151
Dátum registrácie: 14 Feb 2012, 20:16
Bydlisko: Liptovský Mikuláš, SK

Re: Arduino IDE - STM32 spolupráca C a ASM

Príspevok od používateľa lucky62 » 13 Nov 2019, 05:19

Tak hlavne treba naštudovať vlastnosti použitého kompilátora/linkera.

Všeobecne by nemal byť problém napísať nejaký modul/funkciu v assembleri (ale aj hocijakom inom jazyku).
Je nutné to skompilovať (či už tým istým kompilátorom, alebo externým) do tvaru, aby to linker potom vedel dať dokopy.

O nejakých registroch by som neuvažoval, malo by byť napísané v dokumentácii kompilátora/linkera aký je inerface pri volaní externých funkcií.

Ešte nejaké čítanie k téme:
Programming Arduino in assembly language
Closed source *.a lib with Arduino, linking issue
0
....môj bazar....

...Nikdy sa nehádaj s blbcom...

Používateľov profilový obrázok
lucky62
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1151
Dátum registrácie: 14 Feb 2012, 20:16
Bydlisko: Liptovský Mikuláš, SK

Re: Arduino IDE - STM32 spolupráca C a ASM

Príspevok od používateľa lucky62 » 13 Nov 2019, 06:38

Ešte som zabudol, je nutné spomenúť funkciu ASM()...
0
....môj bazar....

...Nikdy sa nehádaj s blbcom...

Používateľov profilový obrázok
styro
Stály člen
Stály člen
Príspevky: 137
Dátum registrácie: 14 Dec 2012, 14:10
Bydlisko: TT, BA

Re: Arduino IDE - STM32 spolupráca C a ASM

Príspevok od používateľa styro » 14 Nov 2019, 18:13

No ja som tajne dúfal, že to má Arduino IDE už nejako poriešené. Aj som niečo našiel, ale týkalo sa to klasického AVR a nie STM. A snažiť sa naštudovať spoluprácu kompiler linker kvôli pár strojákovým blbinkám je trochu masochizmus zaváňajúci problémami. Tak si to teda odpustím a tých pár (samostatných) rutiniek v strojáku pre potechu si napíšem v Keil.
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok