ืจื™ื•ื•ืขืจืกื™ื ื’ ืื•ืŸ ื›ืึทืงื™ื ื’ Aigo ื–ื™ืš-ืขื ืงืจื™ืคึผื˜ื™ื ื’ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื”ื“ื“ ืคืึธืจ. ื˜ื™ื™ืœ 2: ื ืขืžืขืŸ ืึท ื“ืึทืžืคึผ ืคื•ืŸ Cypress PSoC

ื“ืึธืก ืื™ื– ื“ื™ ืจื’ืข ืื•ืŸ ืœืขืฆื˜ ื˜ื™ื™ืœ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ื•ื•ืขื’ืŸ ื›ืึทืงื™ื ื’ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื–ื™ืš-ืขื ืงืจื™ืคึผื˜ื™ื ื’ ื“ืจื™ื™ื•ื•ื–. ืœืึธื–ืŸ ืžื™ืจ ื“ืขืจืžืึธื ืขืŸ ืื™ืจ ืึทื– ืึท ืงืึธืœืขื’ืข ืœืขืฆื˜ื ืก ื’ืขื‘ืจืื›ื˜ ืžื™ืจ ืึท ืคึผืึทื˜ืจื™ืึธื˜ (ืึทื™ื’ืึธ) ืกืง8671 ืฉื•ื•ืขืจ ืคืึธืจ, ืื•ืŸ ืื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืคืึทืจืงืขืจื˜ ืขืก, ืื•ืŸ ืื™ืฆื˜ ืื™ืš ื˜ื™ื™ืœืŸ ื•ื•ืึธืก ื’ืขืงื•ืžืขืŸ ืื•ื™ืก ืคื•ืŸ ืื™ื. ืื™ื™ื“ืขืจ ืœื™ื™ืขื ืขืŸ ื•ื•ื™ื™ึทื˜ืขืจ, ื–ื™ื™ืŸ ื–ื™ื›ืขืจ ืฆื• ืœื™ื™ืขื ืขืŸ ืขืจืฉื˜ืขืจ ื˜ื™ื™ืœ ืืจื˜ื™ืงืœืขืŸ.

4. ืžื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ืฆื• ื ืขืžืขืŸ ืึท ื“ืึทืžืคึผ ืคื•ืŸ ื“ื™ ื™ื ืขืจืœืขืš ืคึผืกืึธืง ื‘ืœื™ืฅ ืคืึธืจ
5. ื™ืกืคึผ ืคึผืจืึธื˜ืึธืงืึธืœ
โ€“ 5.1. ื•ื•ืึธืก ืื™ื– ISSP
โ€“ 5.2. ื“ืขืžื™ืกื˜ื™ืคื™ื™ื™ื ื’ ื•ื•ืขืงื˜ืึธืจืก
โ€“ 5.3. ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืžื™ื˜ PSoC
โ€“ 5.4. ืœืขื’ื™ื˜ื™ืžืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ืื•ื™ืฃ-ืฉืคึผืึธืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจื–
โ€“ 5.5. ื–ื™ื›ืขืจื”ื™ื™ื˜ ื‘ื™ื˜ืŸ
6. ืขืจืฉื˜ืขืจ (ื ื™ื˜ ืึทื ื“ืขืจืฉ) ื‘ืึทืคืึทืœืŸ: ืจืึธืžืงืก
7. ืฆื•ื•ื™ื™ื˜ืข ืึทื˜ืึทืง: ืงืึทืœื˜ ืฉื˜ื™ื•ื•ืœ ื˜ืจื™ื™ืกื™ื ื’
โ€“ 7.1. ื™ืžืคึผืœืขืžืขื ื˜ืึทื˜ื™ืึธืŸ
โ€“ 7.2. ืœื™ื™ืขื ืขืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜
โ€“ 7.3. ืคืœืึทืฉ ื‘ื™ื™ื ืขืจื™ ืจื™ืงืึทื ืกื˜ืจืึทืงืฉืึทืŸ
โ€“ 7.4. ื’ืขืคึฟื™ื ืขืŸ ื“ื™ PIN ืงืึธื“ ืกื˜ืึธืจื™ื“ื–ืฉ ืึทื“ืจืขืก
โ€“ 7.5. ื ืขืžืขืŸ ืึท ื“ืึทืžืคึผ ืคื•ืŸ ื‘ืœืึธืง ื ื•ืž 126
โ€“ 7.6. PIN ืงืึธื“ ืึธืคึผื–ื•ืš
8. ื•ื•ืึธืก ืก ื•ื•ื™ื™ึทื˜ืขืจ?
9. ืžืกืงื ื

ืจื™ื•ื•ืขืจืกื™ื ื’ ืื•ืŸ ื›ืึทืงื™ื ื’ Aigo ื–ื™ืš-ืขื ืงืจื™ืคึผื˜ื™ื ื’ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื”ื“ื“ ืคืึธืจ. ื˜ื™ื™ืœ 2: ื ืขืžืขืŸ ืึท ื“ืึทืžืคึผ ืคื•ืŸ Cypress PSoC


4. ืžื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ืฆื• ื ืขืžืขืŸ ืึท ื“ืึทืžืคึผ ืคื•ืŸ ื“ื™ ื™ื ืขืจืœืขืš ืคึผืกืึธืง ื‘ืœื™ืฅ ืคืึธืจ

ืึทื–ื•ื™, ืึทืœืฅ ื™ื ื“ื™ืงื™ื™ืฅ (ื•ื•ื™ ืžื™ืจ ื”ืึธื‘ืŸ ื’ืขื’ืจื™ื ื“ืขื˜ ืื™ืŸ [ื“ืขืจ ืขืจืฉื˜ืขืจ ื˜ื™ื™ืœ]()) ืึทื– ื“ื™ PIN ืงืึธื“ ืื™ื– ืกื˜ืึธืจื“ ืื™ืŸ ื“ื™ ื‘ืœื™ืฅ ื˜ื™ืคืขื ื™ืฉืŸ ืคื•ืŸ ื“ื™ PSoC. ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ืขื ืขืŸ ื“ื™ ื‘ืœื™ืฅ ื˜ื™ืคืขื ื™ืฉืŸ. ืคืจืึธื ื˜ ืคื•ืŸ ื ื™ื™ื˜ื™ืง ืึทืจื‘ืขื˜:

  • ื ืขืžืขืŸ ืงืึธื ื˜ืจืึธืœ ืคื•ืŸ "ืงืึธืžื•ื ื™ืงืึทืฆื™ืข" ืžื™ื˜ ื“ื™ ืžื™ืงืจืึธืงืึธื ื˜ืจืึธืœืœืขืจ;
  • ื’ืขืคึฟื™ื ืขืŸ ืึท ื•ื•ืขื’ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืฆื™ ื“ื™ "ืงืึธืžื•ื ื™ืงืึทืฆื™ืข" ืื™ื– ืคึผืจืึธื˜ืขืงื˜ืขื“ ืคื•ืŸ ืœื™ื™ืขื ืขืŸ ืคื•ืŸ ื“ื™ ืึทืจื•ื™ืก;
  • ื’ืขืคึฟื™ื ืขืŸ ืึท ื•ื•ืขื’ ืฆื• ื‘ื™ื™ืคึผืึทืก ื“ื™ ืฉื•ืฅ.

ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ืขืจื˜ืขืจ ื•ื•ื• ืขืก ืžืื›ื˜ ื–ื™ื ืขืŸ ืฆื• ืงื•ืงืŸ ืคึฟืึทืจ ืึท ื’ื™ืœื˜ื™ืง PIN ืงืึธื“:

  • ื™ื ืขืจืœืขืš ื‘ืœื™ืฅ ื–ื›ึผืจื•ืŸ;
  • SRAM, ื•ื•ื• ื“ื™ ืฉื˜ื™ืคื˜ ืงืึธื“ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืกื˜ืึธืจื“ ืฆื• ืคืึทืจื’ืœื™ื™ึทื›ืŸ ืขืก ืžื™ื˜ ื“ื™ ืฉื˜ื™ืคื˜ ืงืึธื“ ืืจื™ื™ืŸ ื“ื•ืจืš ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ.

