Das U-Boot není ponorka
Obvyklý pohled na roli univerzálního bootloaderu U-Boot se omezuje na natažení binárního obrazu linuxového jádra z externího úložiště (NAND Flash, SD karta atd.) do operační paměti a jeho spuštění. Ale během vývoje je U-Boot neocenitelným pomocníkem. Umožňuje natáhnout velké binárky ze sítě a zkrátit tak dobu mezi rebooty, které jsou ve fázi ladění velmi časté. Odpadnou zdlouhavé zápisy do Flash paměti nebo na SD kartu.
Modul SAMA5 a SAM-BA
Je hezké, že nám mikroprocesor SAMA5D31 reaguje na příkazy, které mu posíláme po sériové lince. My ale chceme, aby po resetu spustil nějaký program. Pomocí programu SAM-BA zapíšeme binárku programu do SPI Flash paměti, která je na modulu SAMA5. Po resetu natáhne primární zavaděč RomBOOT binárku z SPI Flash do interní SRAM mikroprocesoru a spustí ji.
Modul SAMA5 - první kroky
Než začneme používat modul SAMA5, musíme si připravit vývojový kit s prototypovací deskou Baseboard. Potom připojíme modul pomocí sériového RS-232 kabelu k PC a vyzkoušíme komunikaci s primárním zavaděčem RomBOOT, který je v ROM paměti mikroprocesoru SAMA5D31.
Struktura programu (co jsme zatajili)
V předchozím článku jsme rozebrali strukturu zdrojáků jednoduchého programu pro mikrokontrolér LPC1115, ale pár věcí jsme přešli jako samozřejmost, kterou není potřeba moc vysvětlovat. Třeba odkud se vzaly definice registrů LPC1115 nebo co je vlastně v tom mejkfajlu. Proto jsme napsali tento článek.
Struktura programu pro LPC1115
Program pro LPC1115, který na Lipicanu bliká LEDkami, je opravdu velice jednoduchý. Než se ale procesor dostane k samotnému rozsvěcování a zhasínání LEDek, uděje se řada věcí. Projdeme si strukturu zdrojového kódu programu a probereme děje, které předchází spuštění hlavní funkce main().
První program pro NXP LPC1115
Napsali jsme krátký program, abychom vyzkoušeli, jak bude fungovat procesorový modul s NXP LPC1115, který jsme zasunuli do Lipicano Board. Program je velice jednoduchý, pouze bliká LEDkami, ale abychom viděli, jestli funguje, musíme jej nejdříve přeložit, prohnat linkerem a výslednou binárku musíme naprogramovat do Flash paměti mikrokontroléru.
Lipicano, CMSIS-DAP a pyOCD
Vyzkoušeli jsme, jak funguje Lipicano Board s debuggerem pyOCD z projektu ARM mbed. PyOCD je open source knihovna pro Python 2.7, která umožňuje ladit programy a programovat mikrokontrontoléry ARM Cortex-M přes rozhraní CMSIS-DAP. Knihovnu lze používat na operačních systémech Linux, OSX a Windows. My jsme zkoušeli práci s pyOCD na Windows 8.1.
Embedded Linux a okýnka - 4. LiTE (nad DirectFB)
Všechno hezké jednou končí. Poslední díl seriálu o okýnkách v embedded Linuxu uzavřeme GUI knihovnou LiTE, vhodnou pro běh nad grafickým prostředím DirectFB. Grafické prostředí DirectFB jsme si zprovoznili v předchozím dílu na modulu SAM9260, ke kterému byl připojen 7” TFT displej INT070ATFT-TS jako framebuferové zařízení.
Embedded Linux a okýnka - 3. DirectFB
V rámci seriálu o okýnkách v embedded Linuxu jsme si představili grafické prostředí Nano-X (dříve Microwindows) a GUI knihovnu FLTK, která pracovala nad Nano-X. Lákadlem kombinace Nano-X a FLTK byly velmi nízké nároky a dobrá použitelnost FLTK pro vývoj GUI aplikací.
Dnes naši pozornost zaměříme na grafické prostředí DirectFB, další možnou alternativu k desktopovému X-Windows. Stejně jako Nano-X i DirectFB bude pro vykreslování používat TFT displej INT070ATFT připojený k modulu SAM9260 jako framebuferové zařízení.
MachXO2 a tři LEDky
V předchozím článku jsme vytvořili první projekt v Lattice Diamond a umíme rozblikat LEDku. VHDL kód, který LEDkou bliká, spadl odněkud z nebe, chtělo by to nějaké vysvětlení. V tomto článku doplníme informace a navíc přidáme dvě LEDky, které budou blikat s vyšší frekvencí.
Embedded Linux a okýnka - 2. FLTK a nxlib
V minulém díle jsem na linuxovém modulu SAM9260 zprovoznil Nano-X. Alternativu ke grafickému prostředí X-Windows, která je svými nízkými nároky obzvláště vhodná pro embedded zařízení. ”Grafickou kartou” byl TFT displej INT070ATFT-TS připojený k modulu SAM9260 jako framebuferové zařízení. Nicméně psát GUI aplikace přímo nad Nano-X, resp. vůči knihovně libnano-X není to pravé ořechové. Poohlížel jsem se proto po nějaké GUI knihovně s pěknými widgety (grafické prvky - tlačítka, apod.). Zaujala mě knihovna FLTK. Dnešní díl bude proto o tom, jak zkompilovat a rozběhat GUI knihovnu FLTK nad grafickým prostředím Nano-X.
Mach a Lattice Diamond
Nebude to povídání o slavném Machovi a Šebestové, ale o modulu s malým FPGA od firmy Lattice Semiconductor a návrhovém systému Lattice Diamond. Modul je vedle FPGA obvodu MachXO2-1200 vybaven statickou RAM o kapacitě 128 KB, SPI Flash pamětí o kapacitě 4 Mb a 50 MHz oscilátorem. V článku si vysvětlíme, co všechno musíme udělat, abychom vytvořili jednoduchý projekt v prostředí Lattice Diamond a jeho výsledek pak nahráli do FPGA. Abychom začali jednoduchou aplikací, budeme, jak je obvyklé, blikat LEDkou.
SAM9260 a .NET Micro Framework - 4. První příklad
Máte modul SAM9260, v něm nahrané běhové prostředí Microsoft .NET Micro Framework (dále jen NETMF) a říkáte si, jak tedy vlastně začít vyvíjet v prostředí Visual Studia (dále jako VS). Čtete dále! Vše potřebné se dozvíte v tomto článku. Vytvoříme si náš první NETMF projekt, nastavíme si komunikaci s modulem SAM9260 přes USB rozhraní a nakonec rozblikáme LED diodu. Uvidíte, že i když to vypadá na dlouhý den, tak za půl hodiny nebude co řešit.
SAM9260 a .NET Micro Framework - 3. Nahrávání firmware
Článek vysvětluje, jak nahrát do modulu SAM9260 kompletní firmware s běhovým prostředím .NET Micro Framework (dále jen NETMF). Modul SAM9260 je dodáván s předinstalovaným prostředím NETMF, ale např. při aktualizaci firmware se hodí vědět ”jak na to”. V případě modulu SAM9260 a NETMF se připravený firmware skládá z bootstrapu, zavaděče TinyBooter, který zavádí běhového prostředí NETMF a samotného běhového prostředí, tzv. TinyCLR.
SAM9260 a .NET Micro Framework - 2. Instalace nástrojů
Než se dostaneme k programování v C# nebo Visual Basicu, musíme si pro modul SAM9260 nainstalovat všechny potřebné vývojové nástroje a také nástroje pro nahrávání/aktualizaci firmware s prostředím Microsoft .NET Micro Framework. Čeká nás instalace Visual Studio Express 2012, .NET Micro Framework SDK, Atmel SAM-BA a definice pinů a portů modulu SAM9260.
SAM9260 a .NET Micro Framework - 1. Začínáme
Začátky bývají těžké. Ne však s námi! Postupně si, krok za krokem, zprovozníme na modulu SAM9260 prostředí Microsoft .NET Micro Framework. Začneme tím, že si modul SAM9260 krátce představíme. Pak jej připojíme k napájení, zapojíme jeho sériový port a USB device port. Díky prostředí Microsoft .NET Micro Framework můžeme pro modul SAM9260 programovat aplikace v jazyce C# a ladit je ve vývojovém prostředí MS Visual Studio.
Embedded Linux a okýnka - 1. X-Windows? Nano-X!
V posledním dílu seriálu o připojení TFT displeje k modulu SAM9260 jsem úspěšně zprovoznil dotykový TFT displej INT070ATFT-TS jako framebuferové zařízení. To samozřejmě nebylo samoúčelné, protože když už mám plochu (framebufer), do které je možné kreslit okýnka, tak by se hodilo rozchodit i nějaké to grafické prostředí ala X-Windows, ale s nízkými systémovými nároky a snadno cross-kompilovatelné. A do páru nesmí chybět ani odlehčená GUI knihovna (widget toolkit) pro snadné vytváření prvků grafického uživatelského rozhraní.
SAM9260 a grafický TFT displej - 8. ovladač framebufferového zařízení
V předchozím a předposledním dílu našeho seriálu o TFT displeji jsme si řekli něco málo o framebufferovém zařízení. Z prostorových důvodů (dlouhé články nikdo nečte) jsem implementaci samotnou přesunul až do tohoto dílu. Takže ti, co vydrželi a četli seriál až do konce, budou odměněni. Zdrojovým kódem ovladače framebufferového zařízení pro TFT displej.
SAM9260 a grafický TFT displej - 7. framebuffer device
V předchozím dílu našeho seriálu o připojení grafického TFT displeje k procesorovém modulu SAM9260 jsme dokončili jednoduchý ovladač displeje pro operační systém Linux. Tento ovladač byl především testovací, měl za úkol ověřit možnost komunikovat s připojeným TFT displejem. Proto jej není možné použít jako grafický výstup pro aplikace s grafickým rozhraním např. pod systémem X Windows a ani není použitelný jako konzolové zařízení. Flintu do žita však házet nemusíme. Stačí, když zdrojový kód ovladače upravíme tak, aby fungoval jako ovladač framebufferového zařízení. A přesně o tom budou poslední dva díly.
SAM9260 a grafický TFT displej - 6. linuxový ovladač - dokončení
Minulý díl byl zaměřen na stručný popis konfigurace a režimů komunikace řadiče displeje SSD1963. Také jsme se už pustili do implementace základů ovladače pro systém Linux, který by umožňoval zobrazovat data na TFT displeji INT070ATFT-TS pomocí procesorového modulu SAM9260. Dnes ovladač dokončíme a vyzkoušíme, jestli opravdu funguje. Rovnou se pustím do inicializace TFT displeje, resp jeho řadiče SSD1963.
SAM9260 a grafický TFT displej - 5. řadič SSD1963 a příprava ovladače
V uplynulých dílech jsem se věnoval výběru, koupi, zapojení a oživení TFT displeje. Tím vyvoleným se nakonec stal TFT displej INT070ATFT-TS připojený k procesorovému modulu SAM9260. Dalším krokem, který mě čekal, byla implementace jednoduchého ovladače TFT displeje, který by mi pomohl ověřit, že TFT displej kompletně funguje a že jsem schopen jej správně zinicializovat a přenášet do něj obrazová data.
SAM9260 a grafický TFT displej - 4. realizace a oživení
V předchozím díle jsem řešil připojení TFT displeje INT070ATFT-TS k procesorovému modulu SAM9260. Výsledkem bylo okomentované schéma zapojení. V tomto díle vám ukážu jak jsem se vyrovnal s vlastní realizací zapojení aneb jak praví klasik: ”Čas slov skončil”. Jako první jsem si vzal na paškál samotný TFT displej. TFT displeje bez integrovaného řadiče mají tu nepříjemnou vlastnost, že končí plochým kabelem, který se dá zasunout pouze do konektorů typu FPC. Ano, to jsou takové ty dlouhé, drobné, běžným smrtelníkem nezapájitelné konektory.
SAM9260 a grafický TFT displej - 3. schéma zapojení
V prvních dvou dílech jsem se zabýval výběrem a nákupem TFT displeje u nás v České republice. Jak si možná pamatujete, nakonec jsem kvůli příznivé ceně koupil TFT displeje hned dva. Jeden s integrovaným řadičem displeje SSD1963 s označením INT070ATFT-TS od firmy Displaytech a druhý, označený jako AM-800480R3TMQW-TB2H/R, bez řadiče displeje, vyráběný firmou AMPIRE. Oba TFT displeje se vešly s cenou pod 2.000,-Kč s DPH.
SAM9260 a grafický TFT displej - 2. nakupujeme
Předchozí díl jsem uzavřel zevrubným seznamem požadovaných vlastností mého budoucího TFT displeje. S tímto seznamem v hlavě jsem začal prohledávat stránky všech distributorů, co u nás v ČR působí (a já o nich vím). Mou zkušenost s nákupem TFT displejů najdete v následujících odstavcích. Jak jsem už zmínil v předchozím díle, dvojku GME a GES lze rovnou vynechat, barevné TFT displeje nenabízí vůbec. Další na řadě bylo TME. Tam už nabídka vypadala o něco veseleji.
SAM9260 a grafický TFT displej - 1. výběr displeje
Zadání znělo jasně: ”Vyber, kup a zprovozni pod Linuxem nějaký větší dotykový TFT LCD displej na našem procesorovém modulu SAM9260. Jak to vše dopadlo se dozvíte v několika dalších dílech tohoto seriálu. První část úkolu ”vyber a kup” se zdála být jednoduchá, prostě se mrknu na stránky Farnellu (na GME či GES se nemá smysl dívat, nemají nic), vyberu nějaký druhý, třetí nejlevnější TFT displej a bude vymalováno. Opak byl pravdou. Netušil jsem, jak široký je sortiment TFT displejů, kolik různých rozhraní podporují apod. Rychle mi došlo, že si nejprve musím ujasnit, co přesně chci a pak teprve vyrazit na nákupy.
SAM9260 a znakový LCD - 5. kompilujeme a zobrazujeme
V předchozích dvou dílech jsme si rozebrali ukázkový zdrojový kód LCD displeje. V dnešním díle si zkusíme ovladač zkompilovat a hlavně také vyzkoušet v praxi. Kompilace ovladače předpokládá, že máme v našem pracovním počítači nainstalovaný křížový GCC kompilátor pro platformu ARM, např. od firmy Mentor Graphics. Dále potřebujme mít k dispozici zdrojové kódy jádra, které zkompilované běží v modulu SAM9260. Upravené zdrojové kódy jádra musíme nakonfigurovat pro modul SAM9260 a připravit pro kompilaci ovladače.
SAM9260 a znakový LCD - 4. ovladač, část druhá
V předchozím dílu jsme probrali inicializaci I/O portu mikrokontroléru AT91SAM9260 a inicializační rutinu samotného LCD displeje. Dnes si dokončíme rozbor zdrojového kódu ukázkového ovladače. Už víme, že LCD displej umí automaticky posouvat kurzor na další volnou pozici, takže při zobrazovaní souvislého textu se musíme v ovladači postarat pouze o to, aby byl text zalomen na další řádek. Co když ale někdy chceme, aby text začínal uprostřed řádku? Nebo až na druhém řádku? Jak to ovladači přikázat z uživatelského prostoru, tj. z příkazové řádky Linuxu nebo z naší aplikace? Máme několik možností.
SAM9260 a znakový LCD - 3. ovladač, část první
V minulých dílech našeho seriálu jsme připojili LCD displej k procesorovému modulu SAM9260 a stručně jsme si popsali způsob, jak s displejem budeme komunikovat prostřednictvím ovladače pro operační systém Linux. Co nás čeká a nemine je implementace samotného ovladače. Ta bude předmětem dalších dvou dílů. Implementace ovladače znakového LCD displeje je jednoduchá, LCD displej není složité výstupní zařízení. Připravili jsme pro vás vzorový zdrojový kód ovladače, který je ke stažení na produktových stránkach modulu SAM9260. Zdrojový kód samotný je bohatě komentovaný, nicméně několik jeho částí stojí za podrobnější vysvětlení.
SAM9260 a znakový LCD - 2. ovládání
V minulém díle jsme LCD displej připojili k modulu SAM9260. Než se však vrhneme na programování ovladače displeje pod Linuxem, ”dopřejeme” si velmi stručný úvod do řízení znakových LCD displejů s řadičem HD44780. Přeci jenom je dobré vědět jak ”to” řídit. Displej se skládá z řadiče a zobrazovacího elementu. Komunikaci a ukládání zobrazovaných znaků zajišťuje řadič, zobrazování pak samotný LCD element. Samotná strategie řízení displeje je jednoduchá. Displej se konfiguruje pomocí 8bitové instrukce/příkazu. Instrukcemi lze i ovlivnit chování displeje za běhu - můžeme zapnout/vypnout blikání kurzoru, nastavit novou pozici pro zobrazování znaků apod. Dokonce lze za běhu změnit i znakovou sadu!
SAM9260 a znakový LCD - 1. úvod a zapojení
Znakové LCD displeje stále patří k těm nejlevnějším zobrazovacím jednotkám. Přesto nabízejí velmi dobrou použitelnost a pro řadu aplikací bohatě dostačují. Způsob jejich ovládání je popsaný snad na každém webu, kde se scházejí bastlíři. Ale krocení znakového LCD pod Linuxem? No proč vlastně ne? V několika dílech se dozvíte, jak si ”ukuchtit” jednoduchý ovladač pro Linux, který běží na našem linuxovém modulu SAM9260.
Modul LM3S800 a GPIO - blikáme LEDkami
Základní funkcí každého mikrokontroléru je interakce s okolím. Pokud bychom nemohli mikrokontrolérem ovlivnit nebo zjistit stav jeho okolí, bylo by nám veškeré počítačování k ničemu. V této části se budeme věnovat ovládání výstupů. V prvním příkladu budeme blikat dvěma LED diodami. Piny mikrokontroléru použijeme jako výstupy, jejichž stav ovládáme přímo v programu. K pinům připojíme dvě LED diody a zkusíme několik režimů blikání.