Jste zde

Co umožňuje a programátorovi přináší RTOS MQX od Freescale ? – 2.díl

V prvním díle byly stručně uvedeny některé základní možnosti a funkce, které real-time operační systém MQX programátorovi nabízí. V tomto druhém díle najdete stručné nastínění použití MQX pro správu paměti a ovládání různých periferních zařízení, jako A/D převodník, univerzální vstupy/výstupy či ovládání slotu pro SD flash kartu.

V článcích „Vývojová deska Freescale KWIKSTIK pro MCU Kinetis K40“ a "Co umožňuje a programátorovi přináší RTOS MQX od Freescale ? – 1.díl" bylo mimo jiné obecně nastíněno, co představuje real-time operační systém MQX společnosti Freescale, který lze provozovat na všech výkonných procesorech v nabídce Freescale (MCU a CPU Coldfire, MCU Kinetis, PowerPC apod.). Dále byl v tomto článku stručně uveden zajímavý DEMO program právě pro MCU Kinetis K40 a vývojovou desku KWIKSTIK, ve které je i od výrobce přednahrán a také stručný popis základních možností, co RTOS MQX poskytuje.

V následujících řádcích a odstavcích tohoto 2. dílu článku se zkusíme blíže podívat na možnosti MQX pro potřeby správy paměti a hlavně také využívání a ovládání periferních zařízení, tj. hardwaru, která máte u MCU či desce s MCU k dispozici. Pro stručné ukázky volání některých funkcí byly použity části různých "example" a "demo" programů, které najdete v adresáři MQX po rozbalení jeho zdrojového kódu. Z důvodu přehlednosti byly vybrány jen malé "útržky" pro hrubé přiblížení. Pro bližší představu doporučuji si zdarma stáhnout vývojové prostředí CodeWarrior (www.freescale.com/webapp/sps...) a RTOS MQX (www.freescale.com/webapp/sp....) ze stránek společnosti Freescale a příklady (včetně provázané struktury) si podrobněji prohlédnout.

Co je BSP ?

Nejdříve, než se například budeme zabývat ovladači periferních zařízení v RTOS MQX, je vhodné si alespoň stručně přiblížit, co to je BSP:

BSP je zkratkou výrazu  „Board Support Package“ a tvoří jej kolekce hardwarově závislých souborů, které odkazují na specifické vlastnosti jednodeskového počítače. Většina desek, která je v nabídce Freescalu, již má BSP vytvořen od výrobce. Pokud tomu tak není, je možné jej vytvořit. Nejlepší přístup je však vycházet z nějaké podobné desky od Freescalu a BSP modifikovat pomocí klonování a úpravy již stávajících souborů.

Základem BSP jsou následující soubory:

  • bsp_prv.h – obsahuje úplně základní funkce, které využívá BSP a inicializační struktury periferních zařízení.
  • bsp.h – tento soubor zahrnuje „#include“ položky pro soubory, které může program aplikace využít pro přístup k periferiím desky a jejich API ovladačům. Také deklarují základní BSP funkce pro aplikace či IO ovladače.
  • <board>.h - specifický soubor hardwaru desky definující typ, mapování paměti Flash, RAM, externí paměti (adresy a velikosti jednotlivých oblastí), frekvence a rozlišení časování, taktování sběrnice a systémové hodiny, rozsah přerušení ISR.
  • <board>.c - specifické zdrojové soubory hardwaru desky
  • <file>.h - soubory pro API ovladače periferních zařízení

 

Zatímco PSP soubory popisují samotnou konstrukci a vlastnosti CPU či MCU, BSP soubory dávají MQX kompletní informaci o celkovém hardwaru, který je aplikaci k dispozici. 

Správa paměti (Memory Management)

Již v základním programování v jazyce C jsou přítomny příkazy pro alokaci a správu volné RAM paměti. V případě MQX jde o doplňkovou komponentu RTOS a možnosti jsou ještě rozšířeny. Obecně zde paměťové bloky (oblasti paměti) mohou být buď privátní (private), což je oblast alokovaná (vyhrazená) nějakou úlohou (task), nebo systémovou (system memory block), která není přímo přidělena žádné úloze, ale je obecně k dispozici MQX. V případě privátní alokace pak po ukončení úlohy se tato oblast vždy ruší a vrací pro možnost další alokace například jiné úloze, přičemž však i každá běžící úloha může předat alokovanou paměť jiné úloze (funkce _mem_transfer()). Jestliže MQX alokuje paměť, tak vždy minimálně o požadované (či případně) větší velikosti.

Prakticky lze tuto oblast v MQX rozdělit na následující:

  • Správa paměti s bloky různých velikostí (Managing Memory with Variable-Size Blocks)
  • Správa paměti s rozdělením na bloky pevné velikosti – tzv. partitions (Managing Memory with Fixed-Size Blocks)
  • Správa „Cache“ pamětí (Controlling Caches)
  • Správu MMU jednotky (Controlling an MMU)
  • Správa pevně přidělené paměti (Lightweight Memory Management)

V prvním případě správy paměti s bloky různé velikosti poskytuje MQX služby podobné s tradičními příkazy C jazyka, tedy malloc() a free(). Zde je však možné alokovat (vyhradit) bloky i z oblastí paměti mimo základní oblasti a lze alokovat paměťové bloky pro úlohu či pro systém. Paměť alokovaná úloze je určena pouze pro ni a v případě ukončení této úlohy je opět uvolněna pro jinou alokaci.

Příklad použití základní správy paměti v ukázkové aplikaci "3phmeter", který najdete v demo adresáři MQX:

Příklad alokace vnitřní paměti MCU (_mem_alloc) a přečtení kalibračních dat A/D převodníku z paměti (read).

V druhém případě alokace paměti na stejně velké úseky, tedy tzv. partitions, MQX poskytuje nejen rychlejší přístup do této deterministicky definované paměti, ale i výrazně snižuje fragmentanci paměti a tím umožňuje její lepší využití. Partitions mohou být vytvořeny v podobě dynamické v základní vnitřní paměti MCU či v podobě statické v externí paměti mimo MCU.

Schéma rozdělní správy paměti rozdělené na na stejné velké úseky, tzv. partitions (vlevo) a příklady rozdělení paměti na "partitions" - vytvoření (_partition_create), alokace paměti (_partition_alloc) a uvolnění paměti (_partition_free).

V případě realizace a správy cache paměti poskytuje MQX též proto funkce, které umožňují řídit datovou i instrukční cache CPU, které ji podporují. Lze tedy napsat aplikaci, která podporuje systémy s cache i bez cache paměti a MQX ji zapouzdří jako macro _DCACHE_ a _ICACHE_. Pro CPU, které nemají cache, se prostě nepřeloží její řízení a tedy se nebude využívat.

V případě správy MMU jednotky je nutné u některých CPU jader inicializovat MMU (Memory Managment Unit) před povolením použití cache pamětí. MQX funkce umožňují inicializaci, povolení a zakázání použití MMU a přidělit mu oblast paměti. MMU pak lze řídit použitím MMU stránkovacích tabulek (MMU page tables). S komponentou virtuální paměti může program aplikace ovládat virtuální paměť, která je namapována na fyzické adresy, pro vytvoření virtuálního obsahu úlohy, která je přístupna pouze této dané úloze v době, kdy je aktivní. Tyto funkce jsou volány při inicializaci BSP.

Nakonec je tu ještě možnost u aplikací s omezenými požadavky na velikost dat programového kódu použít zjednodušenou správu paměti tzv. Lightweight Memory Management. Ta má méně funkcí a menší velikost kódu a dat. Ve výsledku však jsou takto definované oblasti méně „robustní“ z pohledu chybovosti (chybí kontrolní součet záhlaví) a je k ní pomalejší přístup (task-destruction times). Použití této konfigurace paměti se definuje při kompilaci a následně pak MQX při alokaci využívá tento způsob.

Komunikace mezi procesory

MQX umožňuji provádět i vzájemnou komunikaci mezi několika různými procesory, tzv. IPC komunikace (Inter-Processor Communication). Procesory mohou prostřednictvím této komunikace provádět následující operace:

  • vzájemnou výměnu zpráv (exchange messages)
  • vytváření úloh (create task) blokovatelných i neblokovatelných
  • „ničení“ úloh (destroy tasks)
  • otevření či zavření skupin událostí (event groups)
  • nastavování bitů skupin událostí

Všechny procesory nemusí být spolu přímo propojeny nebo nemusejí být stejného typu. Komponenta IPC komunikuje prostřednictvím ovladačů PCB (Packet Control Block). Jestliže MQX inicializuje IPC komponentu, inicializuje i ovladač IPC zpráv a vytvoří tabulku směrování zpráv. Ta definuje cesty, jakými se zprávy dostanou od jednoho procesoru ke druhému.

Jakmile je vytvořena směrovací tabulka, každý procesor má jednu nebo více IPC, kde se každý skládá ze vstupní a výstupní funkce a výstupní fronty. Když úloha uloží zprávu do čekací výstupní fronty, MQX zjistí číslo cílového procesoru, který je součástí identifikačního čísla fronty (queue ID). Jestliže procesor není lokální, MQX zkontroluje směrovací tabulku. Jestliže je trasa známá, MQX pak může zprávu přesměrovat do výstupní fronty a výstupní funkce (output function) vyšle zprávu. Když IPC naopak zprávu přijme, spustí se vstupní funkce (input function). Ta sestaví z paketu zprávu a z ní zjistí, zda je určena pro lokální procesor nebo pro jiný procesor. Pokud platí druhá varianta, MQX přesměruje zprávu na další destinaci.

I/O ovladače (I/O Drivers)

Mezi doplňkové komponenty pak patří I/O ovladače (I/O drivers) využívané na úrovni BSP. Skládají se z formátovaných I/O a I/O podsystémů. Pro formátované I/O poskytuje MQX knihovny funkcí, což jsou API pro I/O podsystémy. Ovladače I/O zařízení jsou dynamicky (nebo v reálném čase) instalované softwarovými balíčky, které poskytují přímý přístup k hardwaru systému, na kterém MQX a program aplikace běží.

MQX I/O úrovně

MQX model řízení a ovládání vstupů a výstupů (I/O) se skládá ze tří úrovní:

  • Úroveň formátovaných I/O (Formatted IANSI /O) - definuje obecné příkazy, které následně volají funkce nižší úrovně.
  • Úroveň I/O podsystému (I/O Subsystem) - skupina funkcí s jednotnou syntaxí volaných z úrovně formátovaných I/O, které se však již odkazují na jednotlivé ovladače periferních zařízení.
  • Úroveň I/O ovladačů zařízení (I/O Device Drivers) - funkce volané z úrovně podsystému, které přímo ovládají jednotlivé hardwarové části.

Díky tomuto přístupu MQX je umožněno otevření a přístup jedněch ovladačů zařízení k jiným ovladačům zařízení. Například I/O ovladač PCB zařízení vysílá packet otevřením a použitím ovladače zařízení asynchronního vysílání znaků. Potřebné I/O ovladače je nutné při programování přiložit do projektu pro překlad a kompilaci z MQX adresáře mqx\source\io. Obvykle jsou v něm pak ovladače ještě dále rozděleny na další podadresáře. I/O ovladače vhodné pro konkrétní vývojové či demo desky jsou součástí BSP (souboru bsp.h) a jsou kompilovány v BSP knihovně.

Knihovna formátovaných I/O (Formatted I/O Library)

MQX knihovna formátovaných I/O, která také obsahuje ANSI ekvivalenty k oficiálním MXQ API voláním, obsahuje soubor fio.h - zde jen krátká ukázka z celkového seznamu:

I/O podsystém (IO Subsystems)

Implementace MQX I/O subsystému je lehce odvozena od I/O standardu POSIX. A využívá UNIX model s funkcemi open, close, read, write a ioctl. I/O subsystém zde tedy vytváří volání funkcí I/O ovladačů obsahující ukazatele na deklarační soubor (proměnnou typu FILE), který se získá z volání funkce fopen(). Instalace ovladačů zařízení se pak provádí voláním funkce _io_dev_install() přímo z BSP souboru nebo programu aplikace.

I/O ovladače periferních zařízení (I/O Device Drivers)

I/O ovladače periferních zařízení realizují přímé rozhraní k hardwarovým komponentám. Ty jsou identifikovány jménem tvořeným znaky a zakončeným dvojtečkou. Například zápis  _io_mfs_install("mfs1:" ...), instaluje periferní zařízení "mfs1:". Znaky následující za dvojtečkou jsou pak považovány jako extra informace pro periferii, které jsou předány ovladači periferie voláním funkce fopen(). Například fopen("mfs1:bob.txt"), otevře na periferním zařízení mfs1 soubor bob.txt.

Instalace ovladačů zařízení se provádí buď voláním funkce:

  • _io_device_install(), kde slovo "device" je nahrazeno jménem konkrétního periferního zařízení a voláno z programu aplikace. Obvykle tato funkce dále pro registraci zařízení u MQX interně volá funkci _io_dev_install(). To současně vykoná konkrétní inicializaci zařízení, jako například alokaci potřebné paměti a inicializaci dalších objektů MQX potřebné pro provoz (například komponentu přerušení či semaforů).
  • _io_dev_install() přímo z BSP souboru či programu aplikace. Tato funkce přímo registruje periferní zařízení v MQX.

 Ovladače periferních zařízení pak obvykle poskytují následující standardizované funkce:

  • _io_device_open = spuštění periferie
  • _io_device_close = ukončení periferie
  • _io_device_read = přečtení dat z periferie
  • _io_device_write = zapsání (předání) dat periferii
  • _io_device_ioctl = vyslání řídicích příkazů a nastavení periferie

Místo slova "device" je pak v reálu opět dosazováno jméno / označení daného periferního zařízení, na které jsou tyto jednotlivé funkce aplikovány.

I/O struktura periferních zařízení

Následující obrázek zjednodušeně ukazuje celou vzájemnou strukturu mezi deklaračním souborem (file handle FILE_STRUCT), který MQX vrací po použití funkce fopen(), I/O strukturou periferních zařízení (alokovaná, když je instalována) a funkcemi pro všechny I/O ovladače.

 

Ovladač vstupů / výstupů (GPIO Driver)

GPIO ovladač vytváří abstraktní hladinu pro aplikace využívající obecné víceúčelové binární vstupy / výstupy. GPIO API se dělí na hardwarově nezávislé obecné ovladače a hardwarově závislé specifické ovladače.

Jako každý I/O ovladač, tak i GPIO ovladač poskytuje instalační funkci _io_gpio_install(), které se volá z souboru bsp.h či z programu aplikace. Například: _io_gpio_install(“gpio:”);

Pro přístup k GPIO vývodům je však nutné tzv. otevřít a nadefinovat jejich chování, např. zda se mají chovat jako vstupní či výstupní, např.
file = fopen(“gpio:input”, &pin_table); , kde "file" je deklarační soubor definované skupiny pinů a "&pin_table" je ukazatel na tabulku (pole) struktury GPIO_PIN_STRUCT zakončenou řetězcem GPIO_LIST_END.

Popis má následující strukturu: <port_name> | <pin_number> | <additional_flags>

Například:

const GPIO_PIN_STRUCT pin_table[] = {
GPIO_PORT_NQ | GPIO_PIN5 | GPIO_PIN_IRQ,
GPIO_PORT_TC | GPIO_PIN3,
GPIO_LIST_END
};

Ovládání jednotlivých pinů se pak provádí prostřednictvím volání funkce IOCTL, která obsahuje příkaz požadované operace. Například pro nastavení všech pinů definované deklaračním souborem "file“ (definované při otevírání přístupu k pinům) na stav log. 1, se napíše: ioctl(file, GPIO_IOCTL_WRITE_LOG1, NULL);

Příklad použití I/O ovládání v ukázkové aplikaci "3phmeter", který najdete v demo adresáři MQX:

V 3phmeter programu se využívají I/O komponenty (funkce) pro sledování tisku tlačítek (vstupů) a blikání indikační LED diody. Jak je z ukázek trošku patrné, práce s I/O vstupy je při využití MQX a existenci BSP knihovny ovladačů pro daný hardware jednoduchá. Stačí jen provést její inicializaci I/O a pak pomocí funkce "ioctl" již jen se vstupy či výstupy pracovat.

Vytvoření souboru výstupů pro řízení svícení LED diod "file_leds":

Ukázka změny nastavení logické úrovně 1 či 0 souboru výstupů "file_leds"):

 

Ovladače A/D převodníku (ADC driver)

Součástmi operačního systému MQX jsou i ovladače A/D převodníků, jejichž obecný ovladač se nachází ve zdrojovém kódu MQX v adresáři source\io\adc.

Stejně jako další ovladače jiných hardwarových periférií, i ovladač A/D převodníku se musí instalovat / inicializovat pomocí funkce _io_adc_install() z programu aplikace či z BSP souboru bsp.h. Například: _io_adc_install("adc1:", (pointer) adc_init_struct); , kde "adc_init_struct" je ukazatel na inicializační strukturu obsahující informace pro A/D ovladač.

Otevírací funkce převodníku pak při prvním použití požaduje ukazatel na inicializační parametry pro nastavení A/D modulu a softwaru ovladače. Poté je ještě nutné provést otevření kanálu A/D převodníku. Následně lze již využívat funkce pro využívání A/D převodníku, přičemž například definování parametrů při volání „ioctl“ je možné definovat spouštění, dočasně spouštět a zastavovat převod apod. Ukládání převedených hodnot nějak do paměti pro další zpracování se pak již provádí jejich čtením z předem nadefinovaných registrů převodníku.

Příklad použití A/D převodníku v ukázkovém programu 3phmeter, který najdete v demo adresáři MQX:

V 3phmeter programu se využívá A/D převodníku pro měření napětí a proudu jednotlivých fází L1, L2 a L3 pro následující výpočet spotřeby el. energie. Jak je z ukázek trošku patrné, práce s I/O vstupy je při využití MQX a existenci BSP knihovny ovladačů pro daný hardware, pokud již máme k dispozici BSP,  docela jednoduché. Stačí jen provést její inicializaci I/O a pak již pomocí funkce "ioctl" již jen se vstupy pracovat.

Příklad inicializační struktury A/D převodníku a měřicího kanálu "vL1_channel":

Příklad otevření a vytvoření souboru analogového vstupu "file_L1" a nastavení A/D převodníku dle údajů v tabulce "adc_init_param". Následuje změna nastavení A/D převodu postupným voláním funkce ioctl s různými parametry:

Příklad přečtení hodnot z vnitřních registrů A/D převodníku:

 

Ovladač SD karty (SD Card Driver)

Součástí MQX je i dnes skoro nutný ovladač pro připojení a použití SD karty. Podporován je SD komunikační protokol do verze 2.0 (tj. podpora SDHC karet). Ovladač využívá blokový přístup s fixní velikostí bloků 512 bajtů. Nad tento ovladač lze instalovat MFS souborový systém pro implementaci FAT přístupu na kartu. Další parametry podporovány ovladačem jsou SD Card SPI ovladač pro přenos bloků dat po SPI sběrnici a SD Card ESDHC ovladač pro přenos bloků dat prostřednictvím ESDHC ovladače.

Ovladač SD karty (zdrojové soubory jsou pak umístěny v adresáři source\io\sdcard) poskytuje instalační funkci, kterou lze volat z programu aplikace či BSP souboru. Ta vytvoří interní struktury v MQX I/O subsystému a vytvoří ovladač vhodný pro použití. Parametry funkce instalace jsou: znakový identifikátor, ukazatel na inicializační strukturu SD karty a ovladač / správce komunikačního zařízení nižší úrovně (Handle of low-level communication device), typicky SPI sběrnice pro komunikaci s rozhraním karty. Základní inicializační struktura je vytvořena v BSP souboru, ale lze definovat i vlastní. Realizace signálu ochrany čtení /zápisu (Read/Write protection) a signál detekce přítomnosti karty ve slotu se pak řeší odděleně, obvykle s využitím víceúčelových vstupů/výstupů (GPIO pins). BSP soubor obvykle pro tento účel definuje piny BSP_SDCARD_GPIO_DETECT a BSP_SDCARD_GPIO_DETECT.

Inicializace zápisu na SD kartu se také provádí instalací ovladače SD karty předáním ukazatele. Inicializace záznamu drží ukazatel na skupinu funkcí nižší úrovně pro inicializaci karty, čtení a zápisu bloků a specifikaci volby čipu (chip selects) a šířku sběrnice (bus width).

Příklad instalace ovladače SD karty:

Příklad otevření přístupu k SD kartě a nastavení příznaku "pouze pro čtení":

I/O struktura sériových rozhraní

Sériová komunikační rozhraní jsou komplexní v tom, že mají obecnou vrstvu ovladačů (generic driver layer) a pak nižší již konkrétní jednoduché rozhraní pro hardware sériové komunikace. Následující obrázek ukazuje vzájemný vztah mezi deklaračním souborem (file handle FILE_STRUCT), který MQX vrací po použití funkce fopen(), I/O strukturou zařízení a funkcí sériového rozhraní na vyšší úrovni.

Sériová rozhraní (Serial-Device Families)

V rámci real-time operačního systému MQX je zabudovaná i podpora různých sériových rozhraní, různé sériové komunikace. V základu lze celou tuto oblast rozdělit do dvou podskupin:

  • Serial interrupt-driven I/O (Sériová komunikace s přerušeným řízeným vstupem/výstupem) – vysílání a příjem je plně asynchronní a obsahují svoje nezávislé buffery v interní RAM paměti. Přijímač přímá cokoliv, co k němu přijde, nezávisle na vysílání.
     
  • Serial-polled I/O (Sériová komunikace s dotazováním) – vysílač vyšle jeden nebo více bajtů, které typicky adresují dotazovanou jednotku, která následně vysílá data zpět jednotce, která se dotazovala. Tato data jsou přijata pouze v případě, že dojdou v určitém časové limitu. Data vyslaná po tomto limitu, či bez obdržení dotazu, nejsou přijata a zpracována.

Pro použití ovladačů sériové komunikace je nutné vložit soubory serinprv.h a serplprv.h do programu aplikace či BSP souboru bsp.h. Tyto soubory obsahují konstanty a datové struktury využívané sériovými komunikačními rozhraními.

