Ero sivun ”Padauk Programmer” versioiden välillä

Kohteesta Helsinki Hacklabin wiki
Loikkaa: valikkoon, hakuun
Rivi 78: Rivi 78:
  
 
== Käyttö ==
 
== Käyttö ==
Padauk Programmerin käyttöön tarvitset ohjelman nimeltä <code> easypdkprog </code>, joka on saatavilla täältä: [https://github.com/free-pdk/easy-pdk-programmer-software/releases/tag/1.3 Free PDK]
+
Padauk Programmerin käyttöön tarvitset tietokoneeseesi ohjelman nimeltä <code> easypdkprog </code>, joka on saatavilla täältä: [https://github.com/free-pdk/easy-pdk-programmer-software/releases/tag/1.3 Free PDK]
  
 
Optiota -v ei yleensä tarvita, mutta käytetään näissä esimerkeissä.<br />
 
Optiota -v ei yleensä tarvita, mutta käytetään näissä esimerkeissä.<br />
 
<br />
 
<br />
 
Ohjelman toimivuuden voi testata seuraavasti:<br />
 
Ohjelman toimivuuden voi testata seuraavasti:<br />
<code>./easypdkprog -v</code><br />
+
  <code>./easypdkprog -v
<code>Usage: easypdkprog [OPTION...] list|probe|read|write|erase|start [FILE]<br />
+
  Usage: easypdkprog [OPTION...] list|probe|read|write|erase|start [FILE]
Try `easypdkprog --help' or `easypdkprog --usage' for more information.<br /></code>
+
  Try `easypdkprog --help' or `easypdkprog --usage' for more information.</code>
 
<br />
 
<br />
Ohjelmointilaitteen toiminnan voi testata seuraavilla komennoilla:<br />
+
Ohjelmointilaitteen toiminnan voi testata seuraavalla komennolla:<br />
<code>./easypdkprog -v probe</code><br />
+
  <code>./easypdkprog -v probe</code><br />
 
<br />
 
<br />
 
Ohjelma vastaa seuraavasti:<br />
 
Ohjelma vastaa seuraavasti:<br />
 
* Ohjelmointilaitetta ei tunnisteta<br />
 
* Ohjelmointilaitetta ei tunnisteta<br />
<code>./easypdkprog -v probe</code><br />
+
  <code>./easypdkprog -v probe
<code>Searching programmer... (tried serial ports up to /dev/ttyACM998) No programmer found<br />
+
  Searching programmer... (tried serial ports up to /dev/ttyACM998) No programmer found</code>
<br /></code>
 
 
* Ohjelmointilaite tunnistetaan, ei prosessoria<br />
 
* Ohjelmointilaite tunnistetaan, ei prosessoria<br />
<code>./easypdkprog -v probe</code><br />
+
  <code>./easypdkprog -v probe
<code>Searching programmer... found: /dev/ttyACM0<br />
+
  Searching programmer... found: /dev/ttyACM0
FREE-PDK EASY PROG - Hardware:1.2 Firmware:1.3 Protocol:1.3<br />
+
  FREE-PDK EASY PROG - Hardware:1.2 Firmware:1.3 Protocol:1.3
Probing IC... Nothing found.<br />
+
  Probing IC... Nothing found.</code>
<br /></code>
 
 
* Ohjelmointilaite tunnistetaan, prosessori tunnistetaan<br />
 
* Ohjelmointilaite tunnistetaan, prosessori tunnistetaan<br />
<code>./easypdkprog -v probe</code><br />
+
  <code>./easypdkprog -v probe
<code>Searching programmer... found: /dev/ttyACM0<br />
+
  Searching programmer... found: /dev/ttyACM0
FREE-PDK EASY PROG - Hardware:1.2 Firmware:1.3 Protocol:1.3<br />
+
  FREE-PDK EASY PROG - Hardware:1.2 Firmware:1.3 Protocol:1.3
Probing IC... found.<br />
+
  Probing IC... found.
TYPE:FLASH RSP:0x1AA1 VPP=4.50 VDD=2.00<br />
+
  TYPE:FLASH RSP:0x1AA1 VPP=4.50 VDD=2.00
IC is supported: PFS154 ICID:0xAA1<br />
+
  IC is supported: PFS154 ICID:0xAA1</code>
<br /></code>
 
 
* Ohjelmointilaite tunnistetaan, prosessori tunnistetaan, jossa helloworld esimerkki<br />
 
* Ohjelmointilaite tunnistetaan, prosessori tunnistetaan, jossa helloworld esimerkki<br />
<code>./easypdkprog -v start</code><br />
+
  <code>./easypdkprog -v start
<code>Searching programmer... found: /dev/ttyACM0<br />
+
  Searching programmer... found: /dev/ttyACM0
FREE-PDK EASY PROG - Hardware:1.2 Firmware:1.3 Protocol:1.3<br />
+
  FREE-PDK EASY PROG - Hardware:1.2 Firmware:1.3 Protocol:1.3
Running IC (5.00V)... IC started, press [Esc] to stop.<br />
+
  Running IC (5.00V)... IC started, press [Esc] to stop.
Connected @118226 baud<br />
+
  Connected @118226 baud
Hello World!<br />
+
  Hello World!
Hello World!<br />
+
  Hello World!
Hello World!<br />
+
  Hello World!
<ESC><br />
+
  [ESC]
IC stopped<br /></code>
+
  IC stopped</code>
 
<br />
 
<br />
 
* Ylläviitatun esimerkkiohjelman helloworld saa ladattua prosessoriin PFS154 seuraavasti:<br />
 
* Ylläviitatun esimerkkiohjelman helloworld saa ladattua prosessoriin PFS154 seuraavasti:<br />
<code>./easypdkprog -v -n PFS154 write helloworld_pfs154.ihx</code><br />
+
  <code>./easypdkprog -v -n PFS154 write helloworld_pfs154.ihx
<code>Searching programmer... found: /dev/ttyACM0<br />
+
  Searching programmer... found: /dev/ttyACM0
FREE-PDK EASY PROG - Hardware:1.2 Firmware:1.3 Protocol:1.3<br />
+
  FREE-PDK EASY PROG - Hardware:1.2 Firmware:1.3 Protocol:1.3
Erasing IC... done.<br />
+
  Erasing IC... done.
Blank check IC... done.<br />
+
  Blank check IC... done.
Writing IC (184 words)... done.<br />
+
  Writing IC (184 words)... done.
Verifiying IC... done.<br />
+
  Verifiying IC... done.
Calibrating IC<br />
+
  Calibrating IC
* IHRC SYSCLK=8000000Hz @ 4.00V ... calibration result: 7966623Hz (0x83)  done.<br />
+
  * IHRC SYSCLK=8000000Hz @ 4.00V ... calibration result: 7966623Hz (0x83)  done.</code>
<br /></code>
+
 
 +
Ohjelman komennot saa näytölle seuraavasti:<br />
 +
  <code>./easypdkprog --help
 +
  Usage: easypdkprog [OPTION...] list|probe|read|write|erase|start [FILE]
 +
  easypdkprog -- read, write and execute programs on PADAUK microcontroller
 +
  https://free-pdk.github.io
 +
 
 +
      --allowsecfuse        Allow setting the security fuse.
 +
  -b, --bin                  Binary file output. Default: ihex8
 +
  -f, --fuse=FUSE            FUSE value, e.g. 0x31FD
 +
  -i, --icid=ID              IC ID 12 bit, e.g. 0xAA1
 +
      --noblankchk          Skip blank check before write
 +
      --nocalibrate          Skip calibration after write.
 +
      --noerase              Skip erase before write
 +
      --noverify            Skip verify after write
 +
  -n, --icname=NAME          IC name, e.g. PFS154
 +
  -p, --port=PORT            COM port of programmer. Default: Auto search
 +
  -r, --runvdd=VDD          Voltage for running the IC. Default: 5.0
 +
      --securefill          Fill unused space with 0 (NOP) to prevent readout
 +
  -s, --serial=SERIAL        SERIAL value (64bit), e.g. 0x123456789ABCDEF0
 +
  -v, --verbose              Verbose output
 +
  -?, --help                Give this help list
 +
      --usage                Give a short usage message
 +
  -V, --version              Print program version
 +
 
 +
  Mandatory or optional arguments to long options are also mandatory or optional
 +
  for any corresponding short options.</code>
 +
<br />
 +
  <code>./easypdkprog --usage
 +
  Usage: easypdkprog [-bv?V] [-f FUSE] [-i ID] [-n NAME] [-p PORT] [-r VDD]
 +
            [-s SERIAL] [--allowsecfuse] [--bin] [--fuse=FUSE] [--icid=ID]
 +
            [--noblankchk] [--nocalibrate] [--noerase] [--noverify]
 +
            [--icname=NAME] [--port=PORT] [--runvdd=VDD] [--securefill]
 +
            [--serial=SERIAL] [--verbose] [--help] [--usage] [--version]
 +
            list|probe|read|write|erase|start [FILE]</code><br />
 +
 
 +
== Ohjelmat ==

Versio 13. syyskuuta 2020 kello 07.42

Padauk Programmer - Padauk prosessorien ohjelmointilaite

Padauk Programmer

Tyyppi: Ohjelmointilaite, USB
Tekijät: Markku Paalanen, Matti Nummi
Aloitettu: 2020
Tila: valmis


Versiot

Padauk ohjelmoitilaitteen ensimmäinen versio (1.01) ja tuotantosarja ovat valmiit 11.09.2020.
Muutama kappale on vielä saatavilla.
Seuraava versio (1.1) on tulossa sisältäen pieniä muutoksia ja korjauksia ensisarjaan.
Seuraavaa versiota tilataan vasta tarpeen mukaan, eikä suunnitelmalle ole aikataulua.
Nykyistä tekemäämme versiota 1.01 ei julkaista, koska se sisältää muutaman virheen.
Korjattu versio (1.1) piirikaavioineen ja valmistustietoineen tullaan julkaisemaan.

Miksi Padauk Programmer

Peruste ohjelmointilaitteen toteutukseen on testata ja tarvittaessa ottaa käyttöön erityisen edulliset PADAUK-prosessorit. http://www.padauk.com.tw/index_en.aspx PADAUK prosessorien yksikköhinnat ovat n. 3-12 senttiä, missä hinta korreloi selvästi liitinpinnien lukumäärään (eli käytännössä chipin pinta-alaan). Lisäksi ohjelmointilaitteelle on saatavilla avoimet projektit sekä laitteistolle että ohjelmistolle. https://github.com/free-pdk/

Taustaa

Padauk ohjelmointilaite perustuu täysin https://github.com/free-pdk/ sivustolla suunniteltuun ja toteutettuun laitteeseen ja ohjelmistoon. Laitteeseen on tehty pieniä muutoksia piirikaavioon, layoutiin ja komponentteihin. Muutoksiin vaikutti mm. komponenttivalinnat JLCPCB:n tarjoamiin komponentteihin ja kiteen vaihto pintaliitoskomponentiksi.

Toteutus

Ohjelmointilaite toteutettiin tilaamalla piirilevyt, komponentit ja ladonnan JLCPCB:ltä http://jlcpcb.com JLCPCB:n etuina olivat halpa hinta piirilevylle, komponenteille ja ladonnalle. JLCPCB:n haittoina ovat vain JLCPCB:n listaamien komponenttien käyttömahdollisuus, liitinten puuttuminen kokonaisuudessaan valintalistalta ja vain yhden painonappityypin saatavuus. Nämä haitat toki vaikuttavat merkittävästi hintojen edullisuuteen. Muuten toimitukset ja toiminta ovat mielestäni moitteetonta. Toteutuksen laatua ei ole erikseen arvioitu.

Padauk prosessoreita saa ainakin LCSC:ltä https://lcsc.com/ , joka kuulunee JPCPCB:n kanssa samaan yritysryhmään. Myös EasyEDA piirisuunnitteluohjelmisto liittyy näihin. https://easyeda.com/

JLCPCB:n ja LCSC:n toimitusajat ovat n. 3 viikkoa hitaalla postituksella, nopeamman postituksen pystyy valitsemaan lisähintaan. Projektin kesto oli valitettavan pitkä, yli 3 kk, lähinnä liitinten (8-pin riviliitin, ohjelmointiliittimet) hitaan saatavuuden vuoksi (aliexpress.com:sta Suomeen). Siinä korona ja postikin pidättelivät tavaroita oman osansa.

Padauk ohjelmointilaitteen osat

Padauk Programmerin osat ovat seuraavat:

Padauk Programmer Osat1.jpg
Padauk Programmer Osat2.jpg
  1. Piirilevy
  2. Korjaussarja
  3. USB-mini B liitin
  4. 16-pin ohjelmointiliitin
  5. 8-pin ohjelmointiliitin
  6. Breakout - levy ohjelmointiliittimille tms.
  7. Breakout - levy SOT23-6 kannalle
  8. Ohjelmointiliitin 2x3 pin riviliitin (ei mukana komponettikuvissa, näkyy valmiissa laitteessa)

Korjaussarjaa tarvittiin, koska piirikaavioon meni PA6 ja PA7 signaalit ristiin. Tämä tulee korjatuksi versiossa 1.1.

SOT23-6 kannan breakout - levy (kuvassa punainen) on Free PDK sivuilta, ja se muuntaa SOP-kantojen pinnijärjestyksen SOT23-6 kannan mukaiseksi. Toistaiseksi SOT23-6 ohjelmointiliitintä ei ole (Padauk piirille PMS150C-U6). Niiden saatavuus on huono ja hinta korkea. Vaihtoehtoina on tehdä itse sopiva liitin esim. 3d-tulostuksena, tai hankkia SOT23-6 ohjelmointiliitin aliexpress.com:sta ja muokata siitä sopiva.

Alla kuva valmiista ohjelmointilaitteesta, jossa paikallaan SOP-16 ohjelmointiliitin ja siinä uudelleenohjelmoitava PFS154-16 prosessori.

Padauk Programmer.jpg











Käyttö

Padauk Programmerin käyttöön tarvitset tietokoneeseesi ohjelman nimeltä easypdkprog , joka on saatavilla täältä: Free PDK

Optiota -v ei yleensä tarvita, mutta käytetään näissä esimerkeissä.

Ohjelman toimivuuden voi testata seuraavasti:

 ./easypdkprog -v
 Usage: easypdkprog [OPTION...] list|probe|read|write|erase|start [FILE]
 Try `easypdkprog --help' or `easypdkprog --usage' for more information.


Ohjelmointilaitteen toiminnan voi testata seuraavalla komennolla:

 ./easypdkprog -v probe


Ohjelma vastaa seuraavasti:

  • Ohjelmointilaitetta ei tunnisteta
 ./easypdkprog -v probe
 Searching programmer... (tried serial ports up to /dev/ttyACM998) No programmer found
  • Ohjelmointilaite tunnistetaan, ei prosessoria
 ./easypdkprog -v probe
 Searching programmer... found: /dev/ttyACM0
 FREE-PDK EASY PROG - Hardware:1.2 Firmware:1.3 Protocol:1.3
 Probing IC... Nothing found.
  • Ohjelmointilaite tunnistetaan, prosessori tunnistetaan
 ./easypdkprog -v probe
 Searching programmer... found: /dev/ttyACM0
 FREE-PDK EASY PROG - Hardware:1.2 Firmware:1.3 Protocol:1.3
 Probing IC... found.
 TYPE:FLASH RSP:0x1AA1 VPP=4.50 VDD=2.00
 IC is supported: PFS154 ICID:0xAA1
  • Ohjelmointilaite tunnistetaan, prosessori tunnistetaan, jossa helloworld esimerkki
 ./easypdkprog -v start
 Searching programmer... found: /dev/ttyACM0
 FREE-PDK EASY PROG - Hardware:1.2 Firmware:1.3 Protocol:1.3
 Running IC (5.00V)... IC started, press [Esc] to stop.
 Connected @118226 baud
 Hello World!
 Hello World!
 Hello World!
 [ESC]
 IC stopped


  • Ylläviitatun esimerkkiohjelman helloworld saa ladattua prosessoriin PFS154 seuraavasti:
 ./easypdkprog -v -n PFS154 write helloworld_pfs154.ihx
 Searching programmer... found: /dev/ttyACM0
 FREE-PDK EASY PROG - Hardware:1.2 Firmware:1.3 Protocol:1.3
 Erasing IC... done.
 Blank check IC... done.
 Writing IC (184 words)... done.
 Verifiying IC... done.
 Calibrating IC
 * IHRC SYSCLK=8000000Hz @ 4.00V ... calibration result: 7966623Hz (0x83)  done.

Ohjelman komennot saa näytölle seuraavasti:

 ./easypdkprog --help
 Usage: easypdkprog [OPTION...] list|probe|read|write|erase|start [FILE]
 easypdkprog -- read, write and execute programs on PADAUK microcontroller
 https://free-pdk.github.io
 
     --allowsecfuse         Allow setting the security fuse.
 -b, --bin                  Binary file output. Default: ihex8
 -f, --fuse=FUSE            FUSE value, e.g. 0x31FD
 -i, --icid=ID              IC ID 12 bit, e.g. 0xAA1
     --noblankchk           Skip blank check before write
     --nocalibrate          Skip calibration after write.
     --noerase              Skip erase before write
     --noverify             Skip verify after write
 -n, --icname=NAME          IC name, e.g. PFS154
 -p, --port=PORT            COM port of programmer. Default: Auto search
 -r, --runvdd=VDD           Voltage for running the IC. Default: 5.0
     --securefill           Fill unused space with 0 (NOP) to prevent readout
 -s, --serial=SERIAL        SERIAL value (64bit), e.g. 0x123456789ABCDEF0
 -v, --verbose              Verbose output
 -?, --help                 Give this help list
     --usage                Give a short usage message
 -V, --version              Print program version
 
 Mandatory or optional arguments to long options are also mandatory or optional
 for any corresponding short options.


 ./easypdkprog --usage
 Usage: easypdkprog [-bv?V] [-f FUSE] [-i ID] [-n NAME] [-p PORT] [-r VDD]
           [-s SERIAL] [--allowsecfuse] [--bin] [--fuse=FUSE] [--icid=ID]
           [--noblankchk] [--nocalibrate] [--noerase] [--noverify]
           [--icname=NAME] [--port=PORT] [--runvdd=VDD] [--securefill]
           [--serial=SERIAL] [--verbose] [--help] [--usage] [--version]
           list|probe|read|write|erase|start [FILE]

Ohjelmat