Aigo เชธเซเชต-เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ€เช‚เช— เชฌเชพเชนเซเชฏ HDD เชกเซเชฐเชพเช‡เชตเชจเซ‡ เช‰เชฒเชŸเชพเชตเซ€ เช…เชจเซ‡ เชนเซ‡เช• เช•เชฐเชตเซเช‚. เชญเชพเช— 2: เชธเชพเชฏเชชเซเชฐเซ‡เชธ เชชเซ€เชเชธเช“เชธเซ€เชฎเชพเช‚เชฅเซ€ เชกเชฎเซเชช เชฒเซ‡เชตเซ‹

เชฌเชพเชนเซเชฏ เชธเซเชต-เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ€เช‚เช— เชกเซเชฐเชพเชˆเชตเซ‹เชจเซ‡ เชนเซ‡เช• เช•เชฐเชตเชพ เชตเชฟเชถเซ‡เชจเชพ เชฒเซ‡เช–เชจเซ‹ เช† เชฌเซ€เชœเซ‹ เช…เชจเซ‡ เช…เช‚เชคเชฟเชฎ เชญเชพเช— เช›เซ‡. เชนเซเช‚ เชคเชฎเชจเซ‡ เชฏเชพเชฆ เช…เชชเชพเชตเซ€ เชฆเช‰เช‚ เช•เซ‡ เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชเช• เชธเชพเชฅเซ€เชฆเชพเชฐ เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชชเซ‡เชŸเซเชฐเชฟเชฏเซ‹เชŸ (Aigo) SK8671 เชนเชพเชฐเซเชก เชกเซเชฐเชพเชˆเชต เชฒเชพเชตเซเชฏเซ‹, เช…เชจเซ‡ เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ เชฐเชฟเชตเชฐเซเชธ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚, เช…เชจเซ‡ เชนเชตเซ‡ เชนเซเช‚ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชœเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เชคเซ‡ เชถเซ‡เชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚. เช†เช—เชณ เชตเชพเช‚เชšเชคเชพ เชชเชนเซ‡เชฒเชพ, เช…เชตเชถเซเชฏ เชตเชพเช‚เชšเซ‹ เชชเซเชฐเชฅเชฎ เชญเชพเช— เชฒเซ‡เช–.

4. เช…เชฎเซ‡ เช†เช‚เชคเชฐเชฟเช• PSoC เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชฎเชพเช‚เชฅเซ€ เชกเชฎเซเชช เชฒเซ‡เชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€เช เช›เซ€เช
5. ISSP เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ
- 5.1. ISSP เชถเซเช‚ เช›เซ‡
โ€“ 5.2. เชกเชฟเชฎเชฟเชธเซเชŸเชฟเชซเชพเช‡เช‚เช— เชตเซ‡เช•เซเชŸเชฐเซเชธ
โ€“ 5.3. PSoC เชธเชพเชฅเซ‡ เชธเช‚เชšเชพเชฐ
โ€“ 5.4. เช“เชจ-เชšเซ€เชช เชฐเชœเซ€เชธเซเชŸเชฐเชจเซ€ เช“เชณเช–
โ€“ 5.5. เชธเซเชฐเช•เซเชทเชพ เชฌเชฟเชŸเซเชธ
6. เชชเซเชฐเชฅเชฎ (เชจเชฟเชทเซเชซเชณ) เชนเซเชฎเชฒเซ‹: ROMX
7. เชฌเซ€เชœเซ‹ เชนเซเชฎเชฒเซ‹: เช•เซ‹เชฒเซเชก เชฌเซ‚เชŸ เชŸเซเชฐเซ‡เชธเชฟเช‚เช—
โ€“ 7.1. เช…เชฎเชฒเซ€เช•เชฐเชฃ
- 7.2. เชชเชฐเชฟเชฃเชพเชฎ เชตเชพเช‚เชšเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช
โ€“ 7.3. เชซเซเชฒเซ‡เชถ เชฌเชพเชˆเชจเชฐเซ€ เชชเซเชจเชƒเชจเชฟเชฐเซเชฎเชพเชฃ
โ€“ 7.4. PIN เช•เซ‹เชก เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเชฐเชจเชพเชฎเซเช‚ เชถเซ‹เชงเชตเซเช‚
- 7.5. เชฌเซเชฒเซ‹เช• เชจเช‚เชฌเชฐ 126เชจเซ‹ เชกเชฎเซเชช เชฒเซ‡เชตเซ‹
โ€“ 7.6. PIN เช•เซ‹เชก เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชคเชฟ
8. เช†เช—เชณ เชถเซเช‚ เช›เซ‡?
9. เชจเชฟเชทเซเช•เชฐเซเชท

Aigo เชธเซเชต-เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ€เช‚เช— เชฌเชพเชนเซเชฏ HDD เชกเซเชฐเชพเช‡เชตเชจเซ‡ เช‰เชฒเชŸเชพเชตเซ€ เช…เชจเซ‡ เชนเซ‡เช• เช•เชฐเชตเซเช‚. เชญเชพเช— 2: เชธเชพเชฏเชชเซเชฐเซ‡เชธ เชชเซ€เชเชธเช“เชธเซ€เชฎเชพเช‚เชฅเซ€ เชกเชฎเซเชช เชฒเซ‡เชตเซ‹


4. เช…เชฎเซ‡ เช†เช‚เชคเชฐเชฟเช• PSoC เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชฎเชพเช‚เชฅเซ€ เชกเชฎเซเชช เชฒเซ‡เชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€เช เช›เซ€เช

เชคเซ‡เชฅเซ€, เชฌเชงเซเช‚ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ (เชœเซ‡เชฎ เช•เซ‡ เช†เชชเชฃเซ‡ [เชชเซเชฐเชฅเชฎ เชญเชพเช—เชฎเชพเช‚]() เชฎเชพเช‚ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซเชฏเซเช‚ เช›เซ‡) เช•เซ‡ PIN เช•เซ‹เชก PSoC เชจเซ€ เชซเซเชฒเซ‡เชถ เชŠเช‚เชกเชพเชฃเซ‹เชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡. เชคเซ‡เชฅเซ€, เช†เชชเชฃเซ‡ เช† เชซเซเชฒเซ‡เชถ เชŠเช‚เชกเชพเชฃเซ‹ เชตเชพเช‚เชšเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชœเชฐเซ‚เชฐเซ€ เช•เชพเชฎเชจเซ€ เช†เช—เชณ:

  • เชฎเชพเช‡เช•เซเชฐเซ‹เช•เชจเซเชŸเซเชฐเซ‹เชฒเชฐ เชธเชพเชฅเซ‡ "เชธเช‚เชšเชพเชฐ" เชชเชฐ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชฒเซ‹;
  • เช† "เชธเช‚เชšเชพเชฐ" เชฌเชนเชพเชฐเชฅเซ€ เชตเชพเช‚เชšเชตเชพเชฅเซ€ เชธเซเชฐเช•เซเชทเชฟเชค เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชคเชชเชพเชธเชตเชพเชจเซ‹ เชฎเชพเชฐเซเช— เชถเซ‹เชงเซ‹;
  • เชธเช‚เชฐเช•เซเชทเชฃเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเชตเชพเชจเซ‹ เชฎเชพเชฐเซเช— เชถเซ‹เชงเซ‹.

เชคเซเชฏเชพเช‚ เชฌเซ‡ เชธเซเชฅเชพเชจเซ‹ เช›เซ‡ เชœเซเชฏเชพเช‚ เชฎเชพเชจเซเชฏ เชชเชฟเชจ เช•เซ‹เชก เชถเซ‹เชงเชตเชพเชจเซ‹ เช…เชฐเซเชฅ เชฅเชพเชฏ เช›เซ‡:

  • เช†เช‚เชคเชฐเชฟเช• เชซเซเชฒเซ‡เชถ เชฎเซ‡เชฎเชฐเซ€;
  • SRAM, เชœเซเชฏเชพเช‚ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฆเซเชตเชพเชฐเชพ เชฆเชพเช–เชฒ เช•เชฐเซ‡เชฒ เชชเชฟเชจ เช•เซ‹เชก เชธเชพเชฅเซ‡ เชคเซ‡เชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฟเชจ เช•เซ‹เชก เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เช†เช—เชณ เชœเซ‹เชคเชพเช‚, เชนเซเช‚ เชจเซ‹เช‚เชง เช•เชฐเซ€เชถ เช•เซ‡ ISSP เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซ€ เชฌเชฟเชจเชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เซƒเชค เช•เซเชทเชฎเชคเชพเช“เชจเซ‡ เช‰เชฒเชŸเชพเชตเซเชฏเชพ เชชเช›เซ€ - "เช•เซ‹เชฒเซเชก เชฌเซ‚เชŸ เชŸเซเชฐเซ‡เชธเชฟเช‚เช—" เชจเชพเชฎเชจเชพ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชนเซเชฎเชฒเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชจเซ€ เชธเซเชฐเช•เซเชทเชพ เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€เชจเซ‡ - เชนเซเช‚ เชนเชœเซ€ เชชเชฃ เช†เช‚เชคเชฐเชฟเช• PSoC เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชจเซ‹ เชกเชฎเซเชช เชฒเซ‡เชตเชพเชฎเชพเช‚ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เช›เซเช‚. เช†เชจเชพเชฅเซ€ เชฎเชจเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชชเชฟเชจ เช•เซ‹เชก เชธเซ€เชงเซ‹ เชกเชฎเซเชช เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เชฎเชณเซ€.

$ ./psoc.py 
syncing: KO OK
[...]
PIN: 1 2 3 4 5 6 7 8 9

เช…เช‚เชคเชฟเชฎ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช•เซ‹เชก:

5. ISSP เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ

5.1. ISSP เชถเซเช‚ เช›เซ‡

เชฎเชพเช‡เช•เซเชฐเซ‹เช•เชจเซเชŸเซเชฐเซ‹เชฒเชฐ เชธเชพเชฅเซ‡ "เชธเช‚เชšเชพเชฐ" เชจเซ‹ เช…เชฐเซเชฅ เช…เชฒเช— เช…เชฒเช— เชตเชธเซเชคเซเช“ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡: "เชตเชฟเช•เซเชฐเซ‡เชคเชพเชฅเซ€ เชตเชฟเช•เซเชฐเซ‡เชคเชพ" เชฅเซ€ เชธเซ€เชฐเซ€เชฏเชฒ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชธเซเชงเซ€ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฎเชพเช‡เช•เซเชฐเซ‹เชšเชฟเชชเชจเชพ PIC เชฎเชพเชŸเซ‡ ICSP).

เช† เชฎเชพเชŸเซ‡ เชธเชพเชฏเชชเซเชฐเชธเชจเซ‹ เชชเซ‹เชคเชพเชจเซ‹ เชฎเชพเชฒเชฟเช•เซ€เชจเซ‹ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เช›เซ‡, เชœเซ‡เชจเซ‡ ISSP (เชˆเชจ-เชธเชฟเชธเซเชŸเชฎ เชธเซ€เชฐเซ€เชฏเชฒ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ) เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡, เชœเซ‡เชจเซเช‚ เช†เช‚เชถเชฟเช• เชฐเซ€เชคเซ‡ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เชŸเซ‡เช•เชจเชฟเช•เชฒ เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃ. เชชเซ‡เชŸเชจเซเชŸ US7185162 เช•เซ‡เชŸเชฒเซ€เช• เชฎเชพเชนเชฟเชคเซ€ เชชเชฃ เช†เชชเซ‡ เช›เซ‡. HSSP เชจเชพเชฎเชจเซเช‚ เชเช• เช“เชชเชจเชธเซ‹เชฐเซเชธ เชธเชฎเช•เช•เซเชท เชชเชฃ เช›เซ‡ (เช…เชฎเซ‡ เชคเซ‡เชจเซ‹ เชฅเซ‹เชกเชพ เชธเชฎเชฏ เชชเช›เซ€ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚). ISSP เชจเซ€เชšเซ‡ เชชเซเชฐเชฎเชพเชฃเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡:

  • PSoC เชฐเซ€เชฌเซ‚เชŸ เช•เชฐเซ‹;
  • เช† PSoC เชจเชพ เชธเซ€เชฐเซ€เชฏเชฒ เชกเซ‡เชŸเชพ เชชเชฟเชจ เชชเชฐ เชœเชพเชฆเซเชˆ เชจเช‚เชฌเชฐ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเซ‹; เชฌเชพเชนเซเชฏ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชฎเซ‹เชก เชฆเชพเช–เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡;
  • เช†เชฆเซ‡เชถเซ‹ เชฎเซ‹เช•เชฒเซ‹, เชœเซ‡ "เชตเซ‡เช•เซเชŸเชฐ" เชคเชฐเซ€เช•เซ‡ เช“เชณเช–เชพเชคเซ€ เชฒเชพเช‚เชฌเซ€ เชฌเซ€เชŸ เชธเซเชŸเซเชฐเซ€เช‚เช— เช›เซ‡.

ISSP เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เช† เชตเซ‡เช•เซเชŸเชฐเซเชธเชจเซ‡ เชฎเชพเชคเซเชฐ เชฅเซ‹เชกเชพ เชฎเซเช เซเช เซ€เชญเชฐ เช†เชฆเซ‡เชถเซ‹ เชฎเชพเชŸเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡:

  • เชชเซเชฐเชพเชฐเช‚เชญ-1
  • เชชเซเชฐเชพเชฐเช‚เชญ-2
  • เช‡เชจเชฟเชถเชฟเชฏเชฒเชพเช‡เช-3 (3V เช…เชจเซ‡ 5V เชตเชฟเช•เชฒเซเชชเซ‹)
  • ID-SETUP
  • READ-ID-WORD
  • SET-BLOCK-NUM: 10011111010dddddd111, เชœเซเชฏเชพเช‚ dddddddd=block #
  • เชฌเชฒเซเช• เช‡เชฐเซ‡เช
  • เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ-เชฌเซเชฒเซ‹เช•
  • เชšเช•เชพเชธเซ‹-เชธเซ‡เชŸเช…เชช
  • READ-BYTE: 10110aaaaaZDDDDDDDZ1, เชœเซเชฏเชพเช‚ DDDDDDDD = เชกเซ‡เชŸเชพ เช†เช‰เชŸ, aaaaaa = เชธเชฐเชจเชพเชฎเซเช‚ (6 เชฌเชฟเชŸเซเชธ)
  • WRITE-BYTE: 10010aaaaaddddddd111, เชœเซเชฏเชพเช‚ dddddddd = เชกเซ‡เชŸเชพ เช‡เชจ, aaaaaa = เชธเชฐเชจเชพเชฎเซเช‚ (6 เชฌเชฟเชŸเซเชธ)
  • เชธเซเชฐเช•เซเชทเชฟเชค
  • เชšเซ‡เช•เชธเชฎ-เชธเซ‡เชŸเช…เชช
  • เชตเชพเช‚เชšเซ‹-เชšเซ‡เช•เชธเชฎ: 10111111001ZDDDDDDDZ110111111000ZDDDDDDDDZ1, เชœเซเชฏเชพเช‚ DDDDDDDDDDDDDDDDD = เชกเซ‡เชŸเชพ เช†เช‰เชŸ: เช‰เชชเช•เชฐเชฃ เชšเซ‡เช•เชธเชฎ
  • เชฌเซเชฒเซ‹เช• เชญเซ‚เช‚เชธเซ€ เชจเชพเช–เซ‹

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, Initialize-2 เชฎเชพเชŸเซ‡ เชตเซ‡เช•เซเชŸเชฐ:

1101111011100000000111 1101111011000000000111
1001111100000111010111 1001111100100000011111
1101111010100000000111 1101111010000000011111
1001111101110000000111 1101111100100110000111
1101111101001000000111 1001111101000000001111
1101111000000000110111 1101111100000000000111
1101111111100010010111

เชฌเชงเชพ เชตเซ‡เช•เซเชŸเชฐเชจเซ€ เชฒเช‚เชฌเชพเชˆ เชธเชฎเชพเชจ เช›เซ‡: 22 เชฌเชฟเชŸเซเชธ. HSSP เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชฎเชพเช‚ ISSP เชชเชฐ เช•เซ‡เชŸเชฒเซ€เช• เชตเชงเชพเชฐเชพเชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เช›เซ‡: "เชเช• ISSP เชตเซ‡เช•เซเชŸเชฐ เช เชธเซ‚เชšเชจเซ‹เชจเชพ เชธเชฎเซ‚เชนเชจเซ‡ เชฐเชœเซ‚ เช•เชฐเชคเซ€ เชฅเซ‹เชกเซ€ เช•เซเชฐเชฎ เชธเชฟเชตเชพเชฏ เชฌเซ€เชœเซเช‚ เช•เช‚เชˆ เชจเชฅเซ€."

5.2. เชกเชฟเชฎเชฟเชธเซเชŸเชฟเชซเชพเช‡เช‚เช— เชตเซ‡เช•เซเชŸเชฐเซเชธ

เชšเชพเชฒเซ‹ เชœเชพเชฃเซ€เช เช•เซ‡ เช…เชนเซ€เช‚ เชถเซเช‚ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡. เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เชฎเซ‡เช‚ เชงเชพเชฐเซเชฏเซเช‚ เช•เซ‡ เช† เชœ เชตเซ‡เช•เซเชŸเชฐ M8C เชธเซ‚เชšเชจเชพเช“เชจเชพ เช•เชพเชšเชพ เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เช›เซ‡, เชชเชฐเช‚เชคเซ เช† เชชเซ‚เชฐเซเชตเชงเชพเชฐเชฃเชพ เชคเชชเชพเชธเซเชฏเชพ เชชเช›เซ€, เชฎเซ‡เช‚ เชถเซ‹เชงเซเชฏเซเช‚ เช•เซ‡ เช‘เชชเชฐเซ‡เชถเชจเชจเชพ เช‘เชชเช•เซ‹เชก เชฎเซ‡เชณ เช–เชพเชคเชพ เชจเชฅเซ€.

เชชเช›เซ€ เชฎเซ‡เช‚ เช‰เชชเชฐเชจเชพ เชตเซ‡เช•เซเชŸเชฐเชจเซ‡ เช—เซ‚เช—เชฒ เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ เช†เชœเซเชฌเชพเชœเซ เช†เชตเซเชฏเซ‹ เช† เชเช• เช…เชญเซเชฏเชพเชธ เชœเซเชฏเชพเช‚ เชฒเซ‡เช–เช•, เชœเซ‹ เช•เซ‡ เชคเซ‡ เชตเชฟเช—เชคเชตเชพเชฐ เชจเชฅเซ€ เชœเชคเชพ, เช•เซ‡เชŸเชฒเซ€เช• เช‰เชชเชฏเซ‹เช—เซ€ เชŸเซ€เชชเซเชธ เช†เชชเซ‡ เช›เซ‡: โ€œเชฆเชฐเซ‡เช• เชธเซ‚เชšเชจเชพ เชคเซเชฐเชฃ เชฌเชฟเชŸเซเชธเชฅเซ€ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡ เชœเซ‡ เชšเชพเชฐ เชธเซเชฎเซƒเชคเชฟเชถเชพเชธเซเชคเซเชฐเชฎเชพเช‚เชฅเซ€ เชเช•เชจเซ‡ เช…เชจเซเชฐเซ‚เชช เชนเซ‹เชฏ เช›เซ‡ (RAM เชฅเซ€ เชตเชพเช‚เชšเซ‹, RAM เชชเชฐ เชฒเช–เซ‹, เชฐเชœเชฟเชธเซเชŸเชฐ เชตเชพเช‚เชšเซ‹, เชฐเชœเชฟเชธเซเชŸเชฐ เชฒเช–เซ‹). เชชเช›เซ€ เชคเซเชฏเชพเช‚ 8 เชเชกเซเชฐเซ‡เชธ เชฌเชฟเชŸเซเชธ เช›เซ‡, เชคเซเชฏเชพเชฐเชฌเชพเชฆ 8 เชกเซ‡เชŸเชพ เชฌเชฟเชŸเซเชธ (เชตเชพเช‚เชšเชตเชพ เช…เชฅเชตเชพ เชฒเช–เชตเชพ) เช…เชจเซ‡ เช…เช‚เชคเซ‡ เชคเซเชฐเชฃ เชธเซเชŸเซ‹เชช เชฌเชฟเชŸเซเชธ เช›เซ‡.

เชชเช›เซ€ เชนเซเช‚ เชธเซเชชเชฐเชตเชพเช‡เชเชฐเซ€ ROM (SROM) เชตเชฟเชญเชพเช—เชฎเชพเช‚เชฅเซ€ เช•เซ‡เชŸเชฒเซ€เช• เช–เซ‚เชฌ เชœ เช‰เชชเชฏเซ‹เช—เซ€ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชนเชคเซ‹. เชคเช•เชจเซ€เช•เซ€ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ. SROM เช PSoC เชฎเชพเช‚ เชนเชพเชฐเซเชก-เช•เซ‹เชกเซ‡เชก ROM เช›เซ‡ เชœเซ‡ เชฏเซเชเชฐ เชธเซเชชเซ‡เชธเชฎเชพเช‚ เชšเชพเชฒเชคเชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช•เซ‹เชก เชฎเชพเชŸเซ‡ เชฏเซเชŸเชฟเชฒเชฟเชŸเซ€ เชซเช‚เช•เซเชถเชจเซเชธ (Syscall เชœเซ‡เชตเซ€ เชฐเซ€เชคเซ‡) เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡:

  • 00h:SWBootReset
  • 01h: เชฐเซ€เชกเชฌเซเชฒเซ‹เช•
  • 02h: WriteBlock
  • 03 เช•เชฒเชพเช•: เช‡เชฐเซ‡เชเชฌเซเชฒเซ‹เช•
  • 06h: เชŸเซ‡เชฌเชฒเชฐเซ€เชก
  • 07 เช•เชฒเชพเช•: เชšเซ‡เช•เชธเชฎ
  • 08h: เช•เซ‡เชฒเชฟเชฌเซเชฐเซ‡เชŸ0
  • 09h: เช•เซ‡เชฒเชฟเชฌเซเชฐเซ‡เชŸ1

เชตเซ‡เช•เซเชŸเชฐ เชจเชพเชฎเซ‹เชจเซ€ SROM เชซเช‚เช•เซเชถเชจเซเชธ เชธเชพเชฅเซ‡ เชธเชฐเช–เชพเชฎเชฃเซ€ เช•เชฐเซ€เชจเซ‡, เช…เชฎเซ‡ เช† เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชฆเซเชตเชพเชฐเชพ เชธเชฎเชฐเซเชฅเชฟเชค เชตเชฟเชตเชฟเชง เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซ‡ เช…เชชเซ‡เช•เซเชทเชฟเชค SROM เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชธเชพเชฅเซ‡ เชฎเซ‡เชช เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช. เช†เชจเซ‹ เช†เชญเชพเชฐ, เช…เชฎเซ‡ ISSP เชตเซ‡เช•เซเชŸเชฐเชจเชพ เชชเซเชฐเชฅเชฎ เชคเซเชฐเชฃ เชฌเชฟเชŸเซเชธเชจเซ‡ เชกเซ€เช•เซ‹เชก เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช:

  • 100 => "เชตเชฐเซเชฎ"
  • 101 => "rdmem"
  • 110 => "เชฐเชนเซ‡เชœ"
  • 111 => "rdreg"

เชœเซ‹ เช•เซ‡, เช“เชจ-เชšเชฟเชช เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเชฎเชœ เชฎเชพเชคเซเชฐ PSoC เชธเชพเชฅเซ‡ เชธเซ€เชงเชพ เชธเช‚เชšเชพเชฐ เชฆเซเชตเชพเชฐเชพ เชฎเซ‡เชณเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡.

5.3. PSoC เชธเชพเชฅเซ‡ เชธเช‚เชšเชพเชฐ

เชกเชฐเซเช• Petrautsky เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช›เซ‡ เชชเซ‹เชฐเซเชŸเซ‡เชก Arduino เชชเชฐ เชธเชพเชฏเชชเซเชฐเซ‡เชธเชจเซ‹ HSSP เช•เซ‹เชก, เชฎเซ‡เช‚ เช•เซ€เชฌเซ‹เชฐเซเชก เชฌเซ‹เชฐเซเชกเชจเชพ ISSP เช•เชจเซ‡เช•เซเชŸเชฐ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ Arduino Uno เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹.

เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เชฎเชพเชฐเชพ เชธเช‚เชถเซ‹เชงเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชฎเซ‡เช‚ เชกเชฐเซเช•เชจเชพ เช•เซ‹เชกเชฎเชพเช‚ เชฅเซ‹เชกเซ‹ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซเชฏเซ‹ เช›เซ‡. เชคเชฎเซ‡ GitHub เชชเชฐ เชฎเชพเชฐเชพ เชซเซ‡เชฐเชซเชพเชฐ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹: เช…เชนเซ€เช‚ เช…เชจเซ‡ เชฎเชพเชฐเชพ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚, Arduino เชธเชพเชฅเซ‡ เชตเชพเชคเชšเซ€เชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชจเซเชฐเซ‚เชช เชชเชพเชฏเชฅเซ‹เชจ เชธเซเช•เซเชฐเชฟเชชเซเชŸ cypress_psoc_tools.

เชคเซ‡เชฅเซ€, Arduino เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชฎเซ‡เช‚ เชชเซเชฐเชฅเชฎ "เชธเช‚เชšเชพเชฐ" เชฎเชพเชŸเซ‡ เชซเช•เซเชค "เชธเชคเซเชคเชพเชตเชพเชฐ" เชตเซ‡เช•เซเชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹. เชฎเซ‡เช‚ VERIFY เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช†เช‚เชคเชฐเชฟเช• ROM เชตเชพเช‚เชšเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹. เช…เชชเซ‡เช•เซเชทเชพ เชฎเซเชœเชฌ, เชนเซเช‚ เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชธเชฎเชฐเซเชฅ เชนเชคเซ‹. เช•เชฆเชพเชš เช เชนเช•เซ€เช•เชคเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช•เซ‡ เชฐเซ€เชก เชชเซเชฐเซ‹เชŸเซ‡เช•เซเชถเชจ เชฌเชฟเชŸเซเชธ เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชจเซ€ เช…เช‚เชฆเชฐ เชธเช•เซเชฐเชฟเชฏ เชฅเชพเชฏ เช›เซ‡.

เชชเช›เซ€ เชฎเซ‡เช‚ เชฎเซ‡เชฎเชฐเซ€/เชฐเชœเซ€เชธเซเชŸเชฐ เชฒเช–เชตเชพ เช…เชจเซ‡ เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เช•เซ‡เชŸเชฒเชพเช• เชธเชฐเชณ เชตเซ‡เช•เซเชŸเชฐ เชฌเชจเชพเชตเซเชฏเชพ. เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชต เชธเซเชฐเช•เซเชทเชฟเชค เชนเซ‹เชตเชพ เช›เชคเชพเช‚ เช…เชฎเซ‡ เช†เช–เซเช‚ SROM เชตเชพเช‚เชšเซ€ เชถเช•เซ€เช เช›เซ€เช!

5.4. เช“เชจ-เชšเซ€เชช เชฐเชœเซ€เชธเซเชŸเชฐเชจเซ€ เช“เชณเช–

"เชกเชฟเชธเซ‡เชฎเซเชฌเชฒ" เชตเซ‡เช•เซเชŸเชฐเซเชธเชจเซ‡ เชœเซ‹เชฏเชพ เชชเช›เซ€, เชฎเซ‡เช‚ เชถเซ‹เชงเซเชฏเซเช‚ เช•เซ‡ เช‰เชชเช•เชฐเชฃ M0C เช“เชชเช•เซ‹เชกเซเชธเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเชฟเชจเชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เซƒเชค เชฐเชœเชฟเชธเซเชŸเชฐ (8xF0-8xFA) เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ เชธเซเชฐเช•เซเชทเชพเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€เชจเซ‡ เชธเซ€เชงเชพ เชœ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช†เชจเชพเชฅเซ€ เชฎเชจเซ‡ "ADD", "MOV A, X", "PUSH" เช…เชฅเชตเชพ "JMP" เชœเซ‡เชตเชพ เชตเชฟเชตเชฟเชง เช“เชชเช•เซ‹เชก เชšเชฒเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เชฎเชณเซ€. เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡ เช†เชญเชพเชฐ (เชฐเชœเชฟเชธเซเชŸเชฐเซ‹ เชชเชฐ เชคเซ‡เชฎเชจเซ€ เช†เชก เช…เชธเชฐเซ‹ เชœเซ‹เชˆเชจเซ‡) เชนเซเช‚ เช เชจเช•เซเช•เซ€ เช•เชฐเซ€ เชถเช•เซเชฏเซ‹ เช•เซ‡ เชฌเชฟเชจเชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เซƒเชค เชฐเชœเซ€เชธเซเชŸเชฐเซ‹เชฎเชพเช‚เชฅเซ€ เช•เชฏเชพ เช–เชฐเซ‡เช–เชฐ เชจเชฟเชฏเชฎเชฟเชค เชฐเชœเชฟเชธเซเชŸเชฐ เชนเชคเชพ (A, X, SP เช…เชจเซ‡ PC).

เชชเชฐเชฟเชฃเชพเชฎเซ‡, HSSP_disas.rb เชŸเซ‚เชฒ เชฆเซเชตเชพเชฐเชพ เชœเชจเชฐเซ‡เชŸ เชฅเชฏเซ‡เชฒ โ€œเชกเชฟเชธเซ‡เชฎเซเชฌเชฒโ€ เช•เซ‹เชก เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡ (เชฎเซ‡เช‚ เชธเซเชชเชทเซเชŸเชคเชพ เชฎเชพเชŸเซ‡ เชŸเชฟเชชเซเชชเชฃเซ€เช“ เช‰เชฎเซ‡เชฐเซ€ เช›เซ‡):

--== init2 ==--
[DE E0 1C] wrreg CPU_F (f7), 0x00   # ัะฑั€ะพั ั„ะปะฐะณะพะฒ
[DE C0 1C] wrreg SP (f6), 0x00      # ัะฑั€ะพั SP
[9F 07 5C] wrmem KEY1, 0x3A     # ะพะฑัะทะฐั‚ะตะปัŒะฝั‹ะน ะฐั€ะณัƒะผะตะฝั‚ ะดะปั SSC
[9F 20 7C] wrmem KEY2, 0x03     # ะฐะฝะฐะปะพะณะธั‡ะฝะพ
[DE A0 1C] wrreg PCh (f5), 0x00     # ัะฑั€ะพั PC (MSB) ...
[DE 80 7C] wrreg PCl (f4), 0x03     # (LSB) ... ะดะพ 3 ??
[9F 70 1C] wrmem POINTER, 0x80      # RAM-ัƒะบะฐะทะฐั‚ะตะปัŒ ะดะปั ะฒั‹ั…ะพะดะฝั‹ั… ะดะฐะฝะฝั‹ั…
[DF 26 1C] wrreg opc1 (f9), 0x30        # ะžะฟะบะพะด 1 => "HALT"
[DF 48 1C] wrreg opc2 (fa), 0x40        # ะžะฟะบะพะด 2 => "NOP"
[9F 40 3C] wrmem BLOCKID, 0x01  # BLOCK ID ะดะปั ะฒั‹ะทะพะฒะฐ SSC
[DE 00 DC] wrreg A (f0), 0x06       # ะฝะพะผะตั€ "Syscall" : TableRead
[DF 00 1C] wrreg opc0 (f8), 0x00        # ะžะฟะบะพะด ะดะปั SSC, "Supervisory SROM Call"
[DF E2 5C] wrreg CPU_SCR0 (ff), 0x12    # ะะตะดะพะบัƒะผะผะตะฝั‚ะธั€ะพะฒะฐะฝะฝะฐั ะพะฟะตั€ะฐั†ะธั: ะฒั‹ะฟะพะปะฝะธั‚ัŒ ะฒะฝะตัˆะฝะธะน ะพะฟะบะพะด

5.5. เชธเซเชฐเช•เซเชทเชพ เชฌเชฟเชŸเซเชธ

เช† เชคเชฌเช•เซเช•เซ‡ เชนเซเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ PSoC เชธเชพเชฅเซ‡ เชตเชพเชคเชšเซ€เชค เช•เชฐเซ€ เชถเช•เซเช‚ เช›เซเช‚, เชชเชฐเช‚เชคเซ เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชนเชœเซ เชชเชฃ เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชจเชพ เชธเซเชฐเช•เซเชทเชพ เชฌเชฟเชŸเซเชธ เชตเชฟเชถเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชฎเชพเชนเชฟเชคเซ€ เชจเชฅเซ€. เชฎเชจเซ‡ เช เชนเช•เซ€เช•เชคเชฅเซ€ เช–เซ‚เชฌ เชœ เช†เชถเซเชšเชฐเซเชฏ เชฅเชฏเซเช‚ เช•เซ‡ เชธเชพเชฏเชชเซเชฐเชธ เช‰เชชเช•เชฐเชฃเชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เชธเซเชฐเช•เซเชทเชพ เชธเช•เซเชฐเชฟเชฏ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆเชชเชฃ เชฎเชพเชงเซเชฏเชฎ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เช†เช–เชฐเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เช‚ Google เชฎเชพเช‚ เชŠเช‚เชกเชพเชฃเชชเซ‚เชฐเซเชตเช• เชถเซ‹เชงเซเชฏเซเช‚ เช•เซ‡ เชธเชพเชฏเชชเซเชฐเชธ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ HSSP เช•เซ‹เชก เชกเชฐเซเช•เซ‡ เชคเซ‡เชจเชพ เชซเซ‡เชฐเชซเชพเชฐเชจเซ‡ เชฌเชนเชพเชฐ เชชเชพเชกเซเชฏเชพ เชชเช›เซ€ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹. เช…เชจเซ‡ เชคเซ‡เชฅเซ€! เช† เชจเชตเซเช‚ เชตเซ‡เช•เซเชŸเชฐ เชฆเซ‡เช–เชพเชฏเซเช‚ เช›เซ‡:

[DE E0 1C] wrreg CPU_F (f7), 0x00
[DE C0 1C] wrreg SP (f6), 0x00
[9F 07 5C] wrmem KEY1, 0x3A
[9F 20 7C] wrmem KEY2, 0x03
[9F A0 1C] wrmem 0xFD, 0x00 # ะฝะตะธะทะฒะตัั‚ะฝั‹ะต ะฐั€ะณัƒะผะตะฝั‚ั‹
[9F E0 1C] wrmem 0xFF, 0x00 # ะฐะฝะฐะปะพะณะธั‡ะฝะพ
[DE A0 1C] wrreg PCh (f5), 0x00
[DE 80 7C] wrreg PCl (f4), 0x03
[9F 70 1C] wrmem POINTER, 0x80
[DF 26 1C] wrreg opc1 (f9), 0x30
[DF 48 1C] wrreg opc2 (fa), 0x40
[DE 02 1C] wrreg A (f0), 0x10   # ะฝะตะดะพะบัƒะผะตะฝั‚ะธั€ะพะฒะฐะฝะฝั‹ะน syscall !
[DF 00 1C] wrreg opc0 (f8), 0x00
[DF E2 5C] wrreg CPU_SCR0 (ff), 0x12

เช† เชตเซ‡เช•เซเชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ (psoc.py เชฎเชพเช‚ read_security_data เชœเซเช“), เช…เชฎเชจเซ‡ SRAM เชฎเชพเช‚ 0x80 เชชเชฐ เชคเชฎเชพเชฎ เชธเซเชฐเช•เซเชทเชพ เชฌเชฟเชŸเซเชธ เชฎเชณเซ‡ เช›เซ‡, เชœเซเชฏเชพเช‚ เชธเช‚เชฐเช•เซเชทเชฟเชค เชฌเซเชฒเซ‹เช• เชฆเซ€เช  เชฌเซ‡ เชฌเชฟเชŸเซเชธ เช›เซ‡.

เชชเชฐเชฟเชฃเชพเชฎ เชจเชฟเชฐเชพเชถเชพเชœเชจเช• เช›เซ‡: เชฌเชงเซเช‚ "เชฌเชพเชนเซเชฏ เชตเชพเช‚เชšเชจ เช…เชจเซ‡ เชฒเซ‡เช–เชจ เช…เช•เซเชทเชฎ เช•เชฐเซ‹" เชฎเซ‹เชกเชฎเชพเช‚ เชธเซเชฐเช•เซเชทเชฟเชค เช›เซ‡. เชคเซ‡เชฅเซ€, เช†เชชเชฃเซ‡ เชซเช•เซเชค เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชฎเชพเช‚เชฅเซ€ เช•เช‚เชˆเชชเชฃ เชตเชพเช‚เชšเซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช†เชชเชฃเซ‡ เช•เช‚เชˆเชชเชฃ เชฒเช–เซ€ เชถเช•เชคเชพ เชจเชฅเซ€ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเซเชฏเชพเช‚ ROM เชกเชฎเซเชชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡). เช…เชจเซ‡ เชธเช‚เชฐเช•เซเชทเชฃเชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเชตเชพเชจเซ‹ เชเช•เชฎเชพเชคเซเชฐ เชฐเชธเซเชคเซ‹ เช เช›เซ‡ เช•เซ‡ เชธเชฎเช—เซเชฐ เชšเชฟเชชเชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชญเซ‚เช‚เชธเซ€ เชจเชพเช–เชตเซ€. ๐Ÿ™

6. เชชเซเชฐเชฅเชฎ (เชจเชฟเชทเซเชซเชณ) เชนเซเชฎเชฒเซ‹: ROMX

เชœเซ‹ เช•เซ‡, เช…เชฎเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เชฏเซเช•เซเชคเชฟ เช…เชœเชฎเชพเชตเซ€ เชถเช•เซ€เช เช›เซ€เช: เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฎเชจเชธเซเชตเซ€ เช“เชชเช•เซ‹เชก เชšเชฒเชพเชตเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชนเซ‹เชตเชพเชฅเซ€, เชถเชพ เชฎเชพเชŸเซ‡ ROMX เชจเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เชจ เช•เชฐเซ€เช, เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชซเซเชฒเซ‡เชถ เชฎเซ‡เชฎเชฐเซ€ เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡? เช† เช…เชญเชฟเช—เชฎเชฎเชพเช‚ เชธเชซเชณเชคเชพเชจเซ€ เชธเชพเชฐเซ€ เชคเช• เช›เซ‡. เช•เชพเชฐเชฃ เช•เซ‡ เชฐเซ€เชกเชฌเซเชฒเซ‹เช• เชซเช‚เช•เซเชถเชจ เช•เซ‡ เชœเซ‡ SROM (เชœเซ‡ เชตเซ‡เช•เซเชŸเชฐ เชฆเซเชตเชพเชฐเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏ เช›เซ‡) เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชตเชพเช‚เชšเซ‡ เช›เซ‡ เชคเซ‡ เชคเชชเชพเชธเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เชจเซ‡ ISSP เชฎเชพเช‚เชฅเซ€ เชฌเซ‹เชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ. เชœเซ‹ เช•เซ‡, ROMX เช“เชชเช•เซ‹เชกเชฎเชพเช‚ เช•เชฆเชพเชš เช†เชตเซ€ เชคเชชเชพเชธ เชจ เชชเชฃ เชนเซ‹เชฏ. เชคเซ‹ เช…เชนเซ€เช‚ Python เช•เซ‹เชก เช›เซ‡ (Arduino เช•เซ‹เชกเชฎเชพเช‚ เชฅเซ‹เชกเชพ เชธเชนเชพเชฏเช• เชตเชฐเซเช—เซ‹ เช‰เชฎเซ‡เชฐเซเชฏเชพ เชชเช›เซ€):

for i in range(0, 8192):
    write_reg(0xF0, i>>8)       # A = 0
    write_reg(0xF3, i&0xFF)     # X = 0
    exec_opcodes("x28x30x40")    # ROMX, HALT, NOP
    byte = read_reg(0xF0)       # ROMX reads ROM[A|X] into A
    print "%02x" % ord(byte[0]) # print ROM byte

เช•เชฎเชจเชธเซ€เชฌเซ‡ เช† เช•เซ‹เชก เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. ๐Ÿ™ เช…เชฅเชตเชพ เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡ เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช†เช‰เชŸเชชเซเชŸ เชชเชฐ เช†เชชเชฃเชจเซ‡ เช†เชชเชฃเชพ เชชเซ‹เชคเชพเชจเชพ เช“เชชเช•เซ‹เชกเซเชธ เชฎเชณเซ‡ เช›เซ‡ (0x28 0x30 0x40)! เชฎเชจเซ‡ เชจเชฅเซ€ เชฒเชพเช—เชคเซเช‚ เช•เซ‡ เช‰เชชเช•เชฐเชฃเชจเซ€ เช…เชจเซเชฐเซ‚เชช เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เช เชฐเซ€เชก เชชเซเชฐเซ‹เชŸเซ‡เช•เซเชถเชจเชจเซเช‚ เชเช• เชคเชคเซเชต เช›เซ‡. เช† เชเช• เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเชฟเช‚เช— เชฏเซเช•เซเชคเชฟ เชœเซ‡เชตเซเช‚ เช›เซ‡: เชœเซเชฏเชพเชฐเซ‡ เชฌเชพเชนเซเชฏ opcodes เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ ROM เชฌเชธเชจเซ‡ เช•เชพเชฎเชšเชฒเชพเช‰ เชฌเชซเชฐ เชชเชฐ เชฐเซ€เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

7. เชฌเซ€เชœเซ‹ เชนเซเชฎเชฒเซ‹: เช•เซ‹เชฒเซเชก เชฌเซ‚เชŸ เชŸเซเชฐเซ‡เชธเชฟเช‚เช—

ROMX เชฏเซเช•เซเชคเชฟ เช•เชพเชฎ เช•เชฐเชคเซ€ เชจ เชนเซ‹เชตเชพเชฅเซ€, เชฎเซ‡เช‚ เช† เชฏเซเช•เซเชคเชฟเชจเซ€ เชฌเซ€เชœเซ€ เชตเชฟเชตเชฟเชงเชคเชพ เชตเชฟเชถเซ‡ เชตเชฟเชšเชพเชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚ - เชชเซเชฐเช•เชพเชถเชจเชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ "เชฎเชพเชˆเช•เซเชฐเซ‹เช•เชจเซเชŸเซเชฐเซ‹เชฒเชฐเชจเชพ เชซเชฐเซเชฎเชตเซ‡เชฐ เชชเซเชฐเซ‹เชŸเซ‡เช•เซเชถเชจ เชชเชฐ เชตเชงเซ เชชเชกเชคเซ‹ เชชเซเชฐเช•เชพเชถ เชชเชพเชกเชตเซ‹".

7.1. เช…เชฎเชฒเซ€เช•เชฐเชฃ

ISSP เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ CHECKSUM-SETUP เชฎเชพเชŸเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชตเซ‡เช•เซเชŸเชฐ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡:

[DE E0 1C] wrreg CPU_F (f7), 0x00
[DE C0 1C] wrreg SP (f6), 0x00
[9F 07 5C] wrmem KEY1, 0x3A
[9F 20 7C] wrmem KEY2, 0x03
[DE A0 1C] wrreg PCh (f5), 0x00
[DE 80 7C] wrreg PCl (f4), 0x03
[9F 70 1C] wrmem POINTER, 0x80
[DF 26 1C] wrreg opc1 (f9), 0x30
[DF 48 1C] wrreg opc2 (fa), 0x40
[9F 40 1C] wrmem BLOCKID, 0x00
[DE 00 FC] wrreg A (f0), 0x07
[DF 00 1C] wrreg opc0 (f8), 0x00
[DF E2 5C] wrreg CPU_SCR0 (ff), 0x12

เช† เช†เชตเชถเซเชฏเช•เชชเชฃเซ‡ SROM เชซเช‚เช•เซเชถเชจ 0x07 เช•เชนเซ‡ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชฎเชพเช‚ เชฐเชœเซ‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡ (เช‡เชŸเชพเชฒเชฟเช•เซเชธ เชฎเชพเช‡เชจ):

เช† เช•เชพเชฐเซเชฏ เชšเซ‡เช•เชธเชฎ เชšเช•เชพเชธเชฃเซ€. เชคเซ‡ เชถเซ‚เชจเซเชฏเชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซ€เชจเซ‡, เชเช• เชซเซเชฒเซ‡เชถ เชฌเซ‡เช‚เช•เชฎเชพเช‚ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ-เชจเชฟเชฐเซเชฆเชฟเชทเซเชŸ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพเชจเชพ 16-เชฌเซ€เชŸ เชšเซ‡เช•เชธเชฎเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ‡ เช›เซ‡. BLOCKID เชชเชฐเชฟเชฎเชพเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฌเซเชฒเซ‹เช•เซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพเชจเซ‡ เชชเชธเชพเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชšเซ‡เช•เชธเชฎเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. "1" เชจเซเช‚ เชฎเซ‚เชฒเซเชฏ เชฎเชพเชคเซเชฐ เชฌเซเชฒเซ‹เช• เชถเซ‚เชจเซเชฏ เชฎเชพเชŸเซ‡ เชšเซ‡เช•เชธเชฎเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชถเซ‡; เชœเซเชฏเชพเชฐเซ‡ "0" เชจเชพ เช•เชพเชฐเชฃเซ‡ เชซเซเชฒเซ‡เชถ เชฌเซ‡เช‚เช•เชจเชพ เชคเชฎเชพเชฎ 256 เชฌเซเชฒเซ‹เช•เชจเซ€ เช•เซเชฒ เชšเซ‡เช•เชธเชฎเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. 16-เชฌเซ€เชŸ เชšเซ‡เช•เชธเชฎ KEY1 เช…เชจเซ‡ KEY2 เชฆเซเชตเชพเชฐเชพ เชชเชฐเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. KEY1 เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชšเซ‡เช•เชธเชฎเชจเชพ เชฒเซ‹-เช“เชฐเซเชกเชฐ 8 เชฌเชฟเชŸเซเชธ เชธเซเชŸเซ‹เชฐ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ KEY2 เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชนเชพเชˆ-เช“เชฐเซเชกเชฐ 8 เชฌเชฟเชŸเซเชธ เชธเซเชŸเซ‹เชฐ เช•เชฐเซ‡ เช›เซ‡. เช˜เชฃเซ€ เชซเซเชฒเซ‡เชถ เชฌเซ‡เช‚เช•เซ‹ เชงเชฐเชพเชตเชคเชพ เช‰เชชเช•เชฐเชฃเซ‹ เชฎเชพเชŸเซ‡, เชšเซ‡เช•เชธเชฎ เชซเช‚เช•เซเชถเชจ เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เช…เชฒเช—เชฅเซ€ เชฌเซ‹เชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชฌเซ‡เช‚เช• เชจเช‚เชฌเชฐ เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชคเซ‡ เช•เชพเชฎ เช•เชฐเชถเซ‡ เชคเซ‡ FLS_PR1 เชฐเชœเชฟเชธเซเชŸเชฐ เชฆเซเชตเชพเชฐเชพ เชธเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ (เชฒเช•เซเชทเซเชฏ เชซเซเชฒเซ‡เชถ เชฌเซ‡เช‚เช•เชจเซ‡ เช…เชจเซเชฐเซ‚เชช เชคเซ‡เชฎเชพเช‚ เชฌเซ€เชŸ เชธเซ‡เชŸ เช•เชฐเซ€เชจเซ‡).

เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เช† เชเช• เชธเชฐเชณ เชšเซ‡เช•เชธเชฎ เช›เซ‡: เชฌเชพเช‡เชŸเซเชธ เชเช• เชชเช›เซ€ เชเช• เชธเชฐเชณ เชฐเซ€เชคเซ‡ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡; เช•เซ‹เชˆ เชซเซ‡เชจเซเชธเซ€ CRC quirks เชจเชฅเซ€. เชตเชงเซเชฎเชพเช‚, เช เชœเชพเชฃเซ€เชจเซ‡ เช•เซ‡ M8C เช•เซ‹เชฐเชฎเชพเช‚ เชฐเชœเชฟเชธเซเชŸเชฐเซเชธเชจเซ‹ เช–เซ‚เชฌ เชœ เชจเชพเชจเซ‹ เชธเชฎเซ‚เชน เช›เซ‡, เชฎเซ‡เช‚ เชงเชพเชฐเซเชฏเซเช‚ เช•เซ‡ เชšเซ‡เช•เชธเชฎเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชฎเชงเซเชฏเชตเชฐเซเชคเซ€ เชฎเซ‚เชฒเซเชฏเซ‹ เชธเชฎเชพเชจ เชšเชฒเซ‹เชฎเชพเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชœเซ‡ เช†เช–เชฐเซ‡ เช†เช‰เชŸเชชเซเชŸ เชชเชฐ เชœเชถเซ‡: KEY1 (0xF8) / KEY2 ( 0xF9).