Každý ovladač sériového rozhraní poskytuje instalační funkci. Ty se liší pro různé UART hardwarové moduly a je tedy nutné zjistit inicializační kódy pro konkrétní hardware (např. se lze podívat na inicializační kód v BSP souboru init_bsp.c (viz xxxx ve funkcích _xxxx_serial_int_install() a _xxxx_serial_polled_install() ). Každá instalační funkce pak požaduje definovat ukazatel na inicializační záznam, který se využívá pro inicializaci hardwaru i softwaru při prvním jeho použití. Pro každé rozhraní je tento záznam odlišný a inicializační parametry jsou definovány v souboru hardwaru.

Zde je například inicializační záznam, který lze nalézt v BSP kódu:

const _UART_SERIAL_INIT_STRUCT _bsp_uart0_init = {
/* queue size */ BSPCFG_UART0_QUEUE_SIZE,
/* Channel */ MCF52XX_IO_UART0,
/* Clock Speed */ BSP_SYSTEM_CLOCK,
/* Interrupt Vector */ BSP_UART0_INT_VECTOR,
/* Interrupt Level */ BSP_UART0_INT_LEVEL,
/* Interrupt Sublevel */ BSP_UART0_INT_SUBLEVEL,
/* UMR1 Value */ MCF52XX_UART_UMR1_NO_PARITY |
MCF52XX_UART_UMR1_8_BITS,
/* UMR2 Value */ MCF52XX_UART_UMR2_1_STOP_BIT,
/* Baud rate */ BSPCFG_UART0_BAUD_RATE
};

Sériové rozhraní se pak opět ovládá prostřednictvím podobných služeb, jako jiná periferní zařízení. Například pomocí volání _io_ioctl() a v něm odeslaných parametrů lze spouštět řídicí příkazy (I/O Control Commands), jako například nastavit přenosovou rychlost, zjistit stav komunikace apod., nebo nastavovat komunikační parametry, jako například počet bitů, paritu, počet stop bitů, či ovládat handshake sériové komunikace, pokud se tedy při komunikaci využívá. To vše je pak mimo jiné uvedeno v souboru serial.h.

Příklad založení / otevření a na konci ukončení / zavření kanálu sériové komunikace se jménem serial_fd a cyklem pro příjem a vysílání ASCII znaků z jiného sériového kanálu:

SPI a I2C ovladače (SPI Drivers, I2C Drivers)

Prakticky stejnou strukturu jako výše uvedené ovladače sériové komunikace, mají i ovladače jiných sériových komunikací, jako jsou například I2C a SPI. Rozdíl je v mnoha případech pouze prakticky nahrazení slova "serial" či "UART", slovy I2C či SPI. Princip funkce ovladačů je podobný.

Příklad založení / otevření sériového komunikačního kanálu SPI:

Příklad vyslání dat jejich zápisem do vysílacího bufferu:

Závěr 2. dílu

Zde v 2. dílu jsem se pokusil přiblížit možnosti MQX v oblasti správy paměti a některých často používaných periferií. Bližší podrobnosti pak najdete i s příklady v referenčním manuálu MQX (486 stran ) - MQXRN.pdf a v I/O Drivers Users Guide (216 stran) - MQXOUG.pdf, nebo přímo v mnoha ukázkových programech, které jsou přiloženy v adresářích MQX systému po instalaci jeho zdrojových kódů na PC.

Jinak jak je i z tohoto základního popisu patrné, není například použití SD karty či sériové komunikace díky MQX příliš komplikované. Stačí se jen orientovat ve funkcích / příkazech a není nutné podrobně znát problematiku funkce dané periferie či vnitřních registrů MCU. To je obrovská výhoda. Samozřejmě například v případě SD karty je pro použití vhodné na ni nahrát a používat i souborový systém, který umožní k datům přistupovat i z jiných systémů. V tomto případě MQX nabízí souborový systém MFS, jehož použití též není příliš složité. O něm a pak i o USB komunikaci, kterou samozřejmě MQX taky podporuje, bude 3.díl.

Článek vytvořil: Antonín Vojáček

DOWNLOAD & Odkazy

Přílohy: 
PřílohaVelikost
PDF icon MQXIOUG.pdf641.38 KB
PDF icon MQXRM.pdf1.43 MB
PDF icon MQXUG.pdf920.25 KB
Hodnocení článku: 

Komentáře

zdravim, pekny clanek, ale nezobrazuji se mi nektere obrazky ..

Vyborny clanok, skoda ze nebol ked som to studoval... inak MQX vyuzivam a som velmi spokojny...