ืื™ืš ืงื•ืง ืคืึธืจื•ื™ืก, ืื™ืš ื•ื•ืขื˜ ื‘ืึทืžืขืจืงืŸ ืึทื– ืื™ืš ื ืึธืš ื’ืขืจืื˜ืŸ ืฆื• ื ืขืžืขืŸ ืึท ื“ืึทืžืคึผ ืคื•ืŸ ื“ื™ ื™ื ืขืจืœืขืš PSoC ื‘ืœื™ืฅ ืคืึธืจ - ื‘ื™ื™ืคึผืึทืกื™ื ื’ ื–ื™ื™ืŸ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืกื™ืกื˜ืขื ื ื™ืฆืŸ ืึท ื™ื™ึทื–ื ื•ื•ืึทืจื’ ื‘ืึทืคืึทืœืŸ ื’ืขืจื•ืคึฟืŸ "ืงืึทืœื˜ ืฉื˜ื™ื•ื•ืœ ื˜ืจื™ื™ืกื™ื ื’" - ื ืึธืš ืจื™ื•ื•ืขืจืกื™ื ื’ ื“ื™ ืึทื ื“ืึทืงื™ืึทืžืขื ื™ื“ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ืคื•ืŸ ื“ื™ ื™ืกืคึผ ืคึผืจืึธื˜ืึธืงืึธืœ. ื“ืึธืก ื“ืขืจืœื•ื™ื‘ื˜ ืžื™ืจ ืฆื• ื’ืœื™ื™ืš ื“ืึทืžืคึผ ื“ื™ ืคืึทืงื˜ื™ืฉ PIN ืงืึธื“.

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

ืœืขืฆื˜ ืคึผืจืึธื’ืจืึทื ืงืึธื“:

5. ื™ืกืคึผ ืคึผืจืึธื˜ืึธืงืึธืœ

5.1. ื•ื•ืึธืก ืื™ื– ISSP

"ืงืึธืžื•ื ื™ืงืึทืฆื™ืข" ืžื™ื˜ ืึท ืžื™ืงืจืึธืงืึธื ื˜ืจืึธืœืœืขืจ ืงืขื ืขืŸ ืžื™ื™ื ืขืŸ ืคืึทืจืฉื™ื“ืขื ืข ื˜ื™ื ื’ื–: ืคื•ืŸ "ืคืึทืจืงื•ื™ืคืขืจ ืฆื• ืคืึทืจืงื•ื™ืคืขืจ" ืฆื• ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ื ื™ืฆืŸ ืึท ืกื™ืจื™ืึทืœ ืคึผืจืึธื˜ืึธืงืึธืœ (ืœืžืฉืœ, ICSP ืคึฟืึทืจ ืžื™ืงืจืึธื˜ืฉื™ืคึผ ืก PIC).

ืกื™ืคึผืจืขืกืก ื”ืื˜ ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืคึผืจืึทืคึผืจื™ื™ืึทื˜ืขืจื™ ืคึผืจืึธื˜ืึธืงืึธืœ ืคึฟืึทืจ ื“ืขื, ื’ืขืจื•ืคืŸ ISSP (ืื™ืŸ-ืกื™ืกื˜ืขื ืกื™ืจื™ืึทืœ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืคึผืจืึธื˜ืึธืงืึธืœ), ื•ื•ืึธืก ืื™ื– ื˜ื™ื™ืœ ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ ื˜ืขื›ื ื™ืฉ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’. ืคึผืึทื˜ืขื ื˜ 7185162 ืื•ื™ืš ื’ื™ื˜ ืขื˜ืœืขื›ืข ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข. ืขืก ืื™ื– ืื•ื™ืš ืึทืŸ OpenSource ืขืงื•ื•ื™ื•ื•ืึทืœืขื ื˜ ื’ืขืจื•ืคึฟืŸ HSSP (ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ืขืก ืึท ื‘ื™ืกืœ ืฉืคึผืขื˜ืขืจ). ISSP ืึทืจื‘ืขื˜ ื•ื•ื™ ื’ื™ื™ื˜:

  • ืจืขื‘ืึธืึธื˜ PSoC;
  • ืจืขื–ื•ืœื˜ืึทื˜ ื“ื™ ืžืึทื’ื™ืฉ ื ื•ืžืขืจ ืฆื• ื“ื™ ืกื™ืจื™ืึทืœ ื“ืึทื˜ืŸ ืฉื˜ื™ืคื˜ ืคื•ืŸ ื“ืขื PSoC; ืฆื• ืึทืจื™ื™ึทืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืžืึธื“ืข;
  • ืฉื™ืงืŸ ืงืึทืžืึทื ื“ื–, ื•ื•ืึธืก ื–ืขื ืขืŸ ืœืึทื ื’ ื‘ื™ืกืœ ืกื˜ืจื™ื ื’ืก ื’ืขืจื•ืคืŸ "ื•ื•ืขืงื˜ืึธืจืก".

ื“ื™ ISSP ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ื“ื™ืคื™ื™ื ื– ื“ื™ ื•ื•ืขืงื˜ืึธืจืก ืคึฟืึทืจ ื‘ืœื•ื™ื– ืึท ืงืœื™ื™ืŸ ื”ืึทื ื“ืคื•ืœ ืคื•ืŸ ืงืึทืžืึทื ื“ื–:

  • ื™ื™ื˜ื™ืึทืœื™ื–ืข-1
  • ื™ื™ื˜ื™ืึทืœื™ื–ืข-2
  • ื™ื ื™ื˜ื™ืึทืœื™ื–ืข-3 โ€‹โ€‹(3V ืื•ืŸ 5V ืึธืคึผืฆื™ืขืก)
  • ID-SETUP
  • ืœื™ื™ืขื ืขืŸ-ืฉื™ื™ึทืŸ-ื•ื•ืึธืจื˜
  • SET-BLOCK-NUM: 10011111010dddddddd111, ื•ื•ื• dddddddd = ื‘ืœืึธืง #
  • ืคืึทืจื ืขื ืžืขืงืŸ
  • ืคึผืจืึธื’ืจืึทื-ื‘ืœืึธืง
  • ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ-ืกืขื˜ืึทืคึผ
  • READ-BYTE: 10110aaaaaaZDDDDDDDDZ1, ื•ื•ื• DDDDDDDD = ื“ืึทื˜ืŸ ืื•ื™ืก, aaaaaa = ืึทื“ืจืขืก (6 ื‘ื™ืฅ)
  • WRITE-BYTE: 10010aaaaaaddddddd111, ื•ื•ื• dddddddd = ื“ืึทื˜ืŸ ืื™ืŸ, aaaaaa = ืึทื“ืจืขืก (6 ื‘ื™ืฅ)
  • ื–ื™ื›ืขืจ
  • CHECKSUM-SETUP
  • ืœื™ื™ืขื ืขืŸ ื˜ืฉืขืงืกื•ื: 10111111001ZDDDDDDDDZ110111111000ZDDDDDDDDZ1, ื•ื•ื• DDDDDDDDDDDDDDDDDD = ื“ืึทื˜ืŸ ืื•ื™ืก: ืžื™ื˜ืœ ื˜ืฉืขืงืกื•ื
  • ืžืขืงืŸ ื‘ืœืึธืง

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ืขืจ ื•ื•ืขืงื˜ืึธืจ ืคึฟืึทืจ Initialize-2:

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

ืึทืœืข ื•ื•ืขืงื˜ืึธืจืก ื”ืึธื‘ืŸ ื“ื™ ื–ืขืœื‘ืข ืœืขื ื’: 22 ื‘ื™ืฅ. ื“ื™ HSSP ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ื”ืื˜ ืขื˜ืœืขื›ืข ื ืึธืš ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื•ื™ืฃ ื™ืกืคึผ: "ืึท ื™ืกืคึผ ื•ื•ืขืงื˜ืึธืจ ืื™ื– ื’ืึธืจื ื™ืฉื˜ ืžืขืจ ื•ื•ื™ ืึท ื‘ื™ืกืœ ืกื™ืงื•ื•ืึทื ืก ื•ื•ืึธืก ืจืขืคึผืจืึทื–ืขื ืฅ ืึท ื’ืึทื ื’ ืคื•ืŸ ืื™ื ืกื˜ืจื•ืงืฆื™ืขืก."

5.2. ื“ืขืžื™ืกื˜ื™ืคื™ื™ื™ื ื’ ื•ื•ืขืงื˜ืึธืจืก

ืœืืžื™ืจ ืื•ื™ืกืจืขื›ืขื ืขืŸ ื•ื•ืืก ื“ื ื˜ื•ื˜ ื–ื™ืš. ื˜ื›ื™ืœืขืก, ืื™ืš ืื ื’ืขื ื•ืžืขืŸ ืึทื– ื“ื™ ื–ืขืœื‘ืข ื•ื•ืขืงื˜ืึธืจืก ื–ืขื ืขืŸ ืจื•ื™ ื•ื•ืขืจืกื™ืขืก ืคื•ืŸ M8C ืื™ื ืกื˜ืจื•ืงืฆื™ืขืก, ืึธื‘ืขืจ ื ืึธืš ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ืขื ื›ื™ื™ืคึผืึทื˜ืึทืกืึทืก, ืื™ืš ื“ื™ืกืงืึทื•ื•ืขืจื“ ืึทื– ื“ื™ ืึธืคึผืงืึธื“ืก ืคื•ืŸ ื“ื™ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ื˜ืึธืŸ ื ื™ื˜ ืฉื˜ื™ืžืขืŸ.

ื“ืขืจื ืึธืš ื”ืึธื‘ ืื™ืš ื’ืขื–ื•ื›ื˜ ื“ืขื ื•ื•ืขืงื˜ืึธืจ ืื•ื™ื‘ืŸ ืื•ืŸ ื’ืขืคึฟื•ื ืขืŸ ื“ืึธ ืขืก ืื™ื– ืึท ืœืขืจื ืขืŸ ื•ื•ื•ึผ ื“ืขืจ ืžื—ื‘ืจ, ื›ืึธื˜ืฉ ืขืจ ื’ื™ื™ื˜ ื ื™ืฉื˜ ืื™ืŸ ื“ืขื˜ืึทืœ, ื’ื™ื˜ ืขื˜ืœืขื›ืข ื ื•ืฆื™ืง ืขืฆื•ืช: "ื™ืขื“ืขืจ ืœื™ืžืขื“ ื”ื™ื™ื‘ื˜ ืžื™ื˜ ื“ืจื™ื™ ื‘ื™ื˜ืŸ ื•ื•ืึธืก ืฉื˜ื™ืžืขืŸ ืฆื• ืื™ื™ื ืขืจ ืคื•ืŸ ืคื™ืจ ืžื ืขืžืึธื ื™ืงืก (ืœื™ื™ืขื ืขืŸ ืคึฟื•ืŸ ื‘ืึทืจืึทืŸ, ืฉืจื™ื™ึทื‘ืŸ ืฆื• ื‘ืึทืจืึทืŸ, ืœื™ื™ืขื ืขืŸ ืจืขื’ื™ืกื˜ืจื™ืจืŸ, ืฉืจื™ื™ึทื‘ืŸ ืจืขื’ื™ืกื˜ืจื™ืจืŸ). ื“ืขืจื ืึธืš ืขืก ื–ืขื ืขืŸ 8 ืึทื“ืจืขืก ื‘ื™ื˜ืŸ, ื ืื›ื’ืขื’ืื ื’ืขืŸ ื“ื•ืจืš 8 ื“ืึทื˜ืŸ ื‘ื™ื˜ืŸ (ืœื™ื™ืขื ืขืŸ ืึธื“ืขืจ ืฉืจื™ื™ึทื‘ืŸ) ืื•ืŸ ืœืขืกืึธืฃ ื“ืจื™ื™ ื”ืึทืœื˜ืŸ ื‘ื™ื˜ืŸ.

ื“ืขืจื ืึธืš ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ื™ื›ื•ืœืช ืฆื• ื‘ืึทืงื•ืžืขืŸ ืขื˜ืœืขื›ืข ื–ื™ื™ืขืจ ื ื•ืฆื™ืง ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืกื•ืคึผืขืจื•ื•ื™ืกืึธืจื™ ืจืึทื (SROM) ืึธืคึผื˜ื™ื™ืœื•ื ื’. ื˜ืขื›ื ื™ืฉ ืžืึทื ื•ืึทืœ. SROM ืื™ื– ืึท ืฉื•ื•ืขืจ-ืงืึธื“ืขื“ ืจืึทื ืื™ืŸ ื“ื™ PSoC ื•ื•ืึธืก ื’ื™ื˜ ื ื•ืฆืŸ ืคืึทื ื’ืงืฉืึทื ื– (ืื™ืŸ ืึท ืขื ืœืขืš ื•ื•ืขื’ ืฆื• Syscall) ืคึฟืึทืจ ืคึผืจืึธื’ืจืึทื ืงืึธื“ ืคืœื™ืกื ื“ื™ืง ืื™ืŸ ื‘ืึทื ื™ืฆืขืจ ืคึผืœืึทืฅ:

  • 00h:SWBootReset
  • 01 ื”: ืจืขืึทื“ื‘ืœืึทืง
  • 02h: WriteBlock
  • 03h: EraseBlock
  • 06 ื”: ื˜ื™ืฉ ืœื™ื™ืขื ืขืŸ
  • 07h: ื˜ืฉืขืงืกื•ื
  • 08 ื”: ืงืึทืœื™ื‘ืจืึทื˜ืข 0
  • 09 ื”: ืงืึทืœื™ื‘ืจืึทื˜ืข 1