เชคเซ‡เชฅเซ€ เชธเชฟเชฆเซเชงเชพเช‚เชคเชฎเชพเช‚ เชฎเชพเชฐเซ‹ เชนเซเชฎเชฒเซ‹ เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡:

  1. เช…เชฎเซ‡ ISSP เชฆเซเชตเชพเชฐเชพ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ€เช เช›เซ€เช.
  2. เช…เชฎเซ‡ CHECKSUM-SETUP เชตเซ‡เช•เซเชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชšเซ‡เช•เชธเชฎ เช—เชฃเชคเชฐเซ€ เชถเชฐเซ‚ เช•เชฐเซ€เช เช›เซ€เช.
  3. เช…เชฎเซ‡ เชจเชฟเชฐเซเชฆเชฟเชทเซเชŸ เชธเชฎเชฏ T เชชเช›เซ€ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเชจเซ‡ เชฐเซ€เชฌเซ‚เชŸ เช•เชฐเซ€เช เช›เซ€เช.
  4. เชตเชฐเซเชคเชฎเชพเชจ เชšเซ‡เช•เชธเชฎ C เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ RAM เชตเชพเช‚เชšเซ€เช เช›เซ€เช.
  5. เชฆเชฐ เชตเช–เชคเซ‡ T เชจเซ‡ เชฅเซ‹เชกเซ‹ เชตเชงเชพเชฐเชคเชพ เชชเช—เชฒเชพเช‚ 3 เช…เชจเซ‡ 4 เชจเซเช‚ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเซ‹.
  6. เช…เชฎเซ‡ เช…เช—เชพเช‰เชจเชพ เชšเซ‡เช•เชธเชฎ C เชจเซ‡ เชตเชฐเซเชคเชฎเชพเชจเชฎเชพเช‚เชฅเซ€ เชฌเชพเชฆ เช•เชฐเซ€เชจเซ‡ เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€เช เช›เซ€เช.

เชœเซ‹ เช•เซ‡, เชคเซเชฏเชพเช‚ เชเช• เชธเชฎเชธเซเชฏเชพ เช›เซ‡: Initialize-1 เชตเซ‡เช•เซเชŸเชฐ เช•เซ‡ เชœเซ‡ เช†เชชเชฃเซ‡ เชฐเซ€เชฌเซ‚เชŸ เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชฎเซ‹เช•เชฒเชตเซเช‚ เชœเซ‹เชˆเช เชคเซ‡ KEY1 เช…เชจเซ‡ KEY2 เชชเชฐ เชซเชฐเซ€เชฅเซ€ เชฒเช–เซ‡ เช›เซ‡:

1100101000000000000000  # ะœะฐะณะธั, ะฟะตั€ะตะฒะพะดัั‰ะฐั PSoC ะฒ ั€ะตะถะธะผ ะฟั€ะพะณั€ะฐะผะผะธั€ะพะฒะฐะฝะธั
nop
nop
nop
nop
nop
[DE E0 1C] wrreg CPU_F (f7), 0x00
[DE C0 1C] wrreg SP (f6), 0x00
[9F 07 5C] wrmem KEY1, 0x3A # ะบะพะฝั‚ั€ะพะปัŒะฝะฐั ััƒะผะผะฐ ะฟะตั€ะตะทะฐะฟะธัั‹ะฒะฐะตั‚ัั ะทะดะตััŒ
[9F 20 7C] wrmem KEY2, 0x03 # ะธ ะทะดะตััŒ
[DE A0 1C] wrreg PCh (f5), 0x00
[DE 80 7C] wrreg PCl (f4), 0x03
[9F 70 1C] wrmem POINTER, 0x80
[DF 26 1C] wrreg opc1 (f9), 0x30
[DF 48 1C] wrreg opc2 (fa), 0x40
[DE 01 3C] wrreg A (f0), 0x09   # SROM-ั„ัƒะฝะบั†ะธั 9
[DF 00 1C] wrreg opc0 (f8), 0x00    # SSC
[DF E2 5C] wrreg CPU_SCR0 (ff), 0x12

เช† เช•เซ‹เชก เช•เซ‡เชฒเชฟเชฌเซเชฐเซ‡เชŸ1 (SROM เชซเช‚เช•เซเชถเชจ 9) เชชเชฐ เช•เซ‰เชฒ เช•เชฐเซ€เชจเซ‡ เช…เชฎเชพเชฐเชพ เช•เชฟเช‚เชฎเชคเซ€ เชšเซ‡เช•เชธเชฎเชจเซ‡ เช“เชตเชฐเชฐเชพเช‡เชŸ เช•เชฐเซ‡ เช›เซ‡... เช•เชฆเชพเชš เช†เชชเชฃเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชฎเซ‹เชกเชฎเชพเช‚ เชชเซเชฐเชตเซ‡เชถเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เชœเชฟเช• เชจเช‚เชฌเชฐ (เช‰เชชเชฐเชจเชพ เช•เซ‹เชกเชจเซ€ เชถเชฐเซ‚เช†เชคเชฅเซ€) เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ€เช, เช…เชจเซ‡ เชชเช›เซ€ SRAM เชตเชพเช‚เชšเซ€ เชถเช•เซ€เช? เช…เชจเซ‡ เชนเชพ, เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡! Arduino เช•เซ‹เชก เช•เซ‡ เชœเซ‡ เช† เชนเซเชฎเชฒเชพเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เซ‡ เช›เซ‡ เชคเซ‡ เชเช•เชฆเชฎ เชธเชฐเชณ เช›เซ‡:

case Cmnd_STK_START_CSUM:
    checksum_delay = ((uint32_t)getch())<<24;
    checksum_delay |= ((uint32_t)getch())<<16;
    checksum_delay |= ((uint32_t)getch())<<8;
    checksum_delay |= getch();
    if(checksum_delay > 10000) {
        ms_delay = checksum_delay/1000;
        checksum_delay = checksum_delay%1000;
    }
    else {
        ms_delay = 0;
    }
    send_checksum_v();
    if(checksum_delay)
        delayMicroseconds(checksum_delay);
    delay(ms_delay);
    start_pmode();

  1. เชšเซ‡เช•เชฎ_เชตเชฟเชฒเช‚เชฌ เชตเชพเช‚เชšเซ‹.
  2. เชšเซ‡เช•เชธเชฎ เช—เชฃเชคเชฐเซ€ เชšเชฒเชพเชตเซ‹ (send_checksum_v).
  3. เชšเซ‹เช•เซเช•เชธ เชธเชฎเชฏเช—เชพเชณเชพ เชฎเชพเชŸเซ‡ เชฐเชพเชน เชœเซเช“; เชจเซ€เชšเซ‡เชจเชพ เช•เซเชทเชคเชฟเช“เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชคเชพ:
    • เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชฎเชจเซ‡ เช–เชฌเชฐ เชจ เชชเชกเซ€ เช•เซ‡ เชคเซ‡ เชถเซเช‚ เชฅเชพเชฏ เช›เซ‡ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชฎเซ‡เช‚ เช˜เชฃเซ‹ เชธเชฎเชฏ เชฌเช—เชพเชกเซเชฏเซ‹ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเซ‡เช•เชจเซเชกเชจเซ‹ เชตเชฟเชฒเช‚เชฌ 16383 ฮผs เช•เชฐเชคเชพเช‚ เชตเชงเซ เชจ เชนเซ‹เชฏ เชคเซ‡เชตเชพ เชตเชฟเชฒเช‚เชฌ เชธเชพเชฅเซ‡ เชœ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡;
    • เช…เชจเซ‡ เชชเช›เซ€ เชซเชฐเซ€เชฅเซ€ เชเชŸเชฒเซ‹ เชœ เชธเชฎเชฏ เช•เชพเชขเซ€ เชจเชพเช–เซเชฏเซ‹ เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชฎเชจเซ‡ เช–เชฌเชฐ เชจ เชชเชกเซ€ เช•เซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเซ‡เช•เชจเซเชกเชฎเชพเช‚ เชตเชฟเชฒเช‚เชฌ เชฅเชพเชฏ เช›เซ‡, เชœเซ‹ 0 เช‡เชจเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เชคเซ‡เชจเซ‡ เชชเชธเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‹ เชคเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช–เซ‹เชŸเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡!
  4. PSoC เชจเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชฎเซ‹เชกเชฎเชพเช‚ เชฐเซ€เชฌเซ‚เชŸ เช•เชฐเซ‹ (เช…เชฎเซ‡ เชซเช•เซเชค เชœเชพเชฆเซเชˆ เชจเช‚เชฌเชฐ เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช, เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชตเซ‡เช•เซเชŸเชฐ เชฎเซ‹เช•เชฒเซเชฏเชพ เชตเชฟเชจเชพ).

เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เช…เช‚เชคเชฟเชฎ เช•เซ‹เชก:

for delay in range(0, 150000):  # ะทะฐะดะตั€ะถะบะฐ ะฒ ะผะธะบั€ะพัะตะบัƒะฝะดะฐั…
    for i in range(0, 10):      # ะบะพะปะธั‡ะตัั‚ะฒะพ ัั‡ะธั‚ั‹ะฒะฐะฝะธั ะดะปั ะบะฐะถะดะพะนะธะท ะทะฐะดะตั€ะถะตะบ
        try:
            reset_psoc(quiet=True)  # ะฟะตั€ะตะทะฐะณั€ัƒะทะบะฐ ะธ ะฒั…ะพะด ะฒ ั€ะตะถะธะผ ะฟั€ะพะณั€ะฐะผะผะธั€ะพะฒะฐะฝะธั
            send_vectors()      # ะพั‚ะฟั€ะฐะฒะบะฐ ะธะฝะธั†ะธะฐะปะธะทะธั€ัƒัŽั‰ะธั… ะฒะตะบั‚ะพั€ะพะฒ
            ser.write("x85"+struct.pack(">I", delay)) # ะฒั‹ั‡ะธัะปะธั‚ัŒ ะบะพะฝั‚ั€ะพะปัŒะฝัƒัŽ ััƒะผะผัƒ + ะฟะตั€ะตะทะฐะณั€ัƒะทะธั‚ัŒัั ะฟะพัะปะต ะทะฐะดะตั€ะถะบะธ
            res = ser.read(1)       # ัั‡ะธั‚ะฐั‚ัŒ arduino ACK
        except Exception as e:
            print e
            ser.close()
            os.system("timeout -s KILL 1s picocom -b 115200 /dev/ttyACM0 2>&1 > /dev/null")
            ser = serial.Serial('/dev/ttyACM0', 115200, timeout=0.5) # ะพั‚ะบั€ั‹ั‚ัŒ ะฟะพัะปะตะดะพะฒะฐั‚ะตะปัŒะฝั‹ะน ะฟะพั€ั‚
            continue
        print "%05d %02X %02X %02X" % (delay,      # ัั‡ะธั‚ะฐั‚ัŒ RAM-ะฑะฐะนั‚ั‹
                read_regb(0xf1),
                read_ramb(0xf8),
                read_ramb(0xf9))

เชŸเซ‚เช‚เช•เชฎเชพเช‚, เช† เช•เซ‹เชก เชถเซเช‚ เช•เชฐเซ‡ เช›เซ‡:

  1. PSoC เชฐเซ€เชฌเซ‚เชŸ เช•เชฐเซ‡ เช›เซ‡ (เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชœเชพเชฆเซเชˆ เชจเช‚เชฌเชฐ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡).
  2. เชธเช‚เชชเซ‚เชฐเซเชฃ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชตเซ‡เช•เซเชŸเชฐ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡.
  3. Arduino เชซเช‚เช•เซเชถเชจเชจเซ‡ Cmnd_STK_START_CSUM (0x85) เช•เซ‰เชฒ เช•เชฐเซ‡ เช›เซ‡, เชœเซเชฏเชพเช‚ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเซ‡เช•เชจเซเชกเชฎเชพเช‚ เชตเชฟเชฒเช‚เชฌ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชคเชฐเซ€เช•เซ‡ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡.
  4. เชšเซ‡เช•เชธเชฎ (0xF8 เช…เชจเซ‡ 0xF9) เช…เชจเซ‡ เชฌเชฟเชจเชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เซƒเชค เชฐเชœเซ€เชธเซเชŸเชฐ 0xF1 เชตเชพเช‚เชšเซ‡ เช›เซ‡.

เช† เช•เซ‹เชก 10 เชฎเชพเช‡เช•เซเชฐเซ‹เชธเซ‡เช•เชจเซเชกเชฎเชพเช‚ 1 เชตเช–เชค เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เชฅเชพเชฏ เช›เซ‡. 0xF1 เช…เชนเซ€เช‚ เชธเชฎเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชเช•เชฎเชพเชคเซเชฐ เชฐเชœเซ€เชธเซเชŸเชฐ เชนเชคเซเช‚ เชœเซ‡ เชšเซ‡เช•เชธเชฎเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชฌเชฆเชฒเชพเชฏเซเช‚ เชนเชคเซเช‚. เช•เชฆเชพเชš เชคเซ‡ เช…เช‚เช•เช—เชฃเชฟเชค เชคเชฐเซเช• เชเช•เชฎ เชฆเซเชตเชพเชฐเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซเช‚ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเซเช‚ เช•เชพเชฎเชšเชฒเชพเช‰ เชšเชฒ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ Arduino เชœเซ€เชตเชจเชจเชพ เชšเชฟเชนเซเชจเซ‹ เชฆเชฐเซเชถเชพเชตเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชชเชฟเช•เซ‹เช•เซ‹เชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชนเซเช‚ Arduino เชจเซ‡ เชฐเซ€เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชจเซ€เชš เชนเซ‡เช•เชจเซ€ เชจเซ‹เช‚เชง เชฒเซ‹ (เชถเชพ เชฎเชพเชŸเซ‡ เช–เชฌเชฐ เชจเชฅเซ€).

7.2. เชชเชฐเชฟเชฃเชพเชฎ เชตเชพเช‚เชšเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชชเชพเชฏเชฅเซ‹เชจ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชฏ เช›เซ‡ (เชตเชพเช‚เชšเซ€ เชถเช•เชพเชฏ เชคเซ‡ เชฎเชพเชŸเซ‡ เชธเชฐเชณ):

DELAY F1 F8 F9  # F1 โ€“ ะฒั‹ัˆะตัƒะฟะพะผัะฝัƒั‚ั‹ะน ะฝะตะธะทะฒะตัั‚ะฝั‹ะน ั€ะตะณะธัั‚ั€
                  # F8 ะผะปะฐะดัˆะธะน ะฑะฐะนั‚ ะบะพะฝั‚ั€ะพะปัŒะฝะพะน ััƒะผะผั‹
                  # F9 ัั‚ะฐั€ัˆะธะน ะฑะฐะนั‚ ะบะพะฝั‚ั€ะพะปัŒะฝะพะน ััƒะผะผั‹

00000 03 E1 19
[...]
00016 F9 00 03
00016 F9 00 00
00016 F9 00 03
00016 F9 00 03
00016 F9 00 03
00016 F9 00 00  # ะบะพะฝั‚ั€ะพะปัŒะฝะฐั ััƒะผะผะฐ ัะฑั€ะฐัั‹ะฒะฐะตั‚ัั ะฒ 0
00017 FB 00 00
[...]
00023 F8 00 00
00024 80 80 00  # 1-ะน ะฑะฐะนั‚: 0x0080-0x0000 = 0x80 
00024 80 80 00
00024 80 80 00
[...]
00057 CC E7 00   # 2-ะน ะฑะฐะนั‚: 0xE7-0x80: 0x67
00057 CC E7 00
00057 01 17 01  # ะฟะพะฝัั‚ะธั ะฝะต ะธะผะตัŽ, ั‡ั‚ะพ ะทะดะตััŒ ะฟั€ะพะธัั…ะพะดะธั‚
00057 01 17 01
00057 01 17 01
00058 D0 17 01
00058 D0 17 01
00058 D0 17 01
00058 D0 17 01
00058 F8 E7 00  # ะกะฝะพะฒะฐ E7?
00058 D0 17 01
[...]
00059 E7 E7 00
00060 17 17 00  # ะฅะผะผะผะผะผะผ
[...]
00062 00 17 00
00062 00 17 00
00063 01 17 01  # ะ, ะดะพัˆะปะพ! ะ’ะพั‚ ะพะฝ ะถะต ะฟะตั€ะตะฝะพั ะฒ ัั‚ะฐั€ัˆะธะน ะฑะฐะนั‚
00063 01 17 01
[...]
00075 CC 17 01  # ะ˜ั‚ะฐะบ, 0x117-0xE7: 0x30

เชเชตเซเช‚ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เซ‡, เช…เชฎเชจเซ‡ เชเช• เชธเชฎเชธเซเชฏเชพ เช›เซ‡: เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชšเซ‡เช•เชธเชฎ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช, เชจเชฒ เชฌเชพเชˆเชŸ เชตเชพเช‚เชšเซ‡เชฒเชพ เชฎเซ‚เชฒเซเชฏเชจเซ‡ เชฌเชฆเชฒเชคเซเช‚ เชจเชฅเซ€. เชœเซ‹ เช•เซ‡, เชธเชฎเช—เซเชฐ เช—เชฃเชคเชฐเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ (8192 เชฌเชพเช‡เชŸเซเชธ) 0,1478 เชธเซ‡เช•เชจเซเชก เชฒเซ‡ เช›เซ‡ (เชฆเชฐเซ‡เช• เชตเช–เชคเซ‡ เชคเซ‡ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชธเชนเซ‡เชœ เชญเชฟเชจเซเชจเชคเชพ เชธเชพเชฅเซ‡), เชœเซ‡ เชฒเช—เชญเช— 18,04 ฮผs เชชเซเชฐเชคเชฟ เชฌเชพเช‡เชŸ เชœเซ‡เชŸเชฒเซ€ เชฅเชพเชฏ เช›เซ‡, เช…เชฎเซ‡ เชฏเซ‹เช—เซเชฏ เชธเชฎเชฏเซ‡ เชšเซ‡เช•เชธเชฎ เชฎเซ‚เชฒเซเชฏเชจเซ‡ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เช† เชธเชฎเชฏเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช. เชชเซเชฐเชฅเชฎ เชฐเชจ เชฎเชพเชŸเซ‡, เชฌเชงเซเช‚ เช–เซ‚เชฌ เชธเชฐเชณเชคเชพเชฅเซ€ เชตเชพเช‚เชšเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เช•เซ‹เชฎเซเชชเซเชฏเซเชŸเซ‡เชถเชจเชฒ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ€ เช…เชตเชงเชฟ เชนเช‚เชฎเซ‡เชถเชพ เชฒเช—เชญเช— เชธเชฎเชพเชจ เชนเซ‹เชฏ เช›เซ‡. เชœเซ‹ เช•เซ‡, เช† เชกเชฎเซเชชเชจเซ‹ เช…เช‚เชค เช“เช›เซ‹ เชธเชšเซ‹เชŸ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชฆเชฐเซ‡เช• เชฐเชจ เชชเชฐ "เชจเชพเชจเชพ เชธเชฎเชฏเชจเชพ เชตเชฟเชšเชฒเชจเซ‹" เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฌเชจเซ€ เชœเชพเชฏ เช›เซ‡:

134023 D0 02 DD
134023 CC D2 DC
134023 CC D2 DC
134023 CC D2 DC
134023 FB D2 DC
134023 3F D2 DC
134023 CC D2 DC
134024 02 02 DC
134024 CC D2 DC
134024 F9 02 DC
134024 03 02 DD
134024 21 02 DD
134024 02 D2 DC
134024 02 02 DC
134024 02 02 DC
134024 F8 D2 DC
134024 F8 D2 DC
134025 CC D2 DC
134025 EF D2 DC
134025 21 02 DD
134025 F8 D2 DC
134025 21 02 DD
134025 CC D2 DC
134025 04 D2 DC
134025 FB D2 DC
134025 CC D2 DC
134025 FB 02 DD
134026 03 02 DD
134026 21 02 DD

เชคเซ‡ เชฆเชฐเซ‡เช• เชฎเชพเช‡เช•เซเชฐเซ‹เชธเซ‡เช•เชจเซเชกเชจเชพ เชตเชฟเชฒเช‚เชฌ เชฎเชพเชŸเซ‡ 10 เชกเชฎเซเชช เช›เซ‡. เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชจเชพ เชคเชฎเชพเชฎ 8192 เชฌเชพเช‡เชŸเซเชธ เชกเชฎเซเชช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เช•เซเชฒ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฎเชฏ เชฒเช—เชญเช— 48 เช•เชฒเชพเช•เชจเซ‹ เช›เซ‡.

7.3. เชซเซเชฒเซ‡เชถ เชฌเชพเชˆเชจเชฐเซ€ เชชเซเชจเชƒเชจเชฟเชฐเซเชฎเชพเชฃ

เชฎเซ‡เช‚ เชนเชœเซ€ เชธเซเชงเซ€ เช•เซ‹เชก เชฒเช–เชตเชพเชจเซเช‚ เชชเซ‚เชฐเซเชฃ เช•เชฐเซเชฏเซเช‚ เชจเชฅเซ€ เชœเซ‡ เชคเชฎเชพเชฎ เชธเชฎเชฏเชจเชพ เชตเชฟเชšเชฒเชจเซ‹เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชคเชพ, เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชจเชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช•เซ‹เชกเชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชชเซเชจเชƒเชจเชฟเชฐเซเชฎเชพเชฃ เช•เชฐเชถเซ‡. เชœเซ‹ เช•เซ‡, เชฎเซ‡เช‚ เช† เช•เซ‹เชกเชจเซ€ เชถเชฐเซ‚เช†เชค เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชชเซเชจเชƒเชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ€ เช›เซ‡. เชฎเซ‡เช‚ เชคเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เชฐเซเชฏเซเช‚ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ m8cdis เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชกเชฟเชธเชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเซเชฏเซเช‚:

0000: 80 67   jmp  0068h     ; Reset vector
[...]
0068: 71 10   or  F,010h
006a: 62 e3 87 mov  reg[VLT_CR],087h
006d: 70 ef   and  F,0efh
006f: 41 fe fb and  reg[CPU_SCR1],0fbh
0072: 50 80   mov  A,080h
0074: 4e    swap A,SP
0075: 55 fa 01 mov  [0fah],001h
0078: 4f    mov  X,SP
0079: 5b    mov  A,X
007a: 01 03   add  A,003h
007c: 53 f9   mov  [0f9h],A
007e: 55 f8 3a mov  [0f8h],03ah
0081: 50 06   mov  A,006h
0083: 00    ssc
[...]
0122: 18    pop  A
0123: 71 10   or  F,010h
0125: 43 e3 10 or  reg[VLT_CR],010h
0128: 70 00   and  F,000h ; Paging mode changed from 3 to 0
012a: ef 62   jacc 008dh
012c: e0 00   jacc 012dh
012e: 71 10   or  F,010h
0130: 62 e0 02 mov  reg[OSC_CR0],002h
0133: 70 ef   and  F,0efh
0135: 62 e2 00 mov  reg[INT_VC],000h
0138: 7c 19 30 lcall 1930h
013b: 8f ff   jmp  013bh
013d: 50 08   mov  A,008h
013f: 7f    ret

เชคเชฆเซเชฆเชจ เชฌเซเชฆเซเชงเชฟเช—เชฎเซเชฏ เชฒเชพเช—เซ‡ เช›เซ‡!

7.4. PIN เช•เซ‹เชก เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเชฐเชจเชพเชฎเซเช‚ เชถเซ‹เชงเชตเซเช‚

เชนเชตเซ‡ เชœเซเชฏเชพเชฐเซ‡ เช†เชชเชฃเซ‡ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชšเซ‡เช•เชธเชฎ เชตเชพเช‚เชšเซ€ เชถเช•เซ€เช เช›เซ€เช, เช…เชฎเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เชคเชชเชพเชธ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เช•เซ‡ เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชจเซ‡ เช•เซเชฏเชพเช‚ เชฌเชฆเชฒเชพเชฏ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เช†เชชเชฃเซ‡:

  • เช–เซ‹เชŸเซ‹ PIN เช•เซ‹เชก เชฆเชพเช–เชฒ เช•เชฐเซ‹;
  • เชชเชฟเชจ เช•เซ‹เชก เชฌเชฆเชฒเซ‹.

เชชเซเชฐเชฅเชฎ, เช…เช‚เชฆเชพเชœเชฟเชค เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเชฐเชจเชพเชฎเซเช‚ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡, เชฎเซ‡เช‚ เชฐเซ€เชฌเซ‚เชŸ เชชเช›เซ€ 10 ms เช‡เชจเซเช•เซเชฐเซ€เชฎเซ‡เชจเซเชŸเชฎเชพเช‚ เชšเซ‡เช•เชธเชฎ เชกเชฎเซเชช เชฒเซ€เชงเซ‹. เชชเช›เซ€ เชฎเซ‡เช‚ เช–เซ‹เชŸเซ‹ PIN เชฆเชพเช–เชฒ เช•เชฐเซเชฏเซ‹ เช…เชจเซ‡ เชคเซ‡ เชœ เช•เชฐเซเชฏเซเช‚.

เชชเชฐเชฟเชฃเชพเชฎ เชฌเชนเซ เชธเซเช–เชฆ เชจ เชนเชคเซเช‚, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชฎเชพเช‚ เช˜เชฃเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชฅเชฏเชพ เชนเชคเชพ. เชชเชฐเช‚เชคเซ เช…เช‚เชคเซ‡ เชนเซเช‚ เช เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชนเชคเซ‹ เช•เซ‡ เชšเซ‡เช•เชธเชฎ 120000 ยตs เช…เชจเซ‡ 140000 ยตs เชตเชฟเชฒเช‚เชฌ เชตเชšเซเชšเซ‡ เช•เซเชฏเชพเช‚เช• เชฌเชฆเชฒเชพเชˆ เช—เชฏเซเช‚ เช›เซ‡. เชชเชฐเช‚เชคเซ เชฎเซ‡เช‚ เชคเซเชฏเชพเช‚ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ‡เชฒเซ‹ "เชชเชฟเชจเช•เซ‹เชก" เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช–เซ‹เชŸเซ‹ เชนเชคเซ‹ - เชตเชฟเชฒเช‚เชฌเชฟเชค เชฎเชพเช‡เช•เซเชฐเซ‹เชธเซ‡เช•เชจเซเชก เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเชพ เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸเชจเซ‡ เช•เชพเชฐเชฃเซ‡, เชœเซ‡ เชœเซเชฏเชพเชฐเซ‡ 0 เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เชตเชฟเชšเชฟเชคเซเชฐ เชตเชธเซเชคเซเช“ เช•เชฐเซ‡ เช›เซ‡.

เชชเช›เซ€, เชฒเช—เชญเช— 3 เช•เชฒเชพเช• เชชเชธเชพเชฐ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชฎเชจเซ‡ เชฏเชพเชฆ เช†เชตเซเชฏเซเช‚ เช•เซ‡ SROM เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ เชšเซ‡เช•เชธเชฎ เช‡เชจเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เชเช• เชฆเชฒเซ€เชฒ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡ เชœเซ‡ เชšเซ‡เช•เชธเชฎ เชฎเชพเชŸเซ‡ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ เชธเซเชชเชทเซเชŸ เช•เชฐเซ‡ เช›เซ‡! เชคเซ‡. เช…เชฎเซ‡ 64-เชฌเชพเชˆเชŸ เชฌเซเชฒเซ‹เช• เชธเซเชงเซ€เชจเซ€ เชšเซ‹เช•เชธเชพเชˆ เชธเชพเชฅเซ‡ PIN เช•เซ‹เชก เช…เชจเซ‡ "เช–เซ‹เชŸเชพ เชชเซเชฐเชฏเชคเซเชจเซ‹" เช•เชพเช‰เชจเซเชŸเชฐเชจเซเช‚ เชธเช‚เช—เซเชฐเชน เชธเชฐเชจเชพเชฎเซเช‚ เชธเชฐเชณเชคเชพเชฅเซ€ เชธเซเชฅเชพเชจเชฟเช•เซ€เช•เชฐเชฃ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช.

เชฎเชพเชฐเชพ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชฐเชจเซ‹เช เชจเซ€เชšเซ‡เชจเชพ เชชเชฐเชฟเชฃเชพเชฎ เช†เชชเซเชฏเชพ:

Aigo เชธเซเชต-เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ€เช‚เช— เชฌเชพเชนเซเชฏ HDD เชกเซเชฐเชพเช‡เชตเชจเซ‡ เช‰เชฒเชŸเชพเชตเซ€ เช…เชจเซ‡ เชนเซ‡เช• เช•เชฐเชตเซเช‚. เชญเชพเช— 2: เชธเชพเชฏเชชเซเชฐเซ‡เชธ เชชเซ€เชเชธเช“เชธเซ€เชฎเชพเช‚เชฅเซ€ เชกเชฎเซเชช เชฒเซ‡เชตเซ‹

เชชเช›เซ€ เชฎเซ‡เช‚ เชชเชฟเชจ เช•เซ‹เชก "123456" เชฅเซ€ "1234567" เชฎเชพเช‚ เชฌเชฆเชฒเซเชฏเซ‹ เช…เชจเซ‡ เชฎเซ‡เชณเชตเซเชฏเซเช‚:

Aigo เชธเซเชต-เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ€เช‚เช— เชฌเชพเชนเซเชฏ HDD เชกเซเชฐเชพเช‡เชตเชจเซ‡ เช‰เชฒเชŸเชพเชตเซ€ เช…เชจเซ‡ เชนเซ‡เช• เช•เชฐเชตเซเช‚. เชญเชพเช— 2: เชธเชพเชฏเชชเซเชฐเซ‡เชธ เชชเซ€เชเชธเช“เชธเซ€เชฎเชพเช‚เชฅเซ€ เชกเชฎเซเชช เชฒเซ‡เชตเซ‹

เช†เชฎ, เชชเชฟเชจ เช•เซ‹เชก เช…เชจเซ‡ เช–เซ‹เชŸเชพ เชชเซเชฐเชฏเชพเชธเซ‹เชจเซเช‚ เช•เชพเช‰เชจเซเชŸเชฐ เชฌเซเชฒเซ‹เช• เชจเช‚เชฌเชฐ 126เชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เชนเซ‹เชฏ เชคเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡.

7.5. เชฌเซเชฒเซ‹เช• เชจเช‚เชฌเชฐ 126เชจเซ‹ เชกเชฎเซเชช เชฒเซ‡เชตเซ‹

เชฌเซเชฒเซ‹เช• #126 เชšเซ‡เช•เชธเชฎ เช—เชฃเชคเชฐเซ€เชจเซ€ เชถเชฐเซ‚เช†เชคเชฅเซ€, เชฎเชพเชฐเชพ เชธเช‚เชชเซ‚เชฐเซเชฃ เชกเชฎเซเชชเชฎเชพเช‚, 125x64x18 = 144000ฮผs เชจเซ€ เช†เชธเชชเชพเชธ เช•เซเชฏเชพเช‚เช• เชธเซเชฅเชฟเชค เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช, เช…เชจเซ‡ เชคเซ‡ เชคเชฆเซเชฆเชจ เชฌเซเชฆเซเชงเชฟเช—เชฎเซเชฏ เชฒเชพเช—เซ‡ เช›เซ‡. เชคเซ‡ เชชเช›เซ€, เช…เชธเช‚เช–เซเชฏ เช…เชฎเชพเชจเซเชฏ เชกเชฎเซเชชเซเชธเชจเซ‡ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชฌเชนเชพเชฐ เช•เชพเชขเซเชฏเชพ เชชเช›เซ€ ("เชจเชพเชจเชพ เชธเชฎเชฏเชจเชพ เชตเชฟเชšเชฒเชจเซ‹" เชจเชพ เชธเช‚เชšเชฏเชจเซ‡ เช•เชพเชฐเชฃเซ‡), เชฎเชจเซ‡ เช† เชฌเชพเช‡เชŸเซเชธ (145527 ฮผs เชจเซ€ เชตเชฟเชฒเช‚เชฌเชฟเชคเชคเชพ เชชเชฐ) เชฎเชณเชตเชพเชจเซเช‚ เชธเชฎเชพเชชเซเชค เชฅเชฏเซเช‚:

Aigo เชธเซเชต-เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ€เช‚เช— เชฌเชพเชนเซเชฏ HDD เชกเซเชฐเชพเช‡เชตเชจเซ‡ เช‰เชฒเชŸเชพเชตเซ€ เช…เชจเซ‡ เชนเซ‡เช• เช•เชฐเชตเซเช‚. เชญเชพเช— 2: เชธเชพเชฏเชชเซเชฐเซ‡เชธ เชชเซ€เชเชธเช“เชธเซ€เชฎเชพเช‚เชฅเซ€ เชกเชฎเซเชช เชฒเซ‡เชตเซ‹

เชคเซ‡ เชคเชฆเซเชฆเชจ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช•เซ‡ PIN เช•เซ‹เชก เชเชจเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡! เช† เชฎเซ‚เชฒเซเชฏเซ‹, เช…เชฒเชฌเชคเซเชค, ASCII เช•เซ‹เชกเซเชธเชฎเชพเช‚ เชฒเช–เซ‡เชฒเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เชคเซ‡เชฎ, เชคเซ‡เช“ เช•เซ‡เชชเซ‡เชธเชฟเชŸเซ€เชต เช•เซ€เชฌเซ‹เชฐเซเชกเชฎเชพเช‚เชฅเซ€ เชฒเซ€เชงเซ‡เชฒเชพ เชฐเซ€เชกเชฟเช‚เช—เซเชธเชจเซ‡ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชฟเชค เช•เชฐเซ‡ เช›เซ‡.

เช›เซ‡เชฒเซเชฒเซ‡, เช–เชฐเชพเชฌ เชชเซเชฐเชฏเชพเชธ เช•เชพเช‰เชจเซเชŸเชฐ เช•เซเชฏเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เช‚ เช•เซ‡เชŸเชฒเชพเช• เชตเชงเซ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เช•เชฐเซเชฏเชพ. เช…เชนเซ€เช‚ เชชเชฐเชฟเชฃเชพเชฎ เช›เซ‡:

Aigo เชธเซเชต-เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ€เช‚เช— เชฌเชพเชนเซเชฏ HDD เชกเซเชฐเชพเช‡เชตเชจเซ‡ เช‰เชฒเชŸเชพเชตเซ€ เช…เชจเซ‡ เชนเซ‡เช• เช•เชฐเชตเซเช‚. เชญเชพเช— 2: เชธเชพเชฏเชชเซเชฐเซ‡เชธ เชชเซ€เชเชธเช“เชธเซ€เชฎเชพเช‚เชฅเซ€ เชกเชฎเซเชช เชฒเซ‡เชตเซ‹

0xFF - เชเชŸเชฒเซ‡ "15 เชชเซเชฐเชฏเชพเชธเซ‹" เช…เชจเซ‡ เชคเซ‡ เชฆเชฐเซ‡เช• เชจเชฟเชทเซเชซเชณ เชชเซเชฐเชฏเชพเชธ เชธเชพเชฅเซ‡ เช˜เชŸเซ‡ เช›เซ‡.

7.6. PIN เช•เซ‹เชก เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชคเชฟ

เช…เชนเซ€เช‚ เชฎเชพเชฐเซ‹ เชจเซ€เชš เช•เซ‹เชก เช›เซ‡ เชœเซ‡ เช‰เชชเชฐเซ‹เช•เซเชคเชจเซ‡ เชเช•เชธเชพเชฅเซ‡ เชฎเซ‚เช•เซ‡ เช›เซ‡:

def dump_pin():
  pin_map = {0x24: "0", 0x25: "1", 0x26: "2", 0x27:"3", 0x20: "4", 0x21: "5",
        0x22: "6", 0x23: "7", 0x2c: "8", 0x2d: "9"}
  last_csum = 0
  pin_bytes = []
  for delay in range(145495, 145719, 16):
    csum = csum_at(delay, 1)
    byte = (csum-last_csum)&0xFF
    print "%05d %04x (%04x) => %02x" % (delay, csum, last_csum, byte)
    pin_bytes.append(byte)
    last_csum = csum
  print "PIN: ",
  for i in range(0, len(pin_bytes)):
    if pin_bytes[i] in pin_map:
      print pin_map[pin_bytes[i]],
  print

เช…เชนเซ€เช‚ เชคเซ‡เชจเชพ เช…เชฎเชฒเชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เช›เซ‡:

