Nahrání firmware
Z výroby je v modulu nahraný kompletní firmware v poslední verzi platné v době vyrobení modulu. Modul je proto možné ihned používat. Nicméně kvůli možnosti aktualizace nebo možnosti si nahrát vlastní upravený firmware si ukážeme jak nahrát kompletní firmware.
Teď je zřejmě nejvhodnější doba si říct jak je strukturováván balíček firmware pro modul SAM9260. Balíček firmware je distribuován jako soubor archivu typu zip se jménem např. ucsimply-sam9260-fw-00.10.zip, kde dvě číselné dvojice označují verzi firmware. Čím je toto číslo větší, tím je firmware novější. Po rozbalení archivu vznikne stejnojmenný adresář, např. ucsimply-sam9260-fw-00.10, s tímto obsahem:
- podadresář boot-dataflash obsahuje binární soubory bootstrapu (dataflash_ucsimply_sam9260.bin) a zavaděče U-Bootu (uboot-dataflash.bin) určené pro bootování z paměti DataFlash. Obdobně podadresář boot-nandflash obsahuje bootstrap a U-Boot pro bootování z paměti NandFlash.
- podadresář kernel obsahuje binární obraz linuxového jádra, např. soubor s názvem 2.6.38.8-ucsimply_sam9260.bin.
- podadresář rootfs obsahuje soubor ubi-nandflash.bin s obrazem kořenového souborového systému, který je určen pro nahrání do paměti NandFlash. Tento obraz obsahuje vlastně dva oddíly souborového systému UBI/UBIFS. Jeden oddíl o velikosti 128MB obsahuje kompletní kořenový souborový systém pro Linux. Druhý je prázdný a zaplňuje zbývající volnou kapacitu paměti NandFlash. Je určen pro uložení uživatelských dat v prostředí systému Linux.
Nejnovější firmware pro modul SAM9260 je dostupný zdehttp://www.ucsimply.cz/products/modsam9260/.
Předpoklady
Abýycho modli do modulu SAM9260 úspěšně nahrát firmware, je potřeba, aby byly splněny následující předpoklady:
- Modul je připojen na zdroj napětí 5V / min. 1A.
- Je zapojeno rozhraní USB device modulu (viz návod výše).
- Je zapojeno DBGU (sériové) rozhraní modulu (viz návod v sekci Začínáme).
- Je zapojeno ethernetové rozhraní modulu (viz návod v sekci Začínáme).
Nahrání firmware do DataFlash
V tomto odstavci si ukážeme jak se nahrává/aktualizuje firmware, když bootstrap, U-Boot a linuxové jádro jsou uloženy v paměti DataFlash a kořenový souborový systém v paměti NandFlash. Tato varianta je použita i ve výrobním nastavení.
Předpokládáme, že modul je odpojen od napájecího napětí a že v adresáři D:\Temp je rozbalený balíček firmware.
Postup:
- Sundáme jumper z pinheadu J7 na modulu a zapneme napájecí napětí.
- Spustíme aplikaci SAM-BA
- V úvodní obrazovce vybereme spojení přes \USBserial\COM7 a desku sam9260-ucsimply. Stiskneme tlačítko Connect.
- Nasadíme zpět jumper na pinhead J7 na modulu.
- Inicializujeme paměť DataFlash - v hlavním okně SAM-BY na záložce DataFlash v druhé části obrazovky vybereme skript Enable Dataflash (SPI0 CS0) a stiskneme tlačítko Execute.SAM-BA zareaguje výpisy o provádění skriptu:
-I- DATAFLASH::Init 0 (trace level : 4) -I- Loading applet applet-dataflash-sam9260.bin at address 0x20000000 -I- Memory Size : 0x420000 bytes -I- Buffer address : 0x20002C30 -I- Buffer size: 0x18C0 bytes -I- Applet initialization done
Tím nám SAM-BA oznamuje, že DataFlash byla úspěšně zinicializována. Pokud jsme ovšem zapomněli nasadit zpět jumper nebo je špatně ještě něco jiného, obdržíme chybové hlášeni: -E- Script error: Error Initializing DataFlash Applet (Can’t detect known device). - Do DataFlash nahrajeme bootstrap - vybereme skript Send Boot File a stiskneme tlačítko Execute. V následujícím dialogu vybereme soubor dataflash_ucsimply_sam9260.bin a dáme Otevřít. SAM-BA následně zapíše bootstrap do DataFlash, o čemž nás informuje výpisy v textovém poli:
GENERIC::SendFile D:/Temp/ucsimply-sam9260-fw-00.10/boot-dataflash/dataflash_ucsimply_sam9260.bin at address 0x0 -I- File size : 0xDD0 byte(s) -I- Writing: 0xDD0 bytes at 0x0 (buffer addr : 0x20002C30) -I- 0xDD0 bytes written by applet
- Do DataFlash nahrajeme U-Boot - do pole Send File Name napíšeme umístění souboru uboot-dataflash.bin, příp. použijeme tlačítko s obrázkem adresáře pro určení cesty k souboru. Do pole Address zadáme adresu 0x5280 (viz obrázek 1.2) a stiskneme tlačítko Send File. SAM-BA začne zapisovat binární soubor U-Bootu do DataFlash. Ukončení zápisu poznáme podle toho, že hlášení uvozené -I- jsou zakončeny promptem (sam-ba_2.11) 32 % (procenta se mohou lišit) a že zmizí malé okýnko Please wait.
- Do DataFlash nahrajeme linuxové jádro - postup je stejný jako v předchozím bodu, jen do pole Address zadáme tentokrát hodnotu 0x65520 a samozřejmě vybereme binární soubor obrazu jádra, např. 2.6.38.8-ucsimply_sam9260.bin.
- Přejdeme na záložku NandFlash, kde vybereme skript Enable NandFlash a dáme jej provést. SAM-BA zareaguje hlášením:
-I- NANDFLASH::Init (trace level : 4) -I- Loading applet applet-nandflash-sam9260.bin at address 0x20000000 -I- Memory Size : 0x10000000 bytes -I- Buffer address : 0x20003DA4 -I- Buffer size: 0x20000 bytes -I- Applet initialization done
- Do NandFlash nahrajeme obraz kořenového souborové systému - v poli Send File Name vybereme cestu k souboru ubi-nandflash.bin, pole Address necháme na hodnotě 0x0 a dáme Send File.Poznámka: Pokud při vytváření obrazu kořenového souborového systému měníme počet a/nebo velikost oddílů souborového systému UBI/UBIFS, tak musíme nejprve celou paměť NandFlash smazat pomocí skriptu Erase All a teprve pak nahrát obraz kořenového souborového systému.
- Zavřeme aplikaci SAM-BA a vypneme napájecí napětí.
- Spustíme si terminálový program (např. Putty), abychom přes sériový port mohli sledovat bootovací zprávy jednotlivých komponent firmware (předpokládáme, že modul má zapojen sériový port DBGU na převodník TTL/RS232 a konektor CAN9F).
- Zapneme napájecí napětí a sledujeme bootování modulu. Pokud U-Boot zobrazí za výpisem oddílů DataFlash zprávu: *** Warning - bad CRC, using default environment, je nutné přerušit bootování stiskem libovolné klávesy, změnit výchozí MAC adresu na svoji vlastní a uložit proměnné prostředí U-Bootu do DataFlash:
- Do promptu zavaděče U-Boot napíšeme příkaz pro změnu MAC adresy (nová MAC adresa bude např. 02:40:50:60:70:90):
u-boot> setenv ethaddr 02:40:50:60:70:90
- Změnu uložíme trvale do DataFlash příkazem:
u-boot> saveenv
- Resetujeme module příkazem:
u-boot> reset
- Pokud varovná zpráva zavaděče U-Boot zmizela, byli jsme úspěšní.
- Do promptu zavaděče U-Boot napíšeme příkaz pro změnu MAC adresy (nová MAC adresa bude např. 02:40:50:60:70:90):
- Počkáme až modul kompletně nabootuje a přihlásíme se do Linuxu, uživatel root, heslo toor.
Nahrání firmware do NandFlash
Tento odstavec je určen pro všechny, kteří chtějí používat pro uložení kompletního firmware modulu pouze NandFlash. Tj. když bootstrap, U-Boot, linuxové jádro a obraz kořenového souborového systému jsou pouze a jen v paměti NandFlash.
Předpokládáme, že modul je odpojen od napájecího napětí a že v adresáři D:\Temp je rozbalený balíček firmware.
Postup:
- Sundáme jumpery z pinheadu J5 a pinheadu J7 na modulu a zapneme napájecí napětí.
- Spustíme aplikaci SAM-BA
- V úvodní obrazovce vybereme spojení přes \USBserial\COM7 a desku sam9260-ucsimply. Stiskneme tlačítko Connect.
- Nasadíme zpět jumper na pinhead J5 na modulu (pinhead J7 pro DataFlash necháme otevřený).
- Inicializujeme paměť NandFlash - v hlavním okně SAM-BY na záložce NandFlash v druhé části obrazovky vybereme skript Enable Nandflash a stiskneme tlačítko Execute.SAM-BA zareaguje výpisy o provádění skriptu:
-I- NANDFLASH::Init (trace level : 4) -I- Loading applet applet-nandflash-sam9260.bin at address 0x20000000 -I- Memory Size : 0x10000000 bytes -I- Buffer address : 0x20003DA4 -I- Buffer size: 0x20000 bytes -I- Applet initialization done
Tím nám SAM-BA oznamuje, že NandFlash byla úspěšně zinicializována. Pokud jsme ovšem zapomněli nasadit zpět jumper, tak se skript sice jakoby provede, ale aplikace SAM-BA celá zamrzne a pomůže ji jen ukončit přes správce úloh. - Do NandFlash nahrajeme bootstrap - vybereme skript Send Boot File a stiskneme tlačítko Execute. V následujícím dialogu vybereme soubor nandflash_ucsimply_sam9260.bin a dáme Otevřít. SAM-BA následně zapíše bootstrap do NandFlash, o čemž nás informují výpisy v textovém poli:
GENERIC::SendFile D:/Temp/ucsimply-sam9260-fw-00.10/boot-nandflash/nandflash_ucsimply_sam9260.bin at address 0x0 -I- File size : 0xF54 byte(s) -I- Writing: 0xF54 bytes at 0x0 (buffer addr : 0x20003DA4) -I- 0xF54 bytes written by applet
- Do NandFlash nahrajeme U-Boot - do pole Send File Name napíšeme umístění souboru uboot-nandflash.bin, příp. použijeme tlačítko s obrázkem adresáře pro určení cesty k souboru. Do pole Address zadáme adresu 0x20000 (viz obrázek 1.3) a stiskneme tlačítko Send File. SAM-BA začne zapisovat do DataFlash binární soubor zavaděče U-Boot . Ukončení zápisu poznáme podle toho, že hlášení uvozené -I- jsou zakončeny promptem (sam-ba_2.11) 32 % (procenta se mohou lišit) a že zmizí malé okýnko Please wait.
- Do DataFlash nahrajeme linuxové jádro - postup je stejný jako v předchozím bodu, jen do pole Address zadáme tentokrát hodnotu 0xC0000 a samozřejmě vybereme binární soubor obrazu jádra, např. 2.6.38.8-ucsimply_sam9260-nand.bin.
- Do NandFlash nahrajeme obraz kořenového souborové systému - v poli Send File Name vybereme cestu k souboru ubi-nandflash.bin, pole Address necháme na hodnotě 0x3C0000 a dáme Send File.Poznámka: Pokud při vytváření obrazu kořenového souborového systému měníme počet a/nebo velikost oddílů souborového systému UBI/UBIFS, tak musíme nejprve celou paměť NandFlash smazat pomocí skriptu Erase All a teprve pak nahrát obraz kořenového souborového systému, resp. znovu kompletní firmware.
- Zavřeme aplikaci SAM-BA a vypneme napájecí napětí.
- Spustíme si terminálový program (např. Putty), abychom přes sériový port mohli sledovat bootovací hlášky jednotlivých komponent firmware (předpokládáme, že modul má zapojen sériový port DBGU na převodník TTL/RS232 a na konektor CAN9F).
- Zapneme napájecí napětí a sledujeme bootování modulu. Pokud U-Boot zobrazí hlášku: *** Warning - bad CRC, using default environment, je nutné přerušit bootování stiskem libovolné klávesy, změnit výchozí MAC adresu na svoji vlastní a uložit proměnné prostředí U-Bootu do NandFlash:
- Do promptu U-Bootu napíšeme příkaz pro změnu MAC adresy (nová MAC adresa bude např. 02:40:50:60:70:90):
u-boot> setenv ethaddr 02:40:50:60:70:90
- Změnu uložíme trvale do NandFlash příkazem:
u-boot> saveenv
- Resetujeme module příkazem:
u-boot> reset
- Jestliže jsme byli úspěšní, varovná hláška U-Bootu zmizela.
- Do promptu U-Bootu napíšeme příkaz pro změnu MAC adresy (nová MAC adresa bude např. 02:40:50:60:70:90):
- Počkáme až modul kompletně nabootuje a přihlásíme se do Linuxu, uživatel root, heslo toor.