Hirdetés

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

  • Teasüti

    nagyúr

    válasz _q #9273 üzenetére

    Nem tartom valószínűnek, h összeakadnak a folyamatszálak. Arduino-ból kiindulva esélyesebb, h az I2C könyvtár bénázik el vmit, egyáltalán nem lepne meg.
    Meg kéne nézni a busz forgalmát, h tudjuk mi történik.

    Ha az általad javasolt szerint, mindent áttennék core 1-re, mivel ugye minden ciklikus, akkor a core 0á-n semmi se lenne
    Tévedés. Azon fut a FreeRTOS, meg az összes periféria mint írtam volt. Miért érzed szükségét multitask programot írni? Ha le tudod programozni lineárisan (és Arduino főként erre épít), akkor miért akarod szívatni magad több szálas kóddal? Nem tűnik indokoltnak erre a feladatra.

    Vagy esetleg csináljam azt, hogy core 1-en futtassak egy task-ot, ami ütemezi a core 0-án a taskokat, amiket 1x meghívok, majd törlöm? Így is ciklikus lesz, de task szempontból 1x fut csak le.
    Én így programozom. Nekem így tűnik logikusak. Mivel a nulladik magon nem szabad blokkolni, ezért célszerű minél rövidebb kódokat idehelyezni. Vagy ami ritkán fut le, pl megszakításra csak rendszertelen időközönként. Olyat ami mellett sok üresjárat van. Amit egy magos procinál megszakítással kezelnék, azt itt a nulladik magon párhuzamosítva.

    Ennél jobban nem igazán használom ki.
    Meg én nem is akarok nagyon belemászni a párhuzamosításba. Én inkább csak két egymástól független kódot választanék külön, amik teljesen különböző erőforrásokhoz férnek hozzá. Pl amit én bütykölök: motorkerékpár perifériái egymástól függetlenül működ(het)nek, van úgy 5-6 jól elkülöníthető feladat, amik ugyan használhatják ugyanazokat a szenzoradatokat, de a logikájuk egymástól teljesen független és így adja magát a párhuzamosítás. Mondjuk történik egy megszakítás amikor rálépek a fékre és ez meghív egy függvényt, ami külön folyamatként fut le a nulladik magon, aztán törlődik.
    De semmi köze ahhoz a folyamathoz, ami mondjuk a ledszalagokat kezeli. Ez meg egy viszonylag számításigényesebb feladat, egy primitív grafikus motor dupla pufferes futószalaggal és FPS-ben mérem a futási teljesítményét. Ez az első magon fut.
    Ebből jól látható, hogy a nulladik magot én a gyors reakcióidejű rövid kódokra használom, az első magot meg a hosszabb, nem időkritikus műveletekre.

    [ Szerkesztve ]

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