$ ./psoc.py 
syncing: KO OK
Resetting PSoC: KO Resetting PSoC: KO Resetting PSoC: OK
145495 53e2 (0000) => e2
145511 5407 (53e2) => 25
145527 542d (5407) => 26
145543 5454 (542d) => 27
145559 5474 (5454) => 20
145575 5495 (5474) => 21
145591 54b7 (5495) => 22
145607 54da (54b7) => 23
145623 5506 (54da) => 2c
145639 5506 (5506) => 00
145655 5533 (5506) => 2d
145671 554c (5533) => 19
145687 554e (554c) => 02
145703 554e (554e) => 00
PIN: 1 2 3 4 5 6 7 8 9

เชนเซเชฐเซ‡! เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡!

เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เชฎเซ‡เช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ€เชงเซ‡เชฒ เชตเชฟเชฒเช‚เชฌเชคเชพ เชฎเซ‚เชฒเซเชฏเซ‹ เชธเช‚เชญเชตเชคเชƒ เชเช• เชšเซ‹เช•เซเช•เชธ PSoC เชฎเชพเชŸเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เช›เซ‡ - เชœเซ‡เชจเซ‹ เชฎเซ‡เช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เช›เซ‡.

8. เช†เช—เชณ เชถเซเช‚ เช›เซ‡?

เชคเซ‡เชฅเซ€, เชšเชพเชฒเซ‹ PSoC เชฌเชพเชœเซ เชชเชฐ เชธเชพเชฐเชพเช‚เชถ เช†เชชเซ€เช, เช…เชฎเชพเชฐเซ€ Aigo เชกเซเชฐเชพเช‡เชตเชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚:

  • เช…เชฎเซ‡ SRAM เชตเชพเช‚เชšเซ€ เชถเช•เซ€เช เช›เซ€เช, เชชเช›เซ€ เชญเชฒเซ‡ เชคเซ‡ เชตเชพเช‚เชšเชจ เชธเซเชฐเช•เซเชทเชฟเชค เชนเซ‹เชฏ;
  • เช…เชฎเซ‡ เช•เซ‹เชฒเซเชก เชฌเซ‚เชŸ เชŸเซเชฐเซ‡เชธ เชเชŸเซ‡เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชจเซ‡ เชชเซ€เชจ เช•เซ‹เชกเชจเซ‡ เชธเซ€เชงเซ‹ เชตเชพเช‚เชšเซ€เชจเซ‡ เชเชจเซเชŸเชฟ-เชธเซเชตเชพเช‡เชช เชธเซเชฐเช•เซเชทเชพเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช.

เชœเซ‹ เช•เซ‡, เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เชธเชฎเชธเซเชฏเชพเช“เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช…เชฎเชพเชฐเชพ เชนเซเชฎเชฒเชพเชฎเชพเช‚ เช•เซ‡เชŸเชฒเซ€เช• เช–เชพเชฎเซ€เช“ เช›เซ‡. เชคเซ‡ เชจเซ€เชšเซ‡ เชชเซเชฐเชฎเชพเชฃเซ‡ เชธเซเชงเชพเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

  • "เช•เซ‹เชฒเซเชก เชฌเซ‚เชŸ เชŸเซเชฐเซ‡เชธ" เชนเซเชฎเชฒเชพเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‡ เชฎเซ‡เชณเชตเซ‡เชฒเชพ เช†เช‰เชŸเชชเซเชŸ เชกเซ‡เชŸเชพเชจเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชกเซ€เช•เซ‹เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เชฒเช–เซ‹;
  • เชตเชงเซ เชšเซ‹เช•เซเช•เชธ เชธเชฎเชฏ เชตเชฟเชฒเช‚เชฌ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ FPGA เช—เซ‡เชœเซ‡เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ (เช…เชฅเชตเชพ Arduino เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชŸเชพเชˆเชฎเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹);
  • เชฌเซ€เชœเซ‹ เชนเซเชฎเชฒเซ‹ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹: เชœเชพเชฃเซ€ เชœเซ‹เชˆเชจเซ‡ เช–เซ‹เชŸเซ‹ PIN เช•เซ‹เชก เชฆเชพเช–เชฒ เช•เชฐเซ‹, RAM เชฐเซ€เชฌเซ‚เชŸ เช•เชฐเซ‹ เช…เชจเซ‡ เชกเชฎเซเชช เช•เชฐเซ‹, เช†เชถเชพ เชฐเชพเช–เซ€เช เช•เซ‡ เชธเชพเชšเซ‹ PIN เช•เซ‹เชก เชธเชฐเช–เชพเชฎเชฃเซ€ เชฎเชพเชŸเซ‡ RAM เชฎเชพเช‚ เชธเชพเชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชœเซ‹ เช•เซ‡, Arduino เชชเชฐ เช† เช•เชฐเชตเซเช‚ เชเชŸเชฒเซเช‚ เชธเชฐเชณ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ Arduino เชธเชฟเช—เซเชจเชฒ เชฒเซ‡เชตเชฒ 5 เชตเซ‹เชฒเซเชŸ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เชœเซ‡ เชฌเซ‹เชฐเซเชกเชจเซ€ เชคเชชเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช เชคเซ‡ 3,3 เชตเซ‹เชฒเซเชŸ เชธเชฟเช—เซเชจเชฒ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

เชเช• เชฐเชธเชชเซเชฐเชฆ เชตเชธเซเชคเซ เชœเซ‡ เช…เชœเชฎเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡ เชคเซ‡ เชตเชพเช‚เชšเชตเชพเชจเซ€ เชธเซเชฐเช•เซเชทเชพเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเซ‹เชฒเซเชŸเซ‡เชœ เชธเซเชคเชฐ เชธเชพเชฅเซ‡ เชฐเชฎเชตเชพเชจเซเช‚ เช›เซ‡. เชœเซ‹ เช† เช…เชญเชฟเช—เชฎ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เช…เชฎเซ‡ เช…เชšเซ‹เช•เซเช•เชธ เชธเชฎเชฏ เชตเชฟเชฒเช‚เชฌ เชธเชพเชฅเซ‡ เชšเซ‡เช•เชธเชฎ เชตเชพเช‚เชšเชตเชพ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡ - เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชฎเชพเช‚เชฅเซ€ เชเช•เชฆเชฎ เชธเชšเซ‹เชŸ เชกเซ‡เชŸเชพ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ€เชถเซเช‚.

เช•เชพเชฐเชฃ เช•เซ‡ SROM เช•เชฆเชพเชš เชฐเซ€เชกเชฌเซเชฒเซ‹เช• เชธเชฟเชธเซเชŸเชฎ เช•เซ‹เชฒ เชฆเซเชตเชพเชฐเชพ เช—เชพเชฐเซเชก เชฌเชฟเชŸเซเชธ เชตเชพเช‚เชšเซ‡ เช›เซ‡, เช…เชฎเซ‡ เชคเซ‡ เชœ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เชตเชฐเซเชฃเชตเซ‡เชฒ เชฆเชฟเชฎเชฟเชคเซเชฐเซ€ เชจเซ‡เชกเซ‹เชธเซเชชเชพเชธเซ‹เชตเชจเชพ เชฌเซเชฒเซ‹เช— เชชเชฐ - เช•เซเชฐเชฟเชธ เช—เซ‡เชฐเซเชฒเชฟเชจเซเชธเซเช•เซ€เชจเชพ เชนเซเชฎเชฒเชพเชจเซเช‚ เชชเซเชจเชƒ เช…เชฎเชฒเซ€เช•เชฐเชฃ, เช•เซ‹เชจเซเชซเชฐเชจเซเชธเชฎเชพเช‚ เชœเชพเชนเซ‡เชฐเชพเชค "เชฐเซ€เช•เซ‹เชจ เชฌเซเชฐเชธเซ‡เชฒเซเชธ 2017".

เชฌเซ€เชœเซ€ เชเช• เชฎเชจเซ‹เชฐเช‚เชœเช• เชตเชธเซเชคเซ เชœเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ เชคเซ‡ เชšเซ€เชชเชฎเชพเช‚เชฅเซ€ เช•เซ‡เชธเชจเซ‡ เช—เซเชฐเชพเช‡เชจเซเชก เช•เชฐเชตเชพเชจเซ€ เช›เซ‡: SRAM เชกเชฎเซเชช เชฒเซ‡เชตเชพ เชฎเชพเชŸเซ‡, เชฌเชฟเชจเชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เซƒเชค เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธ เช…เชจเซ‡ เชจเชฌเชณเชพเชˆเช“เชจเซ‡ เช“เชณเช–เซ‹.

9. เชจเชฟเชทเซเช•เชฐเซเชท

เชคเซ‡เชฅเซ€, เช† เชกเซเชฐเชพเช‡เชตเชจเซเช‚ เชฐเช•เซเชทเชฃ เช‡เชšเซเช›เชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช˜เชฃเซเช‚ เชฌเชงเซเช‚ เช›เซ‹เชกเซ€ เชฆเซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชชเชฟเชจ เช•เซ‹เชกเชจเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชจเชฟเชฏเชฎเชฟเชค ("เช•เช เชฃ" เชจเชฅเซ€) เชฎเชพเช‡เช•เซเชฐเซ‹เช•เชจเซเชŸเซเชฐเซ‹เชฒเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡... เช‰เชชเชฐเชพเช‚เชค, เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เชตเชธเซเชคเซเช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชšเชพเชฒเซ€ เชฐเชนเซ€ เช›เซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชฎเซ‡เช‚ (เชนเชœเซ€ เชธเซเชงเซ€) เชœเซ‹เชฏเซเช‚ เชจเชฅเซ€. เช† เช‰เชชเช•เชฐเชฃ เชชเชฐ เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ!

Aigo เชฎเชพเชŸเซ‡ เชคเชฎเซ‡ เชถเซเช‚ เชญเชฒเชพเชฎเชฃ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹? เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก เชเชšเชกเซ€เชกเซ€ เชกเซเชฐเชพเช‡เชตเซเชธเชจเชพ เช•เซ‡เชŸเชฒเชพเช• เชฎเซ‹เชกเชฒเซเชธเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซเชฏเชพ เชชเช›เซ€, 2015 เชฎเชพเช‚ เชฎเซ‡เช‚ เชฌเชจเชพเชตเซเชฏเซเช‚ เชฐเชœเซ‚เช†เชค SyScan เชชเชฐ, เชœเซ‡เชฎเชพเช‚ เชคเซ‡เชฃเซ‡ เช˜เชฃเซ€ เชฌเชพเชนเซเชฏ HDD เชกเซเชฐเชพเช‡เชตเซเชธเชจเซ€ เชธเซเชฐเช•เซเชทเชพ เชธเชฎเชธเซเชฏเชพเช“เชจเซ€ เชคเชชเชพเชธ เช•เชฐเซ€ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชถเซเช‚ เชธเซเชงเชพเชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡ เช…เช‚เช—เซ‡ เชญเชฒเชพเชฎเชฃเซ‹ เช•เชฐเซ€. ๐Ÿ™‚

เชฎเซ‡เช‚ เช† เชธเช‚เชถเซ‹เชงเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เชฌเซ‡ เชธเชชเซเชคเชพเชนเชพเช‚เชค เช…เชจเซ‡ เช˜เชฃเซ€ เชธเชพเช‚เชœ เชตเชฟเชคเชพเชตเซ€. เช•เซเชฒ เชฒเช—เชญเช— 40 เช•เชฒเชพเช•. เชถเชฐเซ‚เช†เชคเชฅเซ€ (เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‡เช‚ เชกเชฟเชธเซเช• เช–เซ‹เชฒเซ€) เชฅเซ€ เช…เช‚เชค เชธเซเชงเซ€ (PIN เช•เซ‹เชก เชกเชฎเซเชช) เช—เชฃเชคเชฐเซ€. เช† เชœ 40 เช•เชฒเชพเช•เชฎเชพเช‚ เชฎเซ‡เช‚ เช† เชฒเซ‡เช– เชฒเช–เชตเชพเชฎเชพเช‚ เชตเชฟเชคเชพเชตเซ‡เชฒเซ‹ เชธเชฎเชฏ เชถเชพเชฎเซ‡เชฒ เช›เซ‡. เชคเซ‡ เช–เซ‚เชฌ เชœ เชฐเซ‹เชฎเชพเช‚เชšเช• เชธเชซเชฐ เชนเชคเซ€.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