Fórum témák

» Több friss téma
Fórum » PIC FreeRTOS Hogyanok...
 
Témaindító: ciw, idő: Márc 19, 2008
Lapozás: OK   2 / 3
(#) icserny válasza ciw hozzászólására (») Okt 3, 2008 /
 
Igen, a PIC18F utasításai 16 bit szószélességűek. A Linker meg a Memory gauge jószág kiírásai kozott láttam egy bájt diszkrepanciát. Erre mondtam, hogy biztosan átugrottáka 13-a sorszámú bájtot...

Komolyabbra fordítva a szót:
Néhány RTOS összehasonlítása (Thread-Metric benchmark) olvasható ebben a cikkben.
Egy kicsit elszomorító, hogy a FreeRTOS több tesztben is alulmarad, ugyanakkor öröm, hogy a cikk alapján egy újabb nyilforrású (ha jól emlékszem BSD licensz?) RTOS is előkerült. A Microchip MCU-k közül PIC24/dsPIC33-ra portolták.

(#) icserny válasza icserny hozzászólására (») Okt 3, 2008 /
 
Csak a lényeget felejtettem le: TNKernel a neve...
(#) icserny hozzászólása Okt 8, 2008 /
 
Ismét okosabb lettem néhány nappal (meg öregebb is...)! KIderült,hogy az MPLAB IDE Tools menüjében mit csinál a RTOS Viewer menüpont. Ez arra jó, hogy az MPLAB által támogatott RTOS-okkal készített programok debug-olásakor mindenféle okosságokat mutasson. Például a taskok állapotát, a timerek állapotát, a várakozó sorok,szemaforok, mutexek és egyebek listáját (egyszóval bizonyos rendszerváltozók strukturált és interpretált értékét.

A jelenleg támogatott rendszerek:
  1. CMX-RTX (fizetős, demo nincs)
  2. CMX-Tiny+ (fizetős, demo nincs)
  3. CMX-Scheduler (a fentiek demováltozata, afféle mini-Tiny)
  4. SEGGER embOS (fizetős, demóját nem láttam)
  5. Express Logic ThreadX (fizetős, demo van)
  6. Micrium uOS-II (fizetős, de a forrása legálisan letölthető!)


Eredetileg nincs a listán, de a demo mellé az MPLAB RTOS Viewer plugint is adja az AVIX, tehát gyakorlatilag az is támogatott. (fizetős, demo van)

A mellékelt képen az RTOS Viewer ablak látható, s az, hogy az AVIX demo2 programjában a taskok (vagy programszálak) hogyan váltogatják egymást. A D0 bit magas állapota a rendszer tétlen állapotát jelzi, a D1,D2,D3 bitek pedig három bugyuta task ténykedését mutatja.

Az AVIX a Microchip vezérlőiből a PIC24,dsPIC, és PIC32 vezérlőket támogatja. A demováltozat néhány paraméterében korlátozott...

avix.png
    
(#) Peppe válasza icserny hozzászólására (») Okt 8, 2008 /
 
Esetleg linkeket küldenél???
Kíváncsi vagyok az RTOS tulajdonságaira.
(#) icserny válasza Peppe hozzászólására (») Okt 8, 2008 /
 
Küldhetek, persze. Bár nekem sem kevesebb munka beírni a keresőbe, hogy pl. CMX RTOS, stb....

CMX

AVIX

Micrium uOS-iiMicrium uOS

TNKernelTNkernel

ThreadX

embOS

FreeRTOS

Erika Enterprise
(Megjegyzem, hogy az Erika Enterprise rendszert négyszeri nekifutásra sem sikerült úgy feltelepíteni, hogy lefordítsa a saját demóját. Windowsos környzetben Linux-ot játszik Cygwin-nel, de behülyül a szóközt tartalmazó könyvtárnevektől, mint pl. a Program Files. Lehet, hogy angol vagy olasz windows-sal jobban menne?)

Forráskód a Micrium uOS-II, TNKernel és FreeRTOS-hoz van, a többi többé vagy kevésbé lebutított demo, belinkelhető bináris könyvtárral.
(#) icserny válasza icserny hozzászólására (») Okt 8, 2008 /
 
Kicsit megzavarodtak a linkek, de már nem tudom javítani a szépséghibákat...
(#) icserny hozzászólása Okt 9, 2008 /
 
Hogy mik nem vagynak!!!

BRTOS - A Real Time Operating System for the PIC
Ez egy RTOS PIC18F252-re, Proton BASIC nyelven írva.
(#) icserny válasza icserny hozzászólására (») Okt 9, 2008 /
 
Letölthető az embOS demója is, csak nem az általam korábban megadott linken kell keresgélni, hanem ide kell kattintani!

A letöltött és kicsomagolt demóban a Release.html tartalmazza azt az információt, hogy a demó milyen korlátozásokat tartalmaz: Az első 15 percben akárhány taszk indítható, de a türelmi idő leteltével hibajelzéssel leáll a rendszer, ha háromnál több taszkot hoztunk létre.

Ez is csak bináris könyvtárakat biztosít, a Salvohoz hasonlóan százféle változatban (kis- és nagy memóriamodel, rendszer-szolgáltatások, debug-olás stb. függvényében más-más könyvtárak kell használni).

Az olcsó fejlesztői változat (csak bináris) 2500 Euró, a forráskódot is felfedő változat ára 5000 Euró.
(#) icserny válasza icserny hozzászólására (») Okt 10, 2008 /
 
Egy USB-RS232 konverter beszerzése után visszatértem a Micrium uC/OS-II demójának nézegetéséhez. Van hozzá ugyanis egy uC/Probe nevű Windowsos alkalmazás (30 napos próbaváltozat tölthető le a Micrium honlapjáról), ami a soros porton kommunikál az Explorer16 kártya mikrovezérlőjén futó uC/OS-II demoval.

Ennek a kommunikációnak az a lényege, hogy a demo firmware-be épített satisztikai és kommunikációs modulok segítségével FUTÁS KÖZBEN ki lehessen kérdezni az RTOS rendszert a pillanatnyi állapota felől (mit csinálnak a taszkok, hány taszkváltás volt, mekkora a CPU terheltsége, hogy néz ki a RAM felhasználás, és a többi...).

Az eszme zseniális, fejlesztés közben biztosan hasznos, de a kivitelezése helyenként gagyi. A kommunikációhoz Windows oldalon szükséges program (uc/Probe) tulajdonképpen saját lekérdezések és riportok összeállítására alkalmas program, a RAD programtervezéshez hasonlóan helyezhetünk el grafikus vagy táblázatos elemeket.

A mellékelt demo futtatásához el kell indítani a uC/Probe programot, kattintani kell a bal felső sarokban elhelyezkedő kerek gombra (afféle File menü...). Ott az Open gombra kattintva betölthetjük az OS-Probe-Workspace.wsp állományt, ami a Program Files/Micrium/uC-Probe/Target/Plugins/uCOS-II/Workspaces mappában van eldugva.

Rögtön utána egy hozzátartozó .elf állományt is vár a program, ez pedig nem más, mint az Explorer16 demóprogramja. Ez nálam a c:\Micrium_P24\Software\EvalBoards\Microchip\PIC24FJ18\MPLAB_C30\OS-Probe\Output mappa mélyén található.

Ha ez megvan, ismét a bal felső sarokban kerek gombra kattintva, a felbukkanó panel jobb alsó sarkában találjuk meg az Options menüt. (Hogy mit összekerestem,mire megtaláltam!!!). Ezen be kell állítani az RS-232 kapcsolat tulajdonságait (38400 Baud, 8 bit, NP, 1 STOP), de külön be kell állítani azt is, hogy a kommunikáció az RS232 vonalon zajlik (van erre egy rádiógomb). Ezután a Play gombbal (bal felső sarok, zöld háromszög) elindítható a kommunikáció, s az egyes paneleken sorra megjelenek és frissülnek az adatok. (lásd mellékelt képek)

Megpróbáltam feltenni egy grafikont, s megjeleníteni benne a CPU terheltség időbeli változását. A grafikon automatikusan skálázta magát, ahogy változtak az adatok, de mindig csak ráírta a tengelyre az új skálát, sohasem törölte a régit.

Néhányszor behalt a Windows-os uC-Probe. Ezek közül volt,ami az USB-soros konverterre fogható, de volt, amikor egyszerűen a File menüre történő kattintás után exitált a program. A fentebb említett grafikon frissítése közben a kommunikáció rendszeresen megszakadt (ezt írta ki alul), majd automatikusan újra kapcsolódott. Rendszergazdai jogosultságok nélkül el sem indult (csak a splash képet mutatta meg). Az is idegesítő, hogy a report lapok nem férnek ki a képernyőre (pedig a legkisebb képernyőfelbontást állítottam be), s minden lapváltáskor a lapok ALJÁRA ugrik, a hol csak a uC/OS-II logója látszik. Na, ezek miatt tartom egy kicsit gagyinak a kivitelezést. Pedig láthatóan sok munka fekszik benne...
(#) icserny válasza icserny hozzászólására (») Okt 13, 2008 /
 
Idézet:
„Megjegyzem, hogy az Erika Enterprise rendszert négyszeri nekifutásra sem sikerült úgy feltelepíteni, hogy lefordítsa a saját demóját.”

Hosszas nyomozás után úgy tűnik, hogy nem az Erika Enterprise telepítésével van baj, hanem az a bibi, hogy a Microchip fordítóm túlságosan friss neki, s ezzel nem tud szót érteni (máshol vannak az include állományok a Microchip\MPLAV C30\support bugyraiban).
(#) icserny hozzászólása Okt 13, 2008 /
 
A Microchip számos RTOS fejlesztést reklámoz a honlapján, melyek közül a Rowebots DSPnano és UNISON óperenciás rendszerei most 1 dollárcentért ($0.01) megvásárolhatók forráskóddal és llicensszel.

Mindkettő afféle mini-tini Linux-nak mondott POSIX kompatibilis rendszer. A DSPnano PIC24, dsPIC30 és dsPIC33-hoz való. Az Unison pedig a PIC32-höz való.

Én most vettem egy DSPnano licenszet (2 Ft-ot talán megér...) melynek előnyei között azt emlegetik, hogy többszálú alkalmazások írását támogatja (ha valakinek ismerős Linuxból: pthreads), s hogy kiterjedt I/O könyvtár van hozzá SPI, Grafika, Touch Screen, TCP/IP, UDP, A/D,D/A, PWM, CAN, CANopen, USB és I2C kezelésére.



(#) pipi válasza icserny hozzászólására (») Okt 13, 2008 /
 
Hali!
Belelkesültem megvettem, feltelepítettem, de hiányzik a futtatható exe fájl, amit a start/programok közé berak. Ami username/passwordot küldtek a progival, az mire kell? nem kérte telepítés közben
(#) icserny válasza pipi hozzászólására (») Okt 14, 2008 /
 
Idézet:
„Belelkesültem megvettem, feltelepítettem, de hiányzik a futtatható exe fájl, amit a start/programok közé berak.”


Nem is tudom, hogy mit futtatna, hiszen csak forrásfájlok, MPLAB projekt fájlok, dokumentáció, és néhány előre lefordított programkönyvtár a csomag tartalma. Ezeken kívül csak az ingyenesen letölthető MPLAB és a C30 kell hozzá a Microchip-től.

Én nem rendszergarázdaként használom a gépet (csak telepítéskor), így nálam (szerencsére) meg sem jelenik a menüben...

(#) icserny válasza pipi hozzászólására (») Okt 14, 2008 /
 
Ja, a jelszó nem tudom, mire kell(ett). Lehet, hogy régebben (amikor még PÉNZÉRT adták) a letöltéshez meg kellett adni.
(#) icserny hozzászólása Okt 14, 2008 /
 
PThreads témakörben itt található egy rövidebb (26 oldalas) bevezető:
PthreadTutorial.pdf

Emitt pedig egy kimerítő (alig 370 oldalas) olvasmány.
(#) icserny hozzászólása Okt 14, 2008 /
 
a Micrium uC/OS-II RTOS rendszeréhez is találtam egy jó könyvet! Jean J. Labrosse: MicroC OS II - The Real Time Kernel

A Google Books-nál bele lehet olvasni, számos helyen meg lehet vásárolni, néhány szakkönyvtárból pedig ki lehet kölcsönözni.

Bár a könyvben leírtak nem a PIC programozásáról szólnak, a rendszer filozófiájáról és a szinkronizáláshoz, kommunikációhoz használt eszközeiről hasznos információt talál benne az olvasó.
(#) pipi válasza icserny hozzászólására (») Okt 14, 2008 /
 
köszi
(#) icserny hozzászólása Okt 19, 2008 /
 
Sok kínlódás és némi fórumozásután sikerült kideríteni, hogy az Evidence Erika Enterprise RTOS 1.4.3 verziójának mi a baja a legújabb MPLAB C30 3.11b fordítóval: máshol keresi az include fájlokat (pontosabbana Microchip tette át máshová azokat).

1. Megoldás: régebbi verziójú fordító felrakása

2. Megoldás: oda kell másolni a hiányzó fájlokat, ahol az Erika RT-Druid-ja keresi. Nevezetesen a C30/Support/inc/dsPIC33/h és inc könyvtárát eggyel fentebbi szintre kell másolni (valójában lehet, hogy csak a p33FJ256GP710.inc hp33FJ256GP710.h fájlok kellenek). Hasonlóan a libp33FJ256GP710-elf.a állományt is eggyel feljebbi szintre kell másolni: C30/lib/dsPIC33F-ből a C30/lib-be. Végül egy sikertelen Build project után a p30f2010.inc állományt be kel csempészni a projektbe a workspace/testdemo/Debug/frommchp könyvtárba (a crt0.s, valamint a fentebb már említett p33FJ256GP710.inc, p33FJ256GP710.h fájlok mellé).

Fenti módosításokkal sikerült lefordítani az Explorer 16-hez való Device Demo mintaprogramját. Sok köszönet ugyan nem volt benne, mert az LCD-re zagyvaságokat írt. Valószínűleg az LCD-re való íráskor használt késleltetéseket kellene módosítani, denem volt kedvem játszani.

Jó hír, hogy a következő kiadásban (1.5.0) az Oil Compiler forráskódját is nyitottá teszik, s talán megoldható a két fordítás (OIL-ból C kód, majd a C kód lefordítása az MPLAB-bal) különválasztása, ami megoldja a fentihez hasonló szerencsétlenkedéseket.

Én egyelőre kevés lehetőséget látok a debug-olásra, s RTOS nézegető sincs az Erikához. Ugyanakkor a forráskód nyitottá tétele megérdemel egy nagy piros pontot.
(#) icserny hozzászólása Okt 22, 2008 /
 
Új RTOS a láthatáron!

OSA – кооперативная многозадачная операционная система реального времени для микроконтроллеров фирмы Microchip - azaz: OSA - kooperatív, többfeladatos, valósidejű rendszer a Microchip mikrovezérlőihez.

Ízlelgessük ezeket a veretes cirill betűket! Annál is inkább, mert a dokumentáció jelentős része és a forráskód megjegyzései egyelőre csak orosz nyelven vanak meg.

Az OSA-RTOS kooperatív (tehát nem preemptív...) többfeladatos RTOS, ami elvileg PIC12, PIC16, PIC18, PIC24 és dsPIC-en is használható. A kisebbeken HT PICC, a nagyobbakon a Microchip C fordítójával fordítható.

Az OSA szabad forráskódú rendszer, ingyenes alternatívája lehet tehát a Hi-Tech Salvo-nak.

A multitaszkos program létrehozása elvileg egyszerű: az új projektben létrekell hozni egy OSAcfg.h állományt, amiben a rendszer konfigurációja beállítható. A forráskód elején pedig be kell csatolni az osa.h állományt. A főprogram váza pedig így néz ki:

  1. void main (void)
  2. {
  3.     OS_Init();
  4.     OS_CreateTask(...);
  5.     OS_CreateTask(...);
  6.     // Create all tasks you need
  7.     // ...
  8.  
  9.     OS_Run();
  10. }


A rendszerhívások számos szinkronizációs, időzítési és üzenetküldési funkciót biztosítanak.

Linkek:

  1. OSA-RTOS honlapja
  2. OSA dokumentációja (wiki)

(#) potyo hozzászólása Okt 22, 2008 /
 
PIC10-re nincs még RTOS?
(#) icserny válasza potyo hozzászólására (») Okt 22, 2008 /
 
Hitech C-vel megpróbálhatod lefordítani hozzá az OSA-RTOS-t. Ha nagyon kell...
(#) icserny válasza potyo hozzászólására (») Nov 2, 2008 /
 
Idézet:
PIC10-re nincs még RTOS?”
Itt található egy OSA mintaprojekt PIC10F222-re!

Пример использования OSA: 3LEDS_PIC10F
Négy gombbal három ledet lehet vilogtatni, 4 sebességfokozatban.
(#) testerplus hozzászólása Dec 7, 2008 /
 
Hello!

I am autor of RTOS OSA. If anybody interested, OSA documentation translated in english:

http://wiki.pic24.ru/doku.php/en/osa/ref/intro

All comments in source code now in english too:
http://wiki.pic24.ru/doku.php/en/osa/ref/download/intro

I hope OSA will be usefull for someone.

Best regards, Victor Timofeev. Russia, SPb.

(Sorry, I don't speak hungarian)
(#) icserny válasza testerplus hozzászólására (») Dec 13, 2008 /
 
Hi Victor,
Thank you for your efforts in the development of OSA, and also for this message about the good news!


(#) icserny hozzászólása Dec 17, 2008 /
 
Nem triviális az OSA fordítása PIC12/PIC16-ra, legalábbis nekem sehogy sem akart összebarátkozni az MPLAB 8.15a és a Hi-Tech PICC STD V9.60PL2. Ezért az MPLAB-ot hanyagoltam, és nyitottam egy DOS... akarom mondani cmd parancsablakot.

OSA/test/test1 mintapélda fordítása:

  1. C:\> cd \OSA\test\test1
  2.  
  3. C:>picc  --asmlist --chip=12F675 -D_PIC12 -I\OSA -I. test1_osa.c \OSA\osa.c
  4. HI-TECH PICC COMPILER (Microchip PICmicro)  V9.60PL2
  5. Copyright (C) 1984-2008 HI-TECH SOFTWARE
  6. licensed for evaluation purposes only
  7. this licence will expire on Fri, 30 Jan 2009
  8. test1_osa.c
  9. \OSA\osa.c
  10.  
  11. Memory Summary:
  12.     Program space        used    DAh (   218) of   3FFh words   ( 21.3%)
  13.     Data space           used    11h (    17) of    40h bytes   ( 26.6%)
  14.     EEPROM space         used     0h (     0) of    80h bytes   (  0.0%)
  15.     Configuration bits   used     0h (     0) of     1h word    (  0.0%)
  16.     ID Location space    used     0h (     0) of     4h bytes   (  0.0%)


Magyarázat:
~~~~~~~~

--asmlist ha kíváncsiak vagyunk,hogy mit fordított a C

--chip=12F675 a PIC12F675-re fordítottam

-D_PIC12 HiTech PICC és PIC12 esetén ez kell megadni

-I\OSA -I. Az include könyvtárak

test1_osa.c
\OSA\osa.c A forrásfájlok

(#) testerplus válasza icserny hozzászólására (») Dec 18, 2008 /
 
Added example of RTOS OSA usage to generate 4-channels polyphonic melody on PIC16F628A. Source, scheme and sound example here:

http://wiki.pic24.ru/doku.php/en/osa/ref/appendix/quartet

Program consists of 5 tasks: conductor and four musicants. I think it will be interesting to beginners.

Best regards, Victor Timofeev.
(#) benjami hozzászólása Dec 31, 2008 /
 
Sziasztok, én is gondolkodtam azon, hogyan lehetne a PIC-ben több programot párhuzamosan futtatni.
Az ún. cooperatív multitasking programok valójában nem állnak másból csak az egyes taskokat hívó szubrutinhívásokból.
Ebben az esetben ráadásul úgy kell megírni az egyes taszkokat, hogy azok egy bizonyos időn belül visszaadják a vezérlést, különben a "taszkváltás" is késni fog.
Ha sima végtelen ciklusos programot írunk abból ugye sosem fog visszakerülni a vezérlés.
Hát akkor csináljunk preemtív multitaszkot.
Először úgy tünt ezt nem lehet megoldani egy 18f-es PIC-el, mert az rendben van hogy a megszakítás elveszi a vezérlést a főprogramtól, de a megszakítás után azt utána egy másik programnak kell visszaadni.
Azután megnéztem a PIC-ek veremkezelő regisztereit, és rájöttem hogy ez simán megvalósítható.
Csináltam egy kis ASM mintaprogramot, ami 3 ledet villogtat egymástól eltérő sebességgel, közben meg a soroson bejövő adatokat minimális módosítással továbbküldi.
Persze egy összetettebb programnál illik menteni/visszaállítani a BSR és FSR regisztereket is.
Ha valamelyik taszknak nincs szüksége a procira a továbbiakban, 2 utasítással rá lehet bírni az ütemezőt a taszkváltásra.
Ha sleep-el a taszkok hurokjainak a végén elküldjük a procit aludni azzal meg energiatakarékos alkalmazást készíthetünk.
Még nem gondolkodtam azon hogyan lehetne C-re átvinni, de azt kell kitalálni hogy hogy a taszkhoz tartozó FSR-eket milyen kezdőértékre állítsuk be.
C-ben ugye így csinálják a szoftveres vermet, amivel a függvényhívások során a paraméterátadások történnek, valamint a lokális változók is itt tárolódnak.
Az fontos hogy mindegyik taszknak külön verme legyen mert anélkül csúnyán egymásba rondítanának.
A szubrutinhívásokat sem lehet olyan nagy mélységig egymásba ágyazni, mert a hardver-verem 31-es mélységén is osztozni kell a taszkoknak.
Sajnos a vermek egymásba csordulását, ezáltal az egymásba rondítást nem lehet figyelni, ezért a taszkokba olyan programot kell írni amikben nincsenek túl mélyen egymásba ágyazott függvények.

BUÉK mindenkinek

RTOS-pic.zip
    
(#) icserny válasza benjami hozzászólására (») Dec 31, 2008 /
 
Idézet:
„Ha sima végtelen ciklusos programot írunk abból ugye sosem fog visszakerülni a vezérlés.”

Visszakerül az, ha minden ciklusba beiktatunk egy OS_Yield() utasítást, vagy egy késleltetést,vagy egy várakozást egy eseményjelzőre. Persze, necces dolog, ebben igazad van.

Idézet:
„Hát akkor csináljunk preemtív multitaszkot.”

Ez szép kezdeményezés! Külön erénye a munkádnak, hogy assembly nyelven még nem láttam hasonló programot PIC-re.

Idézet:
„Még nem gondolkodtam azon hogyan lehetne C-re átvinni”
Érdemes megnézni a hasonló célú, C-ben írt programokat. PIC18-ra az alábbiakat tudom ajánlani:
  1. Micrium uC/OS-II
  2. FreeRTOS
  3. PICOS18


Idézet:
„A szubrutinhívásokat sem lehet olyan nagy mélységig egymásba ágyazni, mert a hardver-verem 31-es mélységén is osztozni kell a taszkoknak.”

Ez egy érdekes probléma, mert preemptív multitaszkos környezetben (amikor egy szubrutin közepén is megszakadhat a futó taszk) nem garantálható {1}, hogy helyes sorrendben történik a visszatérési címek visszaszedegetése, tehát a hardver-vermen való osztozkodást nehezen tudom elképzelni....

{1} J. J. Labrosse: MicroC/OS-II, The Real Time Kernel c. könyvében említ pl. olyan esetet, amikor az erőforrásokért versengő taskok között megfordul a prioritási sorrend...

(#) benjami válasza icserny hozzászólására (») Dec 31, 2008 /
 
Idézet:
„tehát a hardver-vermen való osztozkodást nehezen tudom elképzelni”

Pedig ott van a példában. A verem 0..7 szintje az 1. taszké, a 8..15 szint a 2. taszké és így tovább. Ha megszakítás történik az annak a taszknak a vermét fogyasztja, ami éppen a megszakításkor futott.
A probléma az hogy ha az 1. taszk veremhasználata eléri a 8. szintet, akkor összeomlasztja a 2. taszkot.
A PIC18-assal azért nem lehet taszkvédelmeket és egyéb nyalánkságokat összehozni, mert nem erre készült, de sztem nem is ez a cél.
Következő: »»   2 / 3
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem