Produkty Novinky Články Návody Kontakty

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”.
Možná by se slušelo vysvětlit, co že to vlastně je ten ”firmware”. Firmware je balíček v podobě jednoho nebo více binárních souborů, který představuje kompletní programové vybavení počítače/zařízení. 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.

Bootovací sekvence

Velmi stručně si popíšeme bootovací sekvenci modulu SAM9260 s NETMF. Snáze tak porozumíme tomu, které komponenty je třeba do FLASH pamětí modulu SAM9260 nahrát:
  1. Po zapnutí napájení se spustí monitor RomBoot napevno vypálený do mikrokontroléru AT91SAM9260, který je srdcem modulu SAM9260.
  2. Monitor RomBoot prohledá FLASH paměť DataFlash, pokud nalezne bootstrap, spustí jej ve vnitřní paměti RAM (typu SRAM).
  3. Bootstrap provede základní inicializaci CPU, sériového portu DBGU a vnější RAM paměti typu SDRAM. Ta se stává hlavní operační pamětí.
  4. Bootstrap zavede z paměti DataFlash do paměti SDRAM zavaděč TinyBooter a spustí jej.
  5. Zavaděč TinyBooter inicializuje rozhraní USB device, FLASH paměť NandFlash a případně další periférie modulu SAM9260.
  6. Zavaděč TinyBooter počká cca 2 sekundy na příkaz z aplikace MFDeploy, po vypršení 2sec intervalu prohledá paměť NandFlash.
  7. Pokud v paměti NandFlash najde běhové prostředí NETMF, tzv. TinyCLR, tak jej zavede do operační paměti a spustí.
  8. TinyCLR inicializuje všechny periférie dle své konfigurace. Pak prohledá DEPLOYMENT sektor paměti NandFlash.
  9. Jestliže TinyCLR najde nějakou uživatelskou aplikaci spustí ji. Jinak čeká na příkazy debuggeru z Visual Studia, případně z aplikace MFDeploy.

Ovladač USB pro SAM-BA

Nyní si zprovozníme spojení mezi programem SAM-BA a modulem SAM9260 přes rozhraní USB. Sice bychom pro tyto účely mohli použít i sériový port DBGU, ale s ohledem na rychlost přenášení dat to nemá smysl.
  1. Vypneme napájení modulu SAM9260.
  2. Z pinheadu J7 na modulu SAM9260 sundáme jumper (necháme piny nepropojené).
  3. Propojíme počítač a modul USB kabelem.
  4. Zapneme napájení modulu.
  5. Operační systém detekuje modul SAM9260 na USB sběrnici a po chvíli automaticky nainstaluje pro modul ovladač GPS Camera Detect (COM7).
  6. Ve Správci zařízení najdeme modul v kategorii zařízení Porty (COM a LPT). Klikneme na něj pravým tlačítkem a zvolíme Aktualizovat software ovladače....
  7. V dalším dialogu vybereme Vyhledat ovladač v počítači a v dalším dialogu zvolíme Vybrat ovladač ze seznamu.
  8. V následujícím okně stiskneme tlačítko Z disku a zadáme cestu k ovladači od Atmelu, který je v adresáři , např. v adresáři C:\Program Files (x86)\ATMEL Corporation\sam-ba_2.12\drv.
  9. V zadané cestě zvolíme soubor atm6124_cdc.inf a dáme Otevřít.
  10. V původním okně se v textovém poli Model objeví položka AT91 USB to Serial Converter. Stiskneme tlačítko Další.
  11. Objeví se okno s varováním, že ovladač není digitálně podepsán - to nám nevadí, proto zvolíme Přesto nainstalovat tento software ovladače.
  12. Systém nám po chvíli činnosti oznámí, že ovladač zařízení AT91 USB to Serial Converter úspěšně nainstalovat, dáme Zavřít.
  13. Spustíme program SAM-BA.
  14. Mělo by se objevit malé dialogové okno, kde v by rozbalovacím seznamu Select the conection měla být hodnota \USBserial\COM7 (číslo COM portu se může lišit). Pokud je seznam prázdný nebo je tam jen hodnota COM1 - COM3, tak SAM-BA modul SAM9260 na rozhraní USB nedetekovala.
SAM-BA - okno s parametry připojení

Nahrání bootstrapu a zavaděče TinyBooter

Teď si ukážeme jak nahrát bootstrap a zavaděč TinyBooter do paměti DataFlash na modulu SAM9260. Budeme potřebovat program SAM-BA a USB kabel A-B pro propojení modulu SAM9260 a našeho počítače. Dále se předpokládá, že modul SAM9260 je připojen k USB device konektoru, např. pomocí základní desky uCSimply Baseboard - viz článek Začínáme s NETMF na modulu SAM9260.
  1. Stáhneme si poslední NETMF firmware z produktových stránek modulu SAM9260.
  2. Stažený zip archiv rozbalíme. Ve vzniklém adresáři nás bude zajímat soubor boot\00-bootstrap.bin - binárka bootstrapu.
  3. Vypneme napájení modulu SAM9260.
  4. Z pinheadu J7 na modulu SAM9260 sundáme jumper (necháme piny nepropojené).
  5. Propojíme počítač a modul USB kabelem.
  6. Zapneme napájení modulu.
  7. Spustíme program SAM-BA.
  8. Nasadíme zpět jumper na pinhead J7 na modulu SAM9260.
  9. Mezitím se objeví malé okno SAM-BA 2.12. V rozbalovacím seznamu Select the conection by měla být hodnota \USBserial\COM7 (číslo COM portu se může lišit). Pokud ne, ověřte propojení USB kabelem a zapojení modulu SAM9260 k USB konektoru.
  10. V stejném okně v rozbalovacím seznamu Select your board vybereme hodnotu sam9260-ucsimply a klikneme na tlačítko Connect. Pokud je nevidíte, zvětšete si okno programu (platí hlavně na širokoúhlých monitorech).
  11. Objeví se hlavní okno programu SAM-BA. Nás bude zajímat spodní polovina, kde je několik záložek nazvaných dle typu paměti. Vybereme záložku DataFlash.
  12. Na záložce v rozbalovacím seznamu Scripts zvolíme skript Enable Dataflash (SPI0 CS0) a klikneme na tlačítko Execute. Dole v textovém okně se objeví několik výpisů. Skript/applet by měl končit hlášením -I- Applet initialization done. Pokud si skript postěžuje, že nemohl detekovat zařízení (Can't detect known device), tak jste nejspíš zapomněli nasadit jumper na pinhead J7 na modulu SAM9260.
  13. Nahrajeme bootstrap - vybereme skript Send Boot File a stiskneme tlačítko Execute. V následujícím dialogu vybereme soubor boot\00-bootstrap.bin z balíčku firmware a stiskneme Otevřít. SAM-BA zapíše bootstrap do DataFlash, o čemž nás informuje výpisy v textovém poli: 0xDD8 bytes written by applet.
  14. Nahrajeme TinyBooter - do pole Address na záložce DataFlash zadáme hodnotu 0x1080.
  15. Dále v položce Send File Name: napíšeme nebo nalistujeme cestu k souboru boot\01-tinybooter-rtm.bin a stiskneme tlačítko Execute. SAM-BA bude chvíli zapisovat TinyBooter do paměti DataFlash, o čemž nás bude informovat sérií textových výpisů.
  16. Nyní můžeme ukončit program SAM-BA a vypnout napájení modulu.

Ovladač WinUSB pro NETMF

Pro komunikaci s modulem SAM9260, na kterém běží běhové prostředí NETMF (TinyCLR) nebo alespoň zavaděč běhového prostředí TinyBooter, můžeme použít sériový port DBGU nebo rozhraní USB. Kvůli rychlosti doporučujeme rozhraní USB.
Použití rozhraní USB si ovšem vynucuje instalaci odpovídajícího ovladače USB do systému MS Windows. Dříve bylo nutné napsat ovladač specifický pro dané zařízení, s příchodem systémů Windows Vista/7/8 je možné využít univerzální a podepsaný ovladač WinUSB. Ovladač WinUSB využíváme pro potřeby komunikace s modulem SAM9260 s nainstalovaným NETMF i my.
Poznámka: V současnosti funguje dodávaný ovladač WinUSB pouze na systému Windows 7 a vyšším.
  1. Ujistíme se, že na pinhead J7 na modulu SAM9260 je nasazen jumper, že je modul propojen s počítačem USB kabelem a že je v modulu nahraný bootstrap a TinyBooter nebo kompletní běhové prostředí NETMF.
  2. Stáhneme položku si WinUSB ovladač pro modul SAM9260 (kompatibilní s OS Win 7 32/64bit).
  3. Stažený zip archiv rozbalíme.
  4. Zapneme napájení modulu.
  5. Operační systém detekuje modul SAM9260 na USB sběrnici a po chvíli oznámí, že pro dané zařízení se nepodařilo najít odpovídající ovladač.
  6. Spustíme si správce zařízení, modul SAM9260 bude zobrazen v seznamu zařízení jako zařízení Micro Framework AT91SAM9260 v kategorii Další zařízení.
  7. Klikneme na něj pravým tlačítkem a zvolíme Aktualizovat software ovladače.... a dále Vyhledat ovladač v počítači.
  8. V dalším dialogu zvolíme Vybrat ovladač ze seznamu a v dalším okně pak stiskneme tlačítko Další.
  9. V následujícím okně stiskneme tlačítko Z disku a zadáme cestu ke staženému ovladači WinUSB, konkrétně souboru mfwinusb.inf a dáme Otevřít.
  10. V původním okně se v textovém poli Model objeví položka uCSimply SAM9260. Vybereme ji a stiskneme tlačítko Další.
  11. Objeví se varovné okno s varováním, že instalace tohoto ovladače není doporučena .... zvolíme Ano.
  12. Objeví se další varovné okno, s tím že systém Windows nemůže ověřit vydavatele tohoto softwaru (ovladač není digitálně podepsán) ... - zvolíme Přesto nainstalovat tento software ovladače.
  13. Systém nám po chvíli činnosti oznámí, že ovladač zařízení uCSimply SAM9260 úspěšně nainstaloval, dáme Zavřít.
  14. Modul SAM9260 se následně ve Správci zařízení objeví jako zařízení uCSimply SAM9260 v kategorii .NET Microframework devices.
  15. Spustíme si program MFDeploy (soubor MFDeploy.exe), který je součástí nainstalovaného NETMF SDK kitu, např. v adresáři C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Tools.
  16. V sekci Device v okně programu MFDeploy vybereme z rozbalovacího seznamu položku USB. Vedle by se mělo objevit zařízení uCSimply-SAM9260_a7e70ea2.
  17. Stiskneme klávesu F5 nebo zvolíme v menu Target-->Connect. Dole v textovém poli by se měl objevit výpis Connecting to uCSimply-SAM9260_a7e70ea2...Connected.
  18. Schválně zkuste stisknout tlačítko Ping. Musí se objevit výpis Pinging... TinyCLR (v případě kompletního běhového prostředí TinyCLR) nebo Pinging... TinyBooter, pokud máte nahraný zatím jen zavaděč TinyBooter. Tím jsme ověřili, že komunikace s modulem SAM9260 přes USB funguje.
MFDeploy

Nahrání běhového prostředí NETMF (TinyCLR)

Nejdůležitější komponentou firmware s běhovým prostředím NETMF je samozřejmě samotné běhové prostředí, tzv. TinyCLR. Postup jak jej nahrát do modulu SAM9260 si nyní ukážeme. Stačí nám k tomu aplikace MFDeploy a USB rozhraní.
  1. Ujistíme se, že na pinhead J7 na modulu SAM9260 je nasazen jumper, že je modul propojen s počítačem USB kabelem a že je v modulu nahraný bootstrap a TinyBooter. Dále musí být v obslužném počítači nainstalován ovladač WinUSB pro modul SAM9260 a kit NETMF SDK (kvůli aplikaci MFDeploy).
  2. Stáhneme si poslední NETMF firmware z produktových stránek modulu SAM9260.
  3. Stažený zip archiv rozbalíme. Zajímat nás tentokrát bude podadresář tinyclr\hex.
  4. Zapneme napájení modulu.
  5. Spustíme si aplikaci MFDeploy (soubor MFDeploy.exe), která je součástí nainstalovaného NETMF SDK kitu, např. v adresáři C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Tools.
  6. V sekci Device v okně aplikace MFDeploy vybereme z rozbalovacího seznamu položku USB. Vedle by se mělo objevit zařízení uCSimply-SAM9260_a7e70ea2.
  7. Stiskneme klávesu F5 nebo zvolíme v menu Target-->Connect. Dole v textovém poli by měl objevit výpis Connecting to uCSimply-SAM9260_a7e70ea2...Connected.
  8. Vedle textového pole Image File je tlačítko Browse. Stiskneme je a v následujícím dialogovém okně nalistujeme cestu až k obsahu adresáře tinyclr\hex v balíčku firmware. Všechny tři položky: ER_CONFIG, ER_DAT a ER_FLASH v adresáři tinyclr\hex označíme a dáme Otevřít.
  9. Nyní bychom v okně aplikace MFDeploy měli vidět seznam binárních souborů, které jsme předtím vybrali.
  10. Stiskneme tlačítko Deploy. Aplikace MFDeploy položku po položce nahraje do paměti NandFlash v modulu SAM9260 a pak spustí TinyCLR.
  11. Zkontrolujeme, že TinyCLR opravdu běží. Stiskneme tlačítko Ping. Musí se objevit výpis Pinging... TinyCLR. Pokud se objeví nějaké problémy v komunikaci, zkusíme MFDeploy odpojit pomocí klávesy Ctrl+F5 (nebo v menu Target-->Disconnect), restartujeme modul (vypnout/zapnout napájení) a znovu se pomocí MFDeploy připojíme.
  12. Gratulujeme. Teď je běhové prostředí NETMF kompletně nahrané. Můžete začít nahrávat a ladit aplikace z prostředí Visual Studia.
Poznámka: Běhové prostředí TinyCLR můžete nahrávat / aktualizovat i když TinyCLR už běží a případně vykonává nějaký uživatelský program. Občas je ale odezva modulu tak dlouhá, že je ohlášena chyba komunikace. Pak je snažší modul resetovat a co nejdříve poté, co se modul znovu objeví v sekci Device, stisknout tlačítko Ping. Tím bychom měli přerušit automatické spuštění TinyCLR a dostat se do režimu, kdy běží jen zavaděč TinyBooter.

Dokumentace a firmware