ื“ื•ืจืš ืงืึทืžืคึผืขืจื™ื ื’ ื•ื•ืขืงื˜ืึธืจ ื ืขืžืขืŸ ืฆื• SROM ืคืึทื ื’ืงืฉืึทื ื–, ืžื™ืจ ืงืขื ืขืŸ ืžืึทืคึผืข ื“ื™ ืคืึทืจืฉื™ื“ืŸ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ื’ืขืฉื˜ื™ืฆื˜ ื“ื•ืจืš ื“ืขื ืคึผืจืึธื˜ืึธืงืึธืœ ืฆื• ื“ื™ ื“ืขืจื•ื•ืึทืจื˜ SROM ืคึผืึทืจืึทืžืขื˜ืขืจืก. ื“ืึทื ืง ืฆื• ื“ืขื, ืžื™ืจ ืงืขื ืขืŸ ื“ืขืงืึธื“ืข ื“ื™ ืขืจืฉื˜ืขืจ ื“ืจื™ื™ ื‘ื™ื˜ืŸ ืคื•ืŸ ISSP ื•ื•ืขืงื˜ืึธืจืก:

  • 100 => "ืจืขื"
  • 101 => "ืจื“ืžืขื"
  • 110 => "ืจืจืขื’"
  • 111 => "ืจื“ืจืขื’"

ืึธื‘ืขืจ, ืึท ื’ืึทื ืฅ ืคืืจืฉื˜ืื ื“ ืคื•ืŸ ืื•ื™ืฃ-ืฉืคึผืึธืŸ ืคึผืจืึทืกืขืกืึทื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ื‘ืืงื•ืžืขืŸ ื‘ืœื•ื™ื– ื“ื•ืจืš ื“ื™ืจืขืงื˜ ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืžื™ื˜ ื“ื™ PSoC.

5.3. ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืžื™ื˜ PSoC

ื–ื™ื ื˜ ื“ื™ืจืง ืคึผืขื˜ืจืึทื•ืฆืงื™ ื”ืึธื˜ ืฉื•ื™ืŸ ืคึผืึธืจื˜ื™ื“ Cypress's HSSP ืงืึธื“ ืื•ื™ืฃ Arduino, ืื™ืš ื’ืขื•ื•ื™ื™ื ื˜ Arduino Uno ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ื“ื™ ISSP ืงืึทื ืขืงื˜ืขืจ ืคื•ืŸ ื“ื™ ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ ื‘ืจืขื˜.

ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ืื™ืŸ ื“ื™ ืœื•ื™ืฃ ืคื•ืŸ ืžื™ื™ืŸ ืคืึธืจืฉื•ื ื’, ืื™ืš ื˜ืฉื™ื™ื ื“ื–ืฉื“ ื“ื™ืจืง ืก ืงืึธื“ ื’ืึทื ืฅ ืึท ื‘ื™ืกืœ. ืื™ืจ ืงืขื ืขืŸ ื’ืขืคึฟื™ื ืขืŸ ืžื™ื™ืŸ ืžืึธื“ื™ืคื™ืงืึทื˜ื™ืึธืŸ ืื•ื™ืฃ GitHub: ื“ืึธ ืื•ืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืคึผื™ื˜ื”ืึธืŸ ืฉืจื™ืคื˜ ืคึฟืึทืจ ืงืึทืžื™ื•ื ืึทืงื™ื™ื˜ื™ื ื’ ืžื™ื˜ Arduino, ืื™ืŸ ืžื™ื™ืŸ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ cypress_psoc_tools.

ืึทื–ื•ื™, ืžื™ื˜ Arduino, ืื™ืš ืขืจืฉื˜ืขืจ ื’ืขื•ื•ื™ื™ื ื˜ ื‘ืœื•ื™ื– ื“ื™ "ื‘ืึทืึทืžื˜ืขืจ" ื•ื•ืขืงื˜ืึธืจืก ืคึฟืึทืจ "ืงืึธืžื•ื ื™ืงืึทืฆื™ืข". ืื™ืš ื’ืขืคืจื•ื•ื•ื˜ ืฆื• ืœื™ื™ืขื ืขืŸ ื“ื™ ื™ื ืขืจืœืขืš ืจืึทื ื ื™ืฆืŸ ื“ื™ VERIFY ื‘ืึทืคึฟืขืœ. ื•ื•ื™ ื“ืขืจื•ื•ืึทืจื˜, ืื™ืš ืงืขืŸ ื ื™ืฉื˜ ื˜ืึธืŸ ื“ืึธืก. ืžื™ืกื˜ืึธืžืข ืจืขื›ื˜ ืฆื• ื“ืขื ืคืึทืงื˜ ืึทื– ืœื™ื™ืขื ืขืŸ ืฉื•ืฅ ื‘ื™ื˜ืŸ ื–ืขื ืขืŸ ืึทืงื˜ื™ื•ื•ื™ื™ื˜ื™ื“ ืื™ืŸ ื“ื™ ื‘ืœื™ืฅ ืคืึธืจ.

ื“ืขืจื ืึธืš ืื™ืš ื‘ืืฉืืคืŸ ืึท ื‘ื™ืกืœ ืคื•ืŸ ืžื™ื™ืŸ ืื™ื™ื’ืขื ืข ืคึผืฉื•ื˜ ื•ื•ืขืงื˜ืึธืจืก ืคึฟืึทืจ ืฉืจื™ื™ื‘ืŸ ืื•ืŸ ืœื™ื™ืขื ืขืŸ ื–ื›ึผืจื•ืŸ / ืจืขื“ื–ืฉื™ืกื˜ืขืจื–. ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ืžื™ืจ ืงืขื ืขืŸ ืœื™ื™ืขื ืขืŸ ื“ื™ ื’ืื ืฆืข SROM ืืคื™ืœื• ื›ืึธื˜ืฉ ื“ื™ ื‘ืœื™ืฅ ืคืึธืจ ืื™ื– ืคึผืจืึธื˜ืขืงื˜ืขื“!

5.4. ืœืขื’ื™ื˜ื™ืžืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ืื•ื™ืฃ-ืฉืคึผืึธืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจื–

ื ืึธืš ืงื•ืงืŸ ืื™ืŸ ื“ื™ "ื“ื™ืกืขืึทืกืขืžื‘ืึทืœื“" ื•ื•ืขืงื˜ืึธืจืก, ืื™ืš ื“ื™ืกืงืึทื•ื•ืขืจื“ ืึทื– ื“ื™ ืžื™ื˜ืœ ื ื™ืฆื˜ ืึทื ื“ืึทืงื™ืึทืžืขื ื™ื“ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– (0xF8-0xFA) ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ M8C ืึธืคึผืงืึธื“ืก, ื•ื•ืึธืก ื–ืขื ืขืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ื’ืœื™ื™ึทืš, ื‘ื™ื™ืคึผืึทืกื™ื ื’ ื“ื™ ืฉื•ืฅ. ื“ืึธืก ื”ืึธื˜ ืžื™ืจ ื“ืขืจืœื•ื™ื‘ื˜ ืฆื• ืœื•ื™ืคืŸ ืคืึทืจืฉื™ื“ืŸ ืึธืคึผืงืึธื“ืก ืึทื–ืึท ื•ื•ื™ "ADD", "MOV A, X", "PUSH" ืึธื“ืขืจ "JMP". ื“ืึทื ืง ืฆื• ื–ื™ื™ (ื“ื•ืจืš ืงื•ืงืŸ ื‘ื™ื™ึท ื“ื™ ื–ื™ื™ึทื˜ ื™ืคืขืงืก ื–ื™ื™ ื”ืึธื‘ืŸ ืื•ื™ืฃ ืจืขื“ื–ืฉื™ืกื˜ืขืจื–) ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ื™ื›ื•ืœืช ืฆื• ื‘ืึทืฉืœื™ืกืŸ ื•ื•ืึธืก ืคื•ืŸ ื“ื™ ืึทื ื“ืึทืงื™ืึทืžืขื ื™ื“ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื–ืขื ืขืŸ ืคืืงื˜ื™ืฉ ืจืขื’ื•ืœืขืจ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– (ื, ืจืขื ื˜ื’ืขื , ืกืคึผ ืื•ืŸ ืคึผื™ืกื™).

ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ื“ื™ "ื“ื™ืกืึทืกืขืžื‘ืึทืœื“" ืงืึธื“ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ื“ื•ืจืš ื“ื™ 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

ื ื™ืฆืŸ ื“ืขื ื•ื•ืขืงื˜ืึธืจ (ื–ืขืŸ read_security_data ืื™ืŸ psoc.py), ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ืึทืœืข ื“ื™ ื–ื™ื›ืขืจื”ื™ื™ื˜ ื‘ื™ื˜ืŸ ืื™ืŸ SRAM ื‘ื™ื™ 0x80, ื•ื•ื• ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ื‘ื™ื˜ืŸ ืคึผืขืจ ืคึผืจืึธื˜ืขืงื˜ืขื“ ื‘ืœืึธืง.

ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื– ื“ื™ืคึผืจืขืกื™ื ื’: ืึทืœืฅ ืื™ื– ืคึผืจืึธื˜ืขืงื˜ืขื“ ืื™ืŸ ื“ื™ ืžืึธื“ืข "ื“ื™ืกื™ื™ื‘ืึทืœ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืœื™ื™ืขื ืขืŸ ืื•ืŸ ืฉืจื™ื™ื‘ืŸ". ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ืงืขื ืขืŸ ื ื™ืฉื˜ ื‘ืœื•ื™ื– ืœื™ื™ืขื ืขืŸ ืขืคึผืขืก ืคึฟื•ืŸ ืึท ื‘ืœื™ืฅ ืคืึธืจ, ืึธื‘ืขืจ ืžื™ืจ ืงืขื ืขืŸ ืื•ื™ืš ื ื™ืฉื˜ ืฉืจื™ื™ึทื‘ืŸ ืขืคึผืขืก (ืœืžืฉืœ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืึท ืจืึทื ื“ืึทืžืคึผืขืจ ื“ืึธืจื˜). ืื•ืŸ ื“ืขืจ ื‘ืœื•ื™ื– ื•ื•ืขื’ ืฆื• ื“ื™ืกื™ื™ื‘ืึทืœ ื“ื™ ืฉื•ืฅ ืื™ื– ืฆื• ื’ืึธืจ ืžืขืงืŸ ื“ื™ ื’ืื ืฆืข ืฉืคึผืึธืŸ. ๐Ÿ™

6. ืขืจืฉื˜ืขืจ (ื ื™ื˜ ืึทื ื“ืขืจืฉ) ื‘ืึทืคืึทืœืŸ: ืจืึธืžืงืก

ืึธื‘ืขืจ, ืžื™ืจ ืงืขื ืขืŸ ืคึผืจื•ื‘ื™ืจืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื˜ืจื™ืง: ื–ื™ื ื˜ ืžื™ืจ ื”ืึธื‘ืŸ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื•ื™ืกืคื™ืจืŸ ืึทืจื‘ื™ื˜ืจืึทืจื™ืฉ ืึธืคึผืงืึธื“ืก, ืคืืจื•ื•ืืก ื˜ืึธืŸ ื ื™ื˜ ื•ื™ืกืคื™ืจืŸ ROMX, ื•ื•ืึธืก ืื™ื– ื’ืขื ื™ืฆื˜ ืฆื• ืœื™ื™ืขื ืขืŸ ื‘ืœื™ืฅ ื–ื›ึผืจื•ืŸ? ื“ืขื ืฆื•ื’ืึทื ื’ ื”ืื˜ ืึท ื’ื•ื˜ ื’ืขืœืขื’ื ื”ื™ื™ึทื˜ ืคื•ืŸ ื”ืฆืœื—ื”. ื•ื•ื™ื™ึทืœ ื“ื™ ReadBlock ืคื•ื ืงืฆื™ืข ื•ื•ืึธืก ืœื™ื™ืขื ื˜ ื“ืึทื˜ืŸ ืคื•ืŸ ื“ื™ SROM (ื•ื•ืึธืก ืื™ื– ื’ืขื ื™ืฆื˜ ื“ื•ืจืš ื•ื•ืขืงื˜ืึธืจืก) ื˜ืฉืขืงืก ืฆื™ ืขืก ืื™ื– ื’ืขืจื•ืคืŸ ืคึฟื•ืŸ ื“ื™ ISSP. ืึธื‘ืขืจ, ื“ื™ ROMX ืึธืคึผืงืึธื“ืข ืงืขืŸ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืึทื–ืึท ืึท ื˜ืฉืขืง. ื“ืึธ ืื™ื– ื“ื™ ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“ (ื ืึธืš ืึทื“ื™ื ื’ ืึท ื‘ื™ืกืœ ื”ืขืœืคึผืขืจ ืงืœืืกืŸ ืฆื• ื“ื™ 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)! ืื™ืš ื˜ืึธืŸ ื ื™ื˜ ื˜ืจืึทื›ื˜ืŸ ืึทื– ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคื•ืŸ ื“ื™ ืžื™ื˜ืœ ืื™ื– ืึทืŸ ืขืœืขืžืขื ื˜ ืคื•ืŸ ืœื™ื™ืขื ืขืŸ ืฉื•ืฅ. ื“ืึธืก ืื™ื– ืžืขืจ ื•ื•ื™ ืึทืŸ ื™ื ื–ืฉืขื ื™ืขืจื™ืข ืงื•ื ืฅ: ื•ื•ืขืŸ ืขืงืกืึทืงื™ื•ื˜ื™ื ื’ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืึธืคึผืงืึธื“ืก, ื“ื™ ืจืึทื ื•ื™ื˜ืึธื‘ื•ืก ืื™ื– ืจื™ื“ืขืจืขืงื˜ื™ื“ ืฆื• ืึท ืฆื™ื™ึทื˜ื•ื•ื™ื™ึทืœื™ืง ื‘ืึทืคืขืจ.

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 ืงื•ื•ืขืจืงืก. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ืื™ืš ื’ืขื•ื•ืื•ืกื˜ ืึทื– ื“ื™ M8C ื”ืึทืจืฅ ื”ืื˜ ืึท ื–ื™ื™ืขืจ ืงืœื™ื™ืŸ ื’ืึทื ื’ ืคื•ืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจื–, ืื™ืš ืื ื’ืขื ื•ืžืขืŸ ืึทื– ื•ื•ืขืŸ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื ื’ ื“ื™ ื˜ืฉืขืงืงืกื•ื, ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ื•ื•ืึทืœื•ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืจืขืงืึธืจื“ืขื“ ืื™ืŸ ื“ื™ ื–ืขืœื‘ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื•ื•ืึธืก ืœืขืกืึธืฃ ื’ื™ื™ืŸ ืฆื• ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜: KEY1 (0xF8) / KEY2 ( 0xF9).

