Fórum témák

» Több friss téma
Fórum
Keresés
Lapozás: OK   1 / 3
(#) benjami válasza icserny hozzászólására (») Jan 2, 2009
Ok. akkor számoljunk egy kicsit. Legyen csak 16 taszk. Ha a programod mérete nem haladja meg a 64kByte-ot (32kSzó) akkor veremszintenként csak 2 byte, egy teljes verem mérete 62 byte. Ezt 16-al szorozva 992 byte-ot kapunk, ami csak a verem mentegetéséhez és visszaállításához szükséges. Mondjuk itt is lehet kötni olyan kompromisszumot, hogy 4 taszkot berakunk egy verembe, és csak akkor mentünk vermet mikor a 4->5, 8->9, 12->13 és 16->1 közötti taszkváltás történik. Ezáltal már 16 taszk esetén is csak 4*62=248 byte kell a verem mentéséhez. Mondjuk a nagyobb probléma C nyelv esetén lenne ahol a szoftver verem fogyna el igen hamar.
(#) icserny válasza benjami hozzászólására (») Jan 2, 2009
Idézet:
„Egy mezei 18f-es PIC-el ne akarj 16, pláne 64 taszkot futtatni. A 4-5 taszk még megoldható...”

Azért a PIC18F97J60 vagy PIC18F87J50 esetében ezt túl erős megkötésnek érzem.
(#) benjami válasza icserny hozzászólására (») Jan 2, 2009
Idézet:
„Négy taszknál még elmegy, de 16 vagy 64 taszk esetén már nem járható ez az út.”

Egy mezei 18f-es PIC-el ne akarj 16, pláne 64 taszkot futtatni. A 4-5 taszk még megoldható, ha ennél több kell válassz 16 vagy 32 bites procit. Ha belegondolsz a PIC16-os sorozatnak csak 8 mélységű verme van.
(#) icserny válasza benjami hozzászólására (») Jan 1, 2009
Idézet:
„Pedig ott van a példában.”

Jaj, ennyire ne becsüld túl a képességeimet! Csak futólag néztem bele a kódba, így nem sokat fogtam még fel belőle...
Idézet:

A verem 0..7 szintje az 1. taszké, a 8..15 szint a 2. taszké és így tovább.”

Négy taszknál még elmegy, de 16 vagy 64 taszk esetén már nem járható ez az út. Ha jól látom, a uC/OS-II-ben taszkváltáskor elmentik, illetve visszaállítják a teljes hw stack-et. Ennek nyilván meg kell fizetni az árát...
(#) 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.
(#) 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 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
    
(#) 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.
(#) 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

(#) 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!


(#) 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 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.
(#) 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...
(#) potyo hozzászólása Okt 22, 2008
PIC10-re nincs még RTOS?
(#) 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)

(#) 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.
(#) pipi válasza icserny hozzászólására (») Okt 14, 2008
köszi
(#) 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ó.
(#) 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 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 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...

(#) 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 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.



(#) 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 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 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 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 8, 2008
Kicsit megzavarodtak a linkek, de már nem tudom javítani a szépséghibákat...
(#) 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.
Következő: »»   1 / 3
Bejelentkezés

Belépés

Hirdetés
XDT.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