QP (framework) - QP (framework)
![]() | tento článek byl nominován na kontrolu neutralita.Leden 2012) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
![]() | |
Vývojář | Kvantové skoky |
---|---|
Napsáno | QP / C a QP-nano in C, QP / C ++ v C ++ |
Rodina OS | Rámec / RTOS |
Pracovní stav | Zralý |
Zdrojový model | Otevřený zdroj |
Marketingový cíl | Vestavěné systémy |
Metoda aktualizace | Firemní web |
Licence | GPL a Komerční (Duální licence ) |
Oficiální webové stránky | state-machine.com |
QP ("Kvantová platforma") je lehká rodina, otevřený zdroj softwarové rámce pro vytváření citlivého a modulárního v reálném čase vestavěné aplikace jako systémy spolupráce, událost-řízený aktivní objekty (herci).
Přehled
Rodina QP se skládá z rámců QP / C, QP / C ++ a QP-nano, které jsou všechny kontrolovány, dokumentovány,[1] a komerčně licencovatelné.
Všechny rámce QP mohou běžet na „bare-metal“ single-chipu mikrokontroléry, zcela nahrazující tradiční Operační systém v reálném čase (RTOS). Pro všechny hlavní jsou k dispozici porty a příklady připravené k použití Rodiny CPU. QP / C a QP / C ++ mohou také pracovat s tradičními OS /RTOS, jako: POSIX (Linux, QNX ), Okna, VxWorks, ThreadX, MicroC / OS, FreeRTOS, atd.
Chování aktivní objekty (herci) je specifikováno v QP pomocí hierarchické stavové automaty (Státní grafy UML ). Rámec podporuje ruční kódování UML stavových strojů v C nebo C ++ stejně jako plně automatické generování kódu pomocí bezplatného grafického nástroje pro modelování QM.[2]
Používají se rámce QP a nástroj pro modelování QM lékařské přístroje, obrana a letectví, robotika, spotřební elektronika, kabelové a bezdrátové telekomunikace, průmyslová automatizace, přeprava, a mnoho dalších.
Pozadí
Aktivní objekty inherentně podporuje a automaticky vynucuje následující osvědčené postupy souběžného programování:[3]
- Uchovávejte všechny úkol Data jsou lokální, vázaná na samotný úkol a skrytá před zbytkem systému.
- Komunikujte mezi úkoly asynchronně prostřednictvím objektů zprostředkujících událostí. Používání asynchronního zveřejňování událostí udržuje úkoly skutečně nezávislé, aniž by se navzájem blokovaly.
- Úkoly by měly celý svůj život odpovídat na příchozí události, takže jejich hlavní řada by měla sestávat z smyčka události.
- Úkoly by měly zpracovávat události jeden po druhém (do dokončení), aby nedocházelo k žádným nebezpečí souběžnosti v rámci samotného úkolu.
Aktivní objekty dramaticky zlepšují vaši schopnost uvažovat o souběžném softwaru. Naproti tomu použití raw RTOS úkoly přímo je problém z mnoha důvodů, zejména proto, že nezpracované úkoly vám umožňují dělat cokoli a nenabízejí vám žádnou pomoc ani automatizaci osvědčených postupů.[4] Stejně jako u všech dobrých vzorů, aktivní objekty zvyšují úroveň abstrakce nad nahá vlákna a umožňují vám vyjádřit svůj záměr příměji, čímž zvyšují vaši produktivitu.
Aktivní objekty nemohou pracovat ve vakuu a vyžadují softwarovou infrastrukturu (rámec ), který poskytuje minimálně: provedení vlákno pro každý aktivní objekt, řazení událostí a služby časování založené na událostech. V omezeném prostředku vestavěné systémy, největší obavou vždy byla škálovatelnost a účinnost takových rámců, zejména těch rámců, které doprovázejí různé modelovací nástroje byly tradičně postaveny na vrcholu konvenčního RTOS, což konečnému řešení přidává paměťovou stopu a režii CPU.
Rámečky QP byly navrženy pro efektivitu a minimální stopu od základu a nepotřebují RTOS v samostatné konfiguraci. Ve skutečnosti ve srovnání s konvenčními RTOS nabízejí rámce QP menší rozměry zejména v RAM (datový prostor), ale také v ROM (kódový prostor). To je možné, protože aktivní objekty nemusí blok, takže většina blokovacích mechanismů (např. semafory ) konvenčních RTOS nejsou potřeba.
Všechny tyto vlastnosti tvoří řízené událostmi aktivní objekty se perfektně hodí pro jeden čip mikrokontroléry (MCU). Nejen, že získáte zvýšení produktivity tím, že pracujete na vyšší úrovni abstrakce než surové úlohy RTOS, ale získáte to při nižším využití zdrojů a lepší energetické účinnosti, protože systémy založené na událostech používají procesor pouze při zpracování událostí a jinak může přepnout čip do režimu spánku s nízkou spotřebou.
QP architektura a komponenty
QP se skládá z univerzálního procesoru událostí kompatibilního s UML (QEP), přenosného, událostmi řízeného rámce v reálném čase (QF), malého jádra run-to-completion (QK) a systému pro sledování softwaru (QS).
QEP (Quantum Event Processor) je univerzální procesor událostí kompatibilní s UML, který umožňuje přímé kódování Stavové automaty UML (UML statecharts) ve vysoce udržovatelném C nebo C ++, ve kterém je každý prvek stroje stavu mapován na kód přesně, jednoznačně a přesně jednou (sledovatelnost ). QEP plně podporuje hierarchické stavové vnoření, což umožňuje opakované použití chování v mnoha státech namísto opakování stejných akcí a přechodů znovu a znovu.
QF (Quantum Framework) je vysoce přenosný, řízený událostmi v reálném čase aplikační rámec pro souběžné provádění stavových strojů speciálně navržených pro real-time vestavěné systémy.
QK (Kvantové jádro ) je maličký preventivní neblokující jádro run-to-completion navržené speciálně pro provádění stavových strojů v a před dokončením (RTC).
QS (Quantum Spy) je a sledování softwaru systém, který umožňuje živé sledování aplikací QP řízených událostmi s minimálními cílovými systémovými prostředky a bez zastavení nebo významného zpomalení kódu.
Podporované procesory
Všechny typy QP frameworků (QP / C, QP / C ++ a QP-nano) lze snadno přizpůsobit různým architekturám a kompilátorům mikroprocesorů. Přizpůsobení softwaru QP se nazývá portování a všechny rámce QP byly navrženy od základu, aby bylo portování snadné.
V současné době existují porty QP s holým kovem pro následující architektury procesorů:
- ARM Cortex-M4F (TI Stellaris)
- ARM Cortex-M3 (TI Stellaris, ST STM32, NXP LPC)
- ARM Cortex-M0 (NXP LPC1114)
- PAŽE 7/9 (Atmel AT91R4x, AT91SAM7, NXP LPC, ST STR912)
- Atmel AVR Mega
- Atmel AVR32 UC3-A3
- TI MSP430
- TI TMS320C28x
- TI TMS320C55x
- Renesas Rx600
- Renesas R8C
- Renesas H8
- Freescale Coldfire
- Freescale 68HC08
- Altera Nios II
- 8051 (Silicon Labs)
- 80251 (Atmel)
- Mikročip PIC24 / dsPIC
- Cypress PSoC1
- Reálný režim 80x86
Podporované operační systémy
Rámečky QP / C a QP / C ++ mohou také pracovat s tradičními operačními systémy a RTOS.
V současné době existují porty QP pro následující operační systémy / RTOS:
- Linux (POSIX)
- Win32 (všechny stolní Windows a WindowsCE)
- VxWorks
- ThreadX
- FreeRTOS
- MicroC / OS-II
- QNX (POSIX)
- Integrita (POSIX)
Licencování
Všechny typy rámců QP jsou s dvojí licencí pod otevřený zdroj GPLv2 a tradiční licenci uzavřeného zdroje. Uživatelé, kteří chtějí distribuovat QP (např. Vložení do uživatelsky upgradovatelných zařízení), si mohou za poplatek zachovat vlastní status svého kódu. K dispozici je několik typů komerčních, bezplatných licencí s uzavřeným zdrojem.
Viz také
Reference
- ^ Samek, Miro (2008). Praktické stavové diagramy UML v C / C ++, druhé vydání: Programování založené na událostech pro vestavěné systémy. Noví. p. 728. ISBN 978-0-7506-8706-5.
- ^ "bezplatný grafický nástroj pro modelování QM".
- ^ Herb Sutter (16. března 2009). „Použít vlákna správně = izolace + asynchronní zprávy“.
- ^ Herb Sutter (14. června 2010). "Preferuji použití aktivních objektů namísto nahých vláken".
externí odkazy
- state-machine.com
- QP projekt na SourceForge.net
- qf4net: Kvantový rámec pro .Net
- qfj: Kvantový rámec pro Javu na SourceForge.net
- Miros: modul hierarchického stavového stroje v Pythonu
- Miros: modul hierarchického stavového stroje v Lua
- Státně orientované programování (Groovy)
- ACCU Overload Journal # 64 „Yet another Hierarchical State Machine“
- Deník uživatelů C / C ++ „Kdo změnil můj stav?“
- Deník uživatelů C / C ++ "Deja Vu"
- Výzkum otevřeného systému CNC založený na kvantovém rámci
- Aktivní objekty od Schmidta