ืึทื–ื•ื™ ืื™ืŸ ื˜ืขืึธืจื™ืข ืžื™ื™ืŸ ื‘ืึทืคืึทืœืŸ ืงื•ืงื˜ ื•ื•ื™ ื“ืึธืก:

  1. ืžื™ืจ ืคืึทืจื‘ื™ื ื“ืŸ ื“ื•ืจืš ISSP.
  2. ืžื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ื“ื™ ื˜ืฉืขืงืกื•ื ื›ืขื–ืฉื‘ืŸ ื ื™ืฆืŸ ื“ื™ CHECKSUM-SETUP ื•ื•ืขืงื˜ืึธืจ.
  3. ืžื™ืจ ืจืขื‘ืึธืึธื˜ ื“ื™ ืคึผืจืึทืกืขืกืขืจ ื ืึธืš ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืฆื™ื™ื˜ T.
  4. ืžื™ืจ ืœื™ื™ืขื ืขืŸ ื‘ืึทืจืึทืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืงืจืึทื ื˜ ื˜ืฉืขืงืงืกื•ื C.
  5. ืื™ื‘ืขืจื—ื–ืจืŸ ืกื˜ืขืคึผืก 3 ืื•ืŸ 4, ื™ื ืงืจื™ืกื™ื ื’ T ืึท ื‘ื™ืกืœ ื™ืขื“ืขืจ ืžืึธืœ.
  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. ืœื™ื™ืขื ืขืŸ checkum_delay.
  2. ืœื•ื™ืคืŸ ื˜ืฉืขืงืงืกื•ื ื›ืขื–ืฉื‘ืŸ (ืกืขื ื“_ื˜ืฉืขืงืกื•ื_ื•ื•).
  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 ื ื™ืฆืŸ Picocom ื•ื•ืขืŸ ื“ื™ 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 ืžื™ื– ื™ื ื’ืงืจืึทืžืึทื ืฅ ื ืึธืš ืึท ืจืขื‘ืึธืึธื˜. ื“ืขืจื ืึธืš ืื™ืš ืืจื™ื™ืŸ ื“ื™ ืื•ืžืจืขื›ื˜ PIN ืื•ืŸ ื”ืื˜ ื“ื™ ื–ืขืœื‘ืข.

ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื– ื ื™ืฉื˜ ื–ื™ื™ืขืจ ืึธื ื’ืขื ืขื, ื•ื•ื™ื™ึทืœ ืขืก ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ ืคื™ืœืข ืขื ื“ืขืจื•ื ื’ืขืŸ. ืึธื‘ืขืจ ืื™ืŸ ื“ื™ ืกื•ืฃ, ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ื™ื›ื•ืœืช ืฆื• ื‘ืึทืฉืœื™ืกืŸ ืึทื– ื“ื™ ื˜ืฉืขืงืกื•ื ื’ืขื‘ื™ื˜ืŸ ืขืจื’ืขืฅ ืฆื•ื•ื™ืฉืŸ 120000 ยตs ืื•ืŸ 140000 ยตs ืคื•ืŸ ืคืึทืจื”ืึทืœื˜ืŸ. ืึธื‘ืขืจ ื“ื™ "ืคึผื™ื ืงืงืึธื“ืข" ื•ื•ืึธืก ืื™ืš ื’ืขื•ื•ื™ื–ืŸ ื“ืึธืจื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืึธืจ ืคืึทืœืฉ - ืจืขื›ื˜ ืฆื• ืึท ืึทืจื˜ืึทืคืึทืงื˜ ืคื•ืŸ ื“ื™ ืคืึทืจื”ืึทืœื˜ืŸ ืžื™ืงืจืึธืกืขืงืึธื ื“ืก ืคึผืจืึธืฆืขื“ื•ืจ, ื•ื•ืึธืก ื˜ื•ื˜ ืžืึธื“ื ืข ื˜ื™ื ื’ื– ื•ื•ืขืŸ 0 ืื™ื– ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืฆื• ืขืก.

ื“ืขืจื ืึธืš, ื ืึธืš ืกืคึผืขื ื“ื™ื ื’ ื›ึผืžืขื˜ 3 ืฉืขื”, ืื™ืš ื’ืขื“ืขื ืงื˜ ืึทื– ื“ื™ SROM ืกื™ืกื˜ืขื ืจื•ืคืŸ ื˜ืฉืขืงืงืกื•ื ื ืขืžื˜ ืึทืŸ ืึทืจื’ื•ืžืขื ื˜ ื•ื•ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ื•ื•ืึธืก ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื‘ืœืึทืงืก ืคึฟืึทืจ ื“ื™ ื˜ืฉืขืงืงืกื•ื! ืึทื–. ืžื™ืจ ืงืขื ืขืŸ ืœื™ื™ื›ื˜ ืœืึธืงืึทืœื™ื–ื™ืจืŸ ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ PIN ืงืึธื“ ืื•ืŸ ื“ื™ "ืคืึทืœืฉ ืคืจื•ื•ื•ืŸ" ื˜ืึธืžื‘ืึทื ืง ืžื™ื˜ ืึท ืึทืงื™ืขืจืึทืกื™ ืคื•ืŸ ืึทืจื•ื™ืฃ ืฆื• ืึท 64-ื‘ื™ื˜ืข ื‘ืœืึธืง.

ืžื™ื™ึทืŸ ืขืจืฉื˜ ืจืึทื ื– ื”ืึธื‘ืŸ ื’ืขืคึฟื™ืจื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ืจืขื–ื•ืœื˜ืึทื˜:

ืจื™ื•ื•ืขืจืกื™ื ื’ ืื•ืŸ ื›ืึทืงื™ื ื’ Aigo ื–ื™ืš-ืขื ืงืจื™ืคึผื˜ื™ื ื’ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื”ื“ื“ ืคืึธืจ. ื˜ื™ื™ืœ 2: ื ืขืžืขืŸ ืึท ื“ืึทืžืคึผ ืคื•ืŸ Cypress PSoC

ื“ืขืจื ืึธืš ืื™ืš ื˜ืฉื™ื™ื ื“ื–ืฉื“ ื“ื™ PIN ืงืึธื“ ืคื•ืŸ "123456" ืฆื• "1234567" ืื•ืŸ ื’ืึทื˜:

ืจื™ื•ื•ืขืจืกื™ื ื’ ืื•ืŸ ื›ืึทืงื™ื ื’ Aigo ื–ื™ืš-ืขื ืงืจื™ืคึผื˜ื™ื ื’ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื”ื“ื“ ืคืึธืจ. ื˜ื™ื™ืœ 2: ื ืขืžืขืŸ ืึท ื“ืึทืžืคึผ ืคื•ืŸ Cypress PSoC

ืื–ื•ื™, ื“ื™ PIN ืงืึธื“ ืื•ืŸ ื“ื™ ื˜ืึธืžื‘ืึทื ืง ืคื•ืŸ ืคืึทืœืฉ ืคืจื•ื•ื•ืŸ ื•ื™ืกืงื•ืžืขืŸ ืฆื• ื–ื™ื™ืŸ ืกื˜ืึธืจื“ ืื™ืŸ ื‘ืœืึธืง ื ื•ืž 126.

7.5. ื ืขืžืขืŸ ืึท ื“ืึทืžืคึผ ืคื•ืŸ ื‘ืœืึธืง ื ื•ืž 126

ื‘ืœืึธืง #126 ื–ืึธืœ ื–ื™ื™ืŸ ืœื™ื’ืŸ ืขืจื’ืขืฅ ืึทืจื•ื 125x64x18 = 144000ฮผs, ืคึฟื•ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื“ื™ ื˜ืฉืขืงืกื•ื ื›ืขื–ืฉื‘ืŸ, ืื™ืŸ ืžื™ื™ืŸ ืคื•ืœ ื“ืึทืžืคึผ, ืื•ืŸ ืขืก ืงื•ืงื˜ ื’ืึทื ืฅ ื’ืœื™ื™ื‘ืœืขืš. ื“ืขืจื ืึธืš, ื ืึธืš ืžืึทื ื™ื•ืึทืœื™ ืกื™ืคื˜ื™ื ื’ ืคื™ืœืข ืคืึทืจืงืจื™ืคึผืœื˜ ื“ืึทืžืคึผืก (ืจืขื›ื˜ ืฆื• ื“ืขืจ ืึทืงื™ื•ืžื™ืึทืœื™ื™ืฉืึทืŸ ืคื•ืŸ "ืžื™ื ืขืจื•ื•ืขืจื˜ื™ืง ื˜ื™ื™ืžื™ื ื’ ื“ื™ื•ื•ื™ื™ื™ืฉืึทื ื–"), ืื™ืš ืขื ื“ืœืขืš ื‘ืึทืงื•ืžืขืŸ ื“ื™ ื‘ื™ื˜ืขืก (ืื™ืŸ ืึท ืœื™ื™ื˜ืึทื ืกื™ ืคื•ืŸ 145527 ฮผs):

ืจื™ื•ื•ืขืจืกื™ื ื’ ืื•ืŸ ื›ืึทืงื™ื ื’ Aigo ื–ื™ืš-ืขื ืงืจื™ืคึผื˜ื™ื ื’ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื”ื“ื“ ืคืึธืจ. ื˜ื™ื™ืœ 2: ื ืขืžืขืŸ ืึท ื“ืึทืžืคึผ ืคื•ืŸ Cypress PSoC

ืขืก ืื™ื– ื’ืึทื ืฅ ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’ ืึทื– ื“ื™ PIN ืงืึธื“ ืื™ื– ืกื˜ืึธืจื“ ืื™ืŸ ืึทื ืขื ืงืจื™ืคึผื˜ื™ื“ ืคืึธืจืขื! ื“ื™ ื•ื•ืึทืœื•ืขืก, ืคื•ืŸ ืงื•ืจืก, ื–ืขื ืขืŸ ื ื™ืฉื˜ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ASCII ืงืึธื•ื“ื–, ืึธื‘ืขืจ ื•ื•ื™ ืขืก ื˜ื•ืจื ืก ืื•ื™ืก, ื–ื™ื™ ืคืึทืจื˜ืจืึทื›ื˜ื  ื–ื™ืš ื“ื™ ืจื™ื“ื™ื ื’ื– ื’ืขื ื•ืžืขืŸ ืคื•ืŸ ื“ื™ ืงืึทืคึผืึทืกื™ื˜ื™ื•ื•ืข ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ.

ืฆื•ื ืกื•ืฃ, ืื™ืš ื’ืขืœืืคืŸ ืขื˜ืœืขื›ืข ืžืขืจ ื˜ืขืกืฅ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ื•ื•ื• ื“ื™ ืฉืœืขื›ื˜ ืคึผืจื•ื•ื•ืŸ ื˜ืึธืžื‘ืึทื ืง ืื™ื– ืกื˜ืึธืจื“. ืื˜ ืื™ื– ื“ืขืจ ืจืขื–ื•ืœื˜ืื˜:

ืจื™ื•ื•ืขืจืกื™ื ื’ ืื•ืŸ ื›ืึทืงื™ื ื’ Aigo ื–ื™ืš-ืขื ืงืจื™ืคึผื˜ื™ื ื’ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื”ื“ื“ ืคืึธืจ. ื˜ื™ื™ืœ 2: ื ืขืžืขืŸ ืึท ื“ืึทืžืคึผ ืคื•ืŸ Cypress PSoC

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 ืืคื™ืœื• ืื•ื™ื‘ ืขืก ืื™ื– ืœื™ื™ืขื ืขืŸ ืคึผืจืึธื˜ืขืงื˜ืขื“;
  • ืžื™ืจ ืงืขื ืขืŸ ื‘ื™ื™ืคึผืึทืก ื“ื™ ืึทื ื˜ื™-ืœืึทืงื›ืขื ืขืŸ ืฉื•ืฅ ื“ื•ืจืš ื ื™ืฆืŸ ืึท ืงืึทืœื˜ ืฉื˜ื™ื•ื•ืœ ืฉืคึผื•ืจ ื‘ืึทืคืึทืœืŸ ืื•ืŸ ื’ืœื™ื™ืš ืœื™ื™ืขื ืขืŸ ื“ื™ PIN ืงืึธื“.

ืึธื‘ืขืจ, ืื•ื ื“ื–ืขืจ ื‘ืึทืคืึทืœืŸ ื”ืื˜ ืขื˜ืœืขื›ืข ืคืœืึธื– ืจืขื›ื˜ ืฆื• ืกื™ื ื’ืงืจืึทื ืึทื–ื™ื™ืฉืึทืŸ ืคึผืจืึธื‘ืœืขืžืก. ืขืก ืงืขืŸ ื–ื™ื™ืŸ ื™ืžืคึผืจื•ื•ื•ื“ ื•ื•ื™ ื’ื™ื™ื˜:

  • ืฉืจื™ื™ึทื‘ืŸ ืึท ื ื•ืฆืŸ ืฆื• ืจื™ื›ื˜ื™ืง ื“ืขืงืึธื“ืข ื“ื™ ืคึผืจืึธื“ื•ืงืฆื™ืข ื“ืึทื˜ืŸ ื•ื•ืึธืก ืื™ื– ื‘ืืงื•ืžืขืŸ ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ืึท "ืงืึทืœื˜ ืฉื˜ื™ื•ื•ืœ ืฉืคึผื•ืจ" ื‘ืึทืคืึทืœืŸ;
  • ื ื™ืฆืŸ ืึท FPGA ื”ืึทืžืฆืึธืข ืฆื• ืฉืึทืคึฟืŸ ืžืขืจ ื’ืขื ื•ื™ ืฆื™ื™ื˜ ื“ื™ืœื™ื™ื– (ืึธื“ืขืจ ื ื•ืฆืŸ Arduino ื™ื™ึทื–ื ื•ื•ืึทืจื’ ื˜ื™ื™ืžืขืจื–);
  • ืคึผืจื•ึผื•ื•ื˜ ืืŸ ืื ื“ืขืจ ื‘ืึทืคืึทืœืŸ: ืึทืจื™ื™ึทืŸ ืึท ื“ื™ืœื™ื‘ืจืึทื˜ืœื™ ืคืึทืœืฉ PIN ืงืึธื“, ืจืขื‘ืึธืึธื˜ ืื•ืŸ ื“ืึทืžืคึผ ื‘ืึทืจืึทืŸ, ื›ืึธื•ืคึผื™ื ื’ ืึทื– ื“ื™ ืจื™ื›ื˜ื™ืง PIN ืงืึธื“ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขืจืื˜ืขื•ื•ืขื˜ ืื™ืŸ ื‘ืึทืจืึทืŸ ืคึฟืึทืจ ืคืึทืจื’ืœื™ื™ึทืš. ืึธื‘ืขืจ, ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ืึทื–ื•ื™ ื’ืจื™ื ื’ ืฆื• ื˜ืึธืŸ ืื•ื™ืฃ Arduino, ื•ื•ื™ื™ึทืœ ื“ื™ Arduino ืกื™ื’ื ืึทืœ ืžื“ืจื’ื” ืื™ื– 5 ื•ื•ืืœื˜ืก, ื‘ืฉืขืช ื“ื™ ื‘ืจืขื˜ ืžื™ืจ ื•ื ื˜ืขืจื–ื•ื›ืŸ ืึทืจื‘ืขื˜ ืžื™ื˜ 3,3 ื•ื•ืืœื˜ ืกื™ื’ื ืึทืœื–.

ืื™ื™ืŸ ื˜ืฉื™ืงืึทื•ื•ืข ื–ืึทืš ื•ื•ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ื’ืขืคืจื•ื•ื•ื˜ ืื™ื– ืฆื• ืฉืคึผื™ืœืŸ ืžื™ื˜ ื“ื™ ื•ื•ืึธื•ืœื˜ื™ื“ื–ืฉ ืžื“ืจื’ื” ืฆื• ื‘ื™ื™ืคึผืึทืก ื“ื™ ืœื™ื™ืขื ืขืŸ ืฉื•ืฅ. ืื•ื™ื‘ ื“ืขืจ ืฆื•ื’ืึทื ื’ ื’ืขืืจื‘ืขื˜, ืžื™ืจ ื•ื•ืึธืœื˜ ืงืขื ืขืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืœืขื’ืึทืžืจืข ืคึผื™ื ื˜ืœืขืš ื“ืึทื˜ืŸ ืคื•ืŸ ื“ื™ ื‘ืœื™ืฅ ืคืึธืจ - ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ืคืึทืจืœืึธื–ื  ื–ื™ืš ืœื™ื™ืขื ืขืŸ ืึท ื˜ืฉืขืงืงืกื•ื ืžื™ื˜ ื™ืžืคึผืจื™ื–ื™ืง ื˜ื™ื™ืžื™ื ื’ ื“ื™ืœื™ื™ื–.

ื–ื™ื ื˜ ื“ื™ SROM ืžื™ืกื˜ืึธืžืข ืœื™ื™ืขื ื˜ ื“ื™ ื”ื™ื˜ืŸ ื‘ื™ื˜ืŸ ื“ื•ืจืš ื“ื™ ืจืขืึทื“ื‘ืœืึทืง ืกื™ืกื˜ืขื ืจื•ืคืŸ, ืžื™ืจ ืงืขืŸ ื˜ืึธืŸ ื“ื™ ื–ืขืœื‘ืข ื–ืึทืš ื•ื•ื™ ื“ื™ืกืงืจื™ื™ื‘ื“ ืื•ื™ืฃ ื“ื™ ื‘ืœืึธื’ ืคื•ืŸ ื“ืžื™ื˜ืจื™ ื ืขื“ืึธืกืคึผืึทืกืึธื•ื• - ืึท ืฉื™ื™ึทืขืš-ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ืงืจื™ืก ื’ืขืจืœื™ื ืกืงื™ ืก ื‘ืึทืคืึทืœืŸ, ืžื•ื“ื™ืข ืื•ื™ืฃ ื“ืขืจ ื–ื™ืฆื•ื ื’ "ืจืขืงืึธืŸ ื‘ืจื™ืกืœ 2017".

ืืŸ ืื ื“ืขืจ ืฉืคึผืึทืก ื–ืึทืš ื•ื•ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืื™ื– ืฆื• ืžืึธืœ ื“ื™ ืคืึทืœ ืคื•ืŸ ื“ื™ ืฉืคึผืึธืŸ: ืฆื• ื ืขืžืขืŸ ืึท SRAM ื“ืึทืžืคึผ, ื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจืŸ ืึทื ื“ืึทืงื™ืึทืžืขื ื™ื“ ืกื™ืกื˜ืขื ืจื•ืคื˜ ืื•ืŸ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื–.

9. ืžืกืงื ื

ืึทื–ื•ื™, ื“ืขืจ ืฉื•ืฅ ืคื•ืŸ ื“ืขื ืคืึธืจ ืœืึธื–ืŸ ืคื™ืœ ืฆื• ื–ื™ื™ืŸ ื’ืขื•ื•ืืœื˜, ื•ื•ื™ื™ึทืœ ืขืก ื ื™ืฆื˜ ืึท ืจืขื’ื•ืœืขืจ (ื ื™ื˜ "ืคืึทืจื’ืœื™ื•ื•ืขืจื˜") ืžื™ืงืจืึธืงืึธื ื˜ืจืึธืœืœืขืจ ืฆื• ืงืจืึธื ื“ื™ PIN ืงืึธื“ ... ืคึผืœื•ืก, ืื™ืš ื”ืึธื‘ืŸ ื ื™ืฉื˜ ื’ืขืงื•ืงื˜ (ื ืึธืš) ื•ื•ื™ ื“ื™ ื–ืื›ืŸ ื–ืขื ืขืŸ ื’ืขื’ืื ื’ืขืŸ ืžื™ื˜ ื“ืึทื˜ืŸ ืขื ืงืจื™ืคึผืฉืึทืŸ ืื•ื™ืฃ ื“ืขื ืžื™ื˜ืœ!

ื•ื•ืึธืก ืงืขื ืขืŸ ืื™ืจ ืจืขืงืึธืžืขื ื“ื™ืจืŸ ืคึฟืึทืจ Aigo? ื ืึธืš ืึทื ืึทืœื™ื™ื–ื™ื ื’ ืึท ืคึผืึธืจ ืคื•ืŸ ืžืึธื“ืขืœืก ืคื•ืŸ ื™ื ืงืจื™ืคึผื˜ื™ื“ ื”ื“ื“ ื“ืจื™ื™ื•ื•ื–, ืื™ืŸ 2015 ืื™ืš ื’ืขืžืื›ื˜ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืื•ื™ืฃ SyScan, ืื™ืŸ ื•ื•ืึธืก ืขืจ ื™ื’ื–ืึทืžืึทื ื“ ื“ื™ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธื‘ืœืขืžืก ืคื•ืŸ ืขื˜ืœืขื›ืข ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื”ื“ื“ ื“ืจื™ื™ื•ื•ื–, ืื•ืŸ ื’ืขืžืื›ื˜ ืจืขืงืึทืžืึทื ื“ื™ื™ืฉืึทื ื– ืื•ื™ืฃ ื•ื•ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ื™ืžืคึผืจื•ื•ื•ื“ ืื™ืŸ ื–ื™ื™. ๐Ÿ™‚

ืื™ืš ืคืืจื‘ืจืื›ื˜ ืฆื•ื•ื™ื™ ื•ื•ื™ืงืขื ื“ื– ืื•ืŸ ืขื˜ืœืขื›ืข ื™ื•ื•ื ื™ื ื’ื– ืฆื• ื˜ืึธืŸ ื“ืขื ืคืึธืจืฉื•ื ื’. ื ื’ืึทื ืฅ ืคื•ืŸ ื•ื•ืขื’ืŸ 40 ืฉืขื”. ืงืึทื•ื ื˜ื™ื ื’ ืคื•ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ (ื•ื•ืขืŸ ืื™ืš ื’ืขืขืคื ื˜ ื“ืขื ื“ื™ืกืง) ืฆื• ื“ื™ ืกื•ืฃ (PIN ืงืึธื“ ื“ืึทืžืคึผ). ื“ื™ ื–ืขืœื‘ืข 40 ืฉืขื” ื›ื•ืœืœ ื“ื™ ืฆื™ื™ื˜ ืื™ืš ืคืืจื‘ืจืื›ื˜ ืฉืจื™ื™ื‘ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ. ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื–ื™ื™ืขืจ ื™ืงืกื™ื™ื˜ื™ื ื’ ื™ืึทื–ื“ืข.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’