Fórum témák

» Több friss téma
Cikkek » 28C16 EEPROM Programozó PIC16F887 mikrokontrollerrel
28C16 EEPROM Programozó PIC16F887 mikrokontrollerrel
Szerző: tomcii, idő: Kedd, 20:02, Olvasva: 104, Oldal olvasási idő: kb. 4 perc
Lapozás: OK   5 / 6

Az applikáció nagyvonalakban:

main.png

A programozóhoz egy saját fejlesztésű Windows alkalmazás is készült C# nyelven, WinForms környezetben. Az alkalmazás célja az volt, hogy egyszerű kezelőfelületet biztosítson a 28C16 EEPROM memória olvasásához, írásához, és szerkesztéséhez.

A szoftver nem univerzális EEPROM kezelőként készült, hanem kifejezetten ehhez a hardverhez és firmware-hez lett optimalizálva. Emiatt a kommunikáció egyszerű, gyors és könnyen követhető maradt.

Technológia

Az alkalmazás:

  • C#
  • .NET WinForms
  • System.IO.Ports.SerialPort

alapokra épül.

A kommunikáció hagyományos soros porton keresztül történik, amelyet az MCP2221A USB-UART illesztő biztosít.

A program induláskor:

  • inicializálja a hex editor nézetet,
  • betölti az elérhető baud rate-eket,
  • betölti az időtúllépési értékeket,
  • majd automatikusan kilistázza az elérhető COM portokat.

Kommunikációs architektúra

A PC-s alkalmazás és a PIC firmware között egyszerű ASCII parancsprotokoll működik.

connected.png

A kommunikáció logikai felépítése:

Windows App
        ↓
SerialPort
        ↓
MCP2221A
        ↓
PIC16F887
        ↓
28C16 EEPROM

A PC csak magas szintű parancsokat küld, például:

R 0x0000
W 0x0000 0xAA
D 0x0000 0x40

A firmware végzi:

  • a pontos EEPROM időzítést,
  • a buszkezelést,
  • az írási pollingot,
  • valamint a visszaellenőrzést.

Ez nagy előny, mert az alkalmazásnak nem kell közvetlenül hardverszintű memóriakezeléssel foglalkoznia.

Soros kapcsolat kezelése

Az alkalmazás a SerialPort osztályt használja.

Kapcsolódáskor:

  • kiválasztja a COM portot,
  • beállítja a baud rate-et,
  • konfigurálja a timeout értékeket,
  • majd megnyitja a kapcsolatot.

A firmware-rel történő első kapcsolatfelvétel során az alkalmazás egy egyszerű ping parancsot küld:

P

Erre a programozó válaszol:

PING: OK EEPROM-PGM HW V2 tomcii

Ez biztosítja, hogy valóban a megfelelő eszközhöz kapcsolódott a szoftver.

Belső memória buffer

Az alkalmazás a teljes EEPROM tartalmát RAM-ban tárolja:

private byte[] _buffer = new byte[2048];

Ez a buffer reprezentálja:

  • a betöltött BIN fájlt,
  • vagy az EEPROM aktuális tartalmát.

A legtöbb művelet ezen a belső bufferen dolgozik.

Ez lehetővé teszi:

  • a gyors hex editor megjelenítést,
  • a szerkesztést,
  • a BIN exportot,
  • valamint az összehasonlítást.

Hex editor nézet

A program egyik központi része a saját hex editor felület.

A megjelenítés:

  • 16 byte/sor
  • 128 sor
  • HEX + ASCII nézet

felépítést használ.

A nézet tartalmaz:

  • memória címet,
  • 16 hexadecimális byte-ot,
  • ASCII reprezentációt.

Példa:

0000  48 45 4C 4C 4F 20 57 4F 52 4C 44 FF FF FF FF  HELLO WORLD....

A hex editor DataGridView komponensre épül, egyedi formázással:

  • Consolas font
  • fix szélességű oszlopok
  • középre igazított hex byte-ok
  • külön ASCII oszlop

Ez nagyon retro debugger/EPROM programmer hangulatot ad az alkalmazásnak.

EEPROM olvasása

readcomplete.png

Az olvasás blokkos módban történik.

Az alkalmazás:

  • 64 byte-os blokkokban
  • végigolvassa a teljes EEPROM-ot.

A firmware-nek küldött parancs:

D 0x0000 0x40

A firmware válasza:

B 0000 40 AA BB CC ...

A szoftver:

  • feldolgozza a hexadecimális válaszokat,
  • majd feltölti a _buffer tömböt.

Ezután automatikusan frissül:

  • a hex editor,
  • az ASCII nézet,
  • valamint a log ablak.

A blokkos olvasás sokkal gyorsabb, mint byte-onként lekérdezni az EEPROM teljes tartalmát.

EEPROM írása

Íráskor az alkalmazás végigmegy a teljes 2048 byte-os bufferen.

Minden byte-ra külön írási parancs kerül kiküldésre:

W 0x0123 0xAA

A firmware:

  • végrehajtja az írást,
  • pollinggal ellenőrzi,
  • majd visszaküldi az eredményt.

Sikeres válasz:

 
OK 0123 AA
 
EEPROM törlése

eraseprogress.png

A 28C16 EEPROM egyik előnye, hogy az EPROM memóriákkal ellentétben nincs szükség UV-fényes törlésre, vagy speciális programozófeszültségre. A memória tartalma egyszerűen felülírható normál 5 V-os működés mellett, ezért a teljes törlés gyakorlatilag abból áll, hogy a firmware minden címet 0xFF értékkel ír felül.

A firmware támogat egy úgynevezett „Fast Erase” működést is, amely során a teljes memória blokkos, automatikus végigírása történik. Ilyenkor a programozó gyors egymásutánban végigmegy az összes memóriahelyen, miközben az írás után polling alapú visszaellenőrzést végez, így biztosítva, hogy a törlés valóban sikeresen megtörtént.

Az alkalmazás minden válasz után ellenőrzi:

  • sikeres volt-e az írás,
  • timeout történt-e,
  • vagy kommunikációs hiba jelent meg.

Írás közben progress bar mutatja az aktuális állapotot.

BIN fájl kezelés

Az alkalmazás képes:

  • BIN fájl betöltésére
  • BIN fájl mentésére

Betöltéskor:

  • a fájl tartalma bekerül a _buffer tömbbe,
  • majd automatikusan frissül a hex editor.

Ha a fájl kisebb 2048 byte-nál:

  • a maradék terület nullázódik.

Ez lehetővé teszi:

  • firmware dumpok kezelését,
  • ROM archiválást,
  • retro BIOS mentéseket,
  • saját memóriaimage-ek szerkesztését.

Naplózás

Az alkalmazás minden fontos eseményt naplóz:

  • kapcsolódás
  • parancsok
  • firmware válaszok
  • hibák
  • olvasás/írás állapotok

Példa:

14:22:31  Connected to COM5
14:22:32 > P
14:22:32 < PING: OK EEPROM-PGM HW V2 tomcii
14:22:35 > D 0x0000 0x40
14:22:35 < B 0000 40 ...

Ez fejlesztés közben rendkívül hasznos volt hibakereséshez és kommunikációs problémák diagnosztikájához.

Műveletkezelés és megszakítás

Az alkalmazás figyeli, hogy fut-e aktív művelet:

_operationRunning

Valamint támogatja a megszakítást is:

_cancelRequested

Ez különösen fontos:

  • teljes EEPROM íráskor
  • vagy hosszabb olvasási műveleteknél.

A felhasználó megszakíthatja a folyamatot anélkül, hogy az alkalmazás instabillá válna.

Timeout kezelés

A soros kommunikáció egyik legfontosabb része a timeout kezelés.

Az alkalmazás:

  • állítható timeout értékeket használ
  • 500–10000 ms között

Ez fejlesztés közben különösen hasznos volt, mert:

  • hibás firmware esetén
  • vagy instabil kommunikációnál

nem fagyott meg a teljes alkalmazás.

Felhasználói felület

A kezelőfelület szándékosan egyszerű maradt.

Főbb elemek:

  • COM port választó
  • baud rate választó
  • timeout választó
  • Connect/Disconnect
  • Read
  • Write
  • Load BIN
  • Save BIN
  • Hex editor
  • Log ablak
  • Progress bar

A cél nem modern “flat design” GUI készítése volt, hanem egy klasszikus, műszer jellegű EEPROM programmer alkalmazás létrehozása.

Ez szándékosan idézi a régi:

  • EPROM programozók
  • debug eszközök
  • szervizszoftverek

hangulatát.

Miért különösen hasznos ez a felépítés?

Az alkalmazás egyik legnagyobb előnye, hogy a hardver és a firmware szinte teljesen leválasztja a PC-t az EEPROM fizikai kezeléséről.

A Windows alkalmazásnak:

  • nem kell időzítéseket kezelnie,
  • nem kell buszvezérléssel foglalkoznia,
  • nem kell pollingot végeznie.

A PIC firmware mindezt elintézi.

Ez:

  • egyszerűbbé teszi a PC oldali fejlesztést,
  • stabilabb kommunikációt ad,
  • valamint könnyebben bővíthetővé teszi a rendszert.

A PC-s alkalmazás egy egyszerű, de jól használható kezelőfelületet biztosít a 28C16 EEPROM programozóhoz.

A szoftver:

  • soros kommunikációval vezérli a hardvert,
  • saját hex editor felületet tartalmaz,
  • támogatja a BIN import/export funkciókat,
  • naplózza a kommunikációt,
  • valamint kényelmes felhasználói felületet biztosít a memória kezeléséhez.

A projekt különlegessége, hogy:

  • a hardver,
  • a firmware,
  • és a PC-s alkalmazás

egyaránt saját fejlesztésű, így a teljes rendszer működése átlátható és könnyen továbbfejleszthető maradt.

Az utolsó oldalon fogom összegezni a projektet, valamint közzétenni az utánépítéshez szükséges fájlokat, és az alkatrészlistát is.


A cikk még nem ért véget, lapozz!
Következő: »»   5 / 6
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem