Blog:PMD 32-SD s podporou SDHC a FAT32
Z PMD 85 Infoserver
Tento článok je pokračovaním článkov Postavte si PMD 32-SD a Nový firmvér pre PMD 32-SD. |
Obsah |
PMD 32-SD s podporou SDHC a FAT32
Pri výrobe ďalšej várky PMD 32-SD sa vyskytla prosba, či by sa nemohla do firmvéru pridať aj podpora SDHC kariet s FAT32, keďže SD karty s veľkosťou do 2GB, u ktorých je možné ešte mať FAT16, sa už veľmi nedajú kúpiť.
Použitá knižnica pre prácu s SD kartou MMC/SD/SDHC card library má podporu pre SDHC a FAT32, avšak táto podpora sa do použtého MCU ATmega32 nevošla a preto bola vypnutá. Riešením bola náhrada ATmega32 za ATmega644, ktorý má rovnaký pinout, má však až 64kB FLASH pre program, kam sa už podpora pre SDHC a FAT32 v pohode vojde. Nie je teda potrebná, žiadna iná zmena hardvéru.
Nový firmvér
Nový firmvér sa hlási verziou PMD 32-SD v3.2 - 26 Feb 2012. Okrem podpory SDHC a FAT32 pribudli ešte dve novinky.
- V definícii obrazu disku je možné voliteľne uviesť aj veľkosť fyzického sektora pôvodného disku. PMD 32-SD túto informáciu nijako nevyužíva a je určená výhradne pre prípadnú potrebu systému, ktorý s PMD 32-SD komunikuje.
- Pribudol nový povel P, ktorým je možné získať definičné parametre vloženého disku.
Tieto dve drobnosti tak umožňujú, aby mohol systém dynamicky reagovať na zmenu typu disku v konkrétnej "mechanike". Ako to bude riešiť, je výhradne v jeho réžii.
Definícia obrazu disku má (môže mať) teraz tento formát:
EXT TRACKS SECTORS_PER_TRACK [PHYSICAL_SECTOR_SIZE]
, kde
-
EXT
je prípona súboru bez bodky -
TRACKS
je celkový počet stôp na disku (obe strany dohromady) - 1 až 256 -
SECTORS_PER_TRACK
je počet (logických) sektorov na stopu - 1 až 64 -
PHYSICAL_SECTOR_SIZE
je voliteľná položka určujúca veľkosť fyzického sektora. Hodnota sa uvádza v rozsahu 0 až 7, čo zodpovedá veľkosti sektora 128 až 16384 bytov:SEC_SIZE = 2^PHYSICAL_SECTOR_SIZE*128
. Predvolená hodnota tohto parametra, ak nie je uvedený, je 0.
Povel P vráti pre vybranú mechaniku hodnoty TRACKS
, SECTORS_PER_TRACK
a PHYSICAL_SECTOR_SIZE
.
Žiadne iné zmeny v komunikácii a ani ovládaní nenastali.
Napálenie firmvéru do MCU
Pre napálenie firmvéru do FLASH pamäti MCU sú rovnaké požiadavky, aké boli uvedené v prvom článku o PMD 32-SD. Jediný problém je v tom, že PonyProg2000 pozná iba ATmega644, ale nie ATmega644-PA. Pokiaľ sa ale odignoruje hlásenie o neznámom type MCU, tak sa PonyProg2000 nechá presvedčiť, aby MCU napálil.
Lepšie bude ale použiť konzolovú utilitu AVRDUDE, ktorá pozná aj ATmega644-PA, a pre ktorú sa môže použiť rovnaký napaľovací kábel, ako pre PonyProg.
avrdude -p m644p -P com1 -c siprog -U lock:w:0x3F:m -U efuse:w:0xFF:m -U hfuse:w:0xD7:m -U lfuse:w:0xF7:m -U flash:w:./path/pmd32sd.hex
MCU je samozrejme možné napáliť aj v inom programátore, ktorý ATmega644 podporuje. Nesmie sa ale zabudnúť na správne nastavenie fuse bitov, viď. obrázok z PonyProgu.
Na stiahnutie
- zdrojové súbory firmvéru PMD 32-SD verzia 3.2 (obsahuje aj hotový BIN a HEX)
- schéma, DPS PMD 32-SD do programu Eagle (vrátane gerberov a dokumentácie)
- popis komunikačného protokolu PMD 32 a PMD 32-SD, komentovaný výpis (disassembling EPROM) ovládacieho programu disketovej jednotky PMD 32 a časti rozšírenia monitora PMD 85-3 pre spoluprácu s PMD 32