Blog:PMD 32-SD s podporou SDHC a FAT32

Z PMD 85 Infoserver


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

Nastavenie FUSE bitov pre mikroprocesor ATmega644 v programe PonyProg2000
Nastavenie FUSE bitov pre mikroprocesor ATmega644 v programe PonyProg2000

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