ΠΡΠΎ Π²ΡΠΎΡΠ°Ρ ΠΈ Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΡΡΠ°ΡΡΠΈ ΠΏΡΠΎ Π²Π·Π»ΠΎΠΌ Π²Π½Π΅ΡΠ½ΠΈΡ
ΡΠ°ΠΌΠΎΡΠΈΡΡΡΡΡΠΈΡ
ΡΡ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Π΅ΠΉ. ΠΠ°ΠΏΠΎΠΌΠΈΠ½Π°Ρ, Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΊΠΎΠ»Π»Π΅Π³Π° Π·Π°Π½Π΅Ρ ΠΌΠ½Π΅ ΠΆΡΡΡΠΊΠΈΠΉ Π΄ΠΈΡΠΊ Patriot (Aigo) SK8671, ΠΈ Ρ ΡΠ΅ΡΠΈΠ» Π΅Π³ΠΎ ΠΎΡΡΠ΅Π²Π΅ΡΡΠΈΡΡ, Π° ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π΅Π»ΡΡΡ, ΡΡΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ. ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠΈΡΠ°ΡΡ Π΄Π°Π»ΡΡΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ
4. ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠ½ΠΈΠΌΠ°ΡΡ Π΄Π°ΠΌΠΏ Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΠ»Π΅ΡΠΊΠΈ PSoC
ΠΡΠ°ΠΊ, Π²ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ (ΠΊΠ°ΠΊ ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Π² [ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ]()), ΡΡΠΎ ΠΏΠΈΠ½ΠΊΠΎΠ΄ Ρ ΡΠ°Π½ΠΈΡΡΡ Π²ΠΎ ΡΠ»Π΅Ρ-Π½Π΅Π΄ΡΠ°Ρ PSoC. ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΡΠΈ ΡΠ»Π΅Ρ-Π½Π΅Π΄ΡΠ°. Π€ΡΠΎΠ½Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ°Π±ΠΎΡ:
- Π²Π·ΡΡΡ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Β«ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅Β» Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ;
- Π½Π°ΠΉΡΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π·Π°ΡΠΈΡΠ΅Π½ΠΎ Π»ΠΈ ΡΡΠΎ Β«ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅Β» ΠΎΡ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΈΠ·Π²Π½Π΅;
- Π½Π°ΠΉΡΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±Ρ ΠΎΠ΄Π° Π·Π°ΡΠΈΡΡ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΈΡΠΊΠ°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠΈΠ½ΠΊΠΎΠ΄:
- Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ»Π΅Ρ-ΠΏΠ°ΠΌΡΡΡ;
- SRAM, Π³Π΄Π΅ ΠΏΠΈΠ½ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π΅Π³ΠΎ Ρ ΡΠ΅ΠΌ ΠΏΠΈΠ½ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
ΠΠ°Π±Π΅Π³Π°Ρ Π²ΠΏΠ΅ΡΡΠ΄, ΠΎΡΠΌΠ΅ΡΡ, ΡΡΠΎ ΠΌΠ½Π΅ Π²ΡΡ-ΡΠ°ΠΊΠΈ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠ½ΡΡΡ Π΄Π°ΠΌΠΏ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΠ»Π΅ΡΠΊΠΈ PSoC, β ΠΎΠ±ΠΎΠΉΠ΄Ρ Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π·Π°ΡΠΈΡΡ, ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΉ Π°ΡΠ°ΠΊΠΈ Β«ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° Ρ Ρ ΠΎΠ»ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉΒ» β ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π²Π΅ΡΡΠΈΠ½Π³Π° Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ISSP-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΌΠ½Π΅ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ½ΠΈΠΌΠ°ΡΡ Π΄Π°ΠΌΠΏ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΈΠ½ΠΊΠΎΠ΄Π°.
$ ./psoc.py
syncing: KO OK
[...]
PIN: 1 2 3 4 5 6 7 8 9
ΠΡΠΎΠ³ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄:
5. ISSP-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»
5.1. Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ISSP
Β«ΠΠ±ΡΠ΅Π½ΠΈΠ΅Β» Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΠΈ: ΠΎΡ Β«vendor to vendorΒ», Π΄ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ICSP Π΄Π»Ρ MicrochipβΠΎΠ²ΡΠΊΠΎΠ³ΠΎ PIC).
Π£ Cypress Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ISSP (in-system serial programming protocol; Π²Π½ΡΡΡΠΈΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ Π²
- ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ PSoC;
- Π²ΡΠ²Π΅ΡΡΠΈ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π½Π° Π½ΠΎΠΆΠΊΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΡΠΎΠΉ PSoC; Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π° Π² ΡΠ΅ΠΆΠΈΠΌ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ;
- ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΡΠ΅ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Β«Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈΒ».
Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° ISSP ΡΡΠΈ Π²Π΅ΠΊΡΠΎΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π»ΠΈΡΡ Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π³ΠΎΡΡΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄:
- Initialize-1
- Initialize-2
- Initialize-3 (Π²Π°ΡΠΈΠ°Π½ΡΡ 3V ΠΈ 5V)
- ID-SETUP
- READ-ID-WORD
- SET-BLOCK-NUM: 10011111010dddddddd111, Π³Π΄Π΅ dddddddd=block #
- BULK ERASE
- PROGRAM-BLOCK
- VERIFY-SETUP
- READ-BYTE: 10110aaaaaaZDDDDDDDDZ1, Π³Π΄Π΅ DDDDDDDD = data out, aaaaaa = Π°Π΄ΡΠ΅Ρ (6 Π±ΠΈΡ)
- WRITE-BYTE: 10010aaaaaadddddddd111, Π³Π΄Π΅ dddddddd = data in, aaaaaa = Π°Π΄ΡΠ΅Ρ (6 Π±ΠΈΡ)
- SECURE
- CHECKSUM-SETUP
- READ-CHECKSUM: 10111111001ZDDDDDDDDZ110111111000ZDDDDDDDDZ1, Π³Π΄Π΅ DDDDDDDDDDDDDDDD = data out: ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° Π΄Π΅Π²Π°ΠΉΡΠ°
- ERASE BLOCK
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π΅ΠΊΡΠΎΡ Π΄Π»Ρ Initialize-2:
1101111011100000000111 1101111011000000000111
1001111100000111010111 1001111100100000011111
1101111010100000000111 1101111010000000011111
1001111101110000000111 1101111100100110000111
1101111101001000000111 1001111101000000001111
1101111000000000110111 1101111100000000000111
1101111111100010010111
Π£ Π²ΡΠ΅Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π° Π΄Π»ΠΈΠ½Π°: 22 Π±ΠΈΡΠ°. Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° HSSP Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΠΎ ISSP: Β«ISSP-Π²Π΅ΠΊΡΠΎΡ ΡΡΠΎ Π½ΠΈ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ Π±ΠΈΡΠΎΠ²Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉΒ».
5.2. ΠΠ΅ΠΌΠΈΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ²
Π Π°Π·Π±Π΅ΡΡΠΌΡΡ, ΡΡΠΎ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ. ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π», ΡΡΠΎ ΡΡΠΈ ΡΠ°ΠΌΡΠ΅ Π²Π΅ΠΊΡΠΎΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ raw-Π²Π°ΡΠΈΠ°Π½ΡΡ M8C-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ² ΡΡΡ Π³ΠΈΠΏΠΎΡΠ΅Π·Ρ, Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ ΠΎΠΏΠΊΠΎΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ.
ΠΠ°ΡΠ΅ΠΌ Ρ Π·Π°Π³ΡΠ³Π»ΠΈΠ» Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΠΉ Π²Π΅ΠΊΡΠΎΡ, ΠΈ Π½Π°ΡΠΊΠ½ΡΠ»ΡΡ Π½Π°
ΠΠ°ΡΠ΅ΠΌ ΠΌΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΏΠΎΡΠ΅ΡΠΏΠ½ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° Β«Supervisory ROM (SROM)Β»
- 00h: SWBootReset
- 01h: ReadBlock
- 02h: WriteBlock
- 03h: EraseBlock
- 06h: TableRead
- 07h: CheckSum
- 08h: Calibrate0
- 09h: Calibrate1
Π‘ΡΠ°Π²Π½ΠΈΠ²Π°Ρ ΠΈΠΌΠ΅Π½Π° Π²Π΅ΠΊΡΠΎΡΠΎΠ² Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ SROM, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΠΈΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ, β Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌΠΈ SROM-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΡΠΈ Π±ΠΈΡΠ° ISSP-Π²Π΅ΠΊΡΠΎΡΠΎΠ²:
- 100 => βwrmemβ
- 101 => βrdmemβ
- 110 => βwrregβ
- 111 => βrdregβ
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Π½ΡΡΡΠΈΡΠΈΠΏΠΎΠ²ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅Π½ΠΈΠΈ Ρ PSoC.
5.3. ΠΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ PSoC
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΠΈΡΠΊ ΠΠ΅ΡΡΠ°ΡΡΡΠΊΠΈΠΉ ΡΠΆΠ΅
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² Ρ
ΠΎΠ΄Π΅ ΡΠ²ΠΎΠΈΡ
ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠΈΠ»ΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΊΠΎΠ΄ ΠΠΈΡΠΊΠ°. ΠΠΎΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π½Π° GitHub:
ΠΡΠ°ΠΊ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ Arduino, Ρ ΡΠ½Π°ΡΠ°Π»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΄Π»Ρ Β«ΠΎΠ±ΡΠ΅Π½ΠΈΡΒ» ΡΠΎΠ»ΡΠΊΠΎ Β«ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅Β» Π²Π΅ΠΊΡΠΎΡΡ. Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ROM, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ VERIFY. ΠΠ°ΠΊ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, ΡΡΠΎΠ³ΠΎ ΠΌΠ½Π΅ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ. ΠΠ΅ΡΠΎΡΡΠ½ΠΎ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Π½ΡΡΡΠΈ ΡΠ»Π΅ΡΠΊΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Ρ Π±ΠΈΡΡ Π·Π°ΡΠΈΡΡ ΠΎΡ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ.
ΠΠ°ΡΠ΅ΠΌ Ρ ΡΠΎΠ·Π΄Π°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠΈΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ², Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΡΠ΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ/ΡΠ΅Π³ΠΈΡΡΡΠΎΠ². ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΈΡΠ°ΡΡ Π²ΡΡ SROM, Π΄Π°ΠΆΠ΅ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠ»Π΅ΡΠΊΠ° Π·Π°ΡΠΈΡΠ΅Π½Π°!
5.4. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π²Π½ΡΡΡΠΈΡΠΈΠΏΠΎΠ²ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²
ΠΠΎΡΠΌΠΎΡΡΠ΅Π² Π½Π° Β«Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅Β» Π²Π΅ΠΊΡΠΎΡΡ, Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ Π΄Π΅Π²Π°ΠΉΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ (0xF8-0xFA), Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ M8C-ΠΎΠΏΠΊΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ, Π² ΠΎΠ±Ρ ΠΎΠ΄ Π·Π°ΡΠΈΡΡ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΌΠ½Π΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠΊΠΎΠ΄Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«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, Π½ΠΎ Ρ ΠΌΠ΅Π½Ρ Π²ΡΡ Π΅ΡΡ Π½Π΅Ρ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π·Π°ΡΠΈΡΠ½ΡΡ Π±ΠΈΡΠ°Ρ ΡΠ»Π΅ΡΠΊΠΈ. Π― Π±ΡΠ» ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΈΠ²Π»ΡΠ½ ΡΠ΅ΠΌ ΡΠ°ΠΊΡΠΎΠΌ, ΡΡΠΎ Cypress Π½Π΅ Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π΅Π²Π°ΠΉΡΠ° Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π° Π»ΠΈ Π·Π°ΡΠΈΡΠ°. Π― ΡΠ³Π»ΡΠ±ΠΈΠ»ΡΡ Π² Google, ΡΡΠΎΠ±Ρ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ HSSP-ΠΊΠΎΠ΄, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ CypressβΠΎΠΌ, Π±ΡΠ» ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½ ΡΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΠΈΡΠΊ Π²ΡΠΏΡΡΡΠΈΠ» ΡΠ²ΠΎΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ. Π Π²ΠΎΡ! ΠΠΎΡΠ²ΠΈΠ»ΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ Π½ΠΎΠ²ΡΠΉ Π²Π΅ΠΊΡΠΎΡ:
[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, Π³Π΄Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΡΠΈΡΠ°Π΅ΠΌΡ Π±Π»ΠΎΠΊ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ Π΄Π²Π° Π±ΠΈΡΠ°.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ΄ΡΡΡΠ°Π΅Ρ: Π²ΡΡ Π·Π°ΡΠΈΡΠ΅Π½ΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Β«ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡΒ». ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ Ρ ΡΠ»Π΅ΡΠΊΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ, Π½ΠΎ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΎΠΆΠ΅ (ΡΡΠΎΠ±Ρ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²Π½Π΅Π΄ΡΠΈΡΡ ΡΡΠ΄Π° ROM-Π΄Π°ΠΌΠΏΠ΅Ρ). Π Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π·Π°ΡΠΈΡΡ β ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΠ΅ΡΠ΅ΡΡ Π²Π΅ΡΡ ΡΠΈΠΏ. π
6. ΠΠ΅ΡΠ²Π°Ρ (Π½Π΅ΡΠ΄Π°Π²ΡΠ°ΡΡΡ) Π°ΡΠ°ΠΊΠ°: ROMX
ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΡΠΊ: ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π½Π°Ρ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΎΠΏΠΊΠΎΠ΄Ρ, ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ROMX, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ»Π΅Ρ-ΠΏΠ°ΠΌΡΡΠΈ? Π£ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π΅ΡΡΡ Π½Π΅ΠΏΠ»ΠΎΡ ΠΈΠ΅ ΡΠ°Π½ΡΡ Π½Π° ΡΡΠΏΠ΅Ρ . ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ReadBlock, ΡΡΠΈΡΡΠ²Π°ΡΡΠ°Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· 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)! ΠΠ΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅Π²Π°ΠΉΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π·Π°ΡΠΈΡΡ ΠΎΡ ΡΡΠ΅Π½ΠΈΡ. ΠΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΡΠΉ ΡΡΡΠΊ: ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΎΠΏΠΊΠΎΠ΄ΠΎΠ², 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-ΠΏΡΠΈΡΡΠ΄. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π·Π½Π°Ρ, ΡΡΠΎ Π² ΡΠ΄ΡΠ΅ M8C Π½Π°Π±ΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΎΡΠ΅Π½Ρ Π½Π΅Π²Π΅Π»ΠΈΠΊ, Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠ», ΡΡΠΎ ΠΏΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ, ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΡΠ΅Ρ ΠΆΠ΅ ΡΠ°ΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΠΈΡΠΎΠ³Π΅ Π½Π° Π²ΡΡ ΠΎΠ΄ ΠΏΠΎΠΉΠ΄ΡΡ: KEY1 (0xF8) / KEY2 (0xF9).
ΠΡΠ°ΠΊ, Π² ΡΠ΅ΠΎΡΠΈΠΈ ΠΌΠΎΡ Π°ΡΠ°ΠΊΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
- Π‘ΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌΡΡ ΡΠ΅ΡΠ΅Π· ISSP.
- ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π΅ΠΊΡΠΎΡΠ° CHECKSUM-SETUP.
- ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΡΠ΅ΡΠ΅Π· Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ T.
- Π‘ΡΠΈΡΡΠ²Π°Π΅ΠΌ RAM, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ C.
- ΠΠΎΠ²ΡΠΎΡΡΠ΅ΠΌ ΡΠ°Π³ΠΈ 3 ΠΈ 4, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Ρ T.
- ΠΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ»Π΅ΡΠΊΠΈ, ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ 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
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π·Π°ΡΠΈΡΠ°Π΅Ρ Π½Π°ΡΡ Π΄ΡΠ°Π³ΠΎΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ, Π²ΡΠ·ΡΠ²Π°Ρ Calibrate1 (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();
- Π‘ΡΠΈΡΠ°ΡΡ checkum_delay.
- ΠΠ°ΠΏΡΡΡΠΈΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ (send_checksum_v).
- ΠΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ; ΡΡΠΈΡΡΠ²Π°Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ:
- Ρ ΡΠ±ΠΈΠ» ΡΠΉΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ·Π½Π°Π», ΡΡΠΎ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ
delayMicroseconds ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°ΠΌΠΈ Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΠΈΠΌΠΈ 16383ΠΌΠΊΡ; - ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° ΡΠ±ΠΈΠ» ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ delayMicroseconds, Π΅ΡΠ»ΠΈ Π΅ΠΉ Π½Π° Π²Ρ ΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ 0, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ!
- Ρ ΡΠ±ΠΈΠ» ΡΠΉΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ·Π½Π°Π», ΡΡΠΎ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ
- ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ PSoC Π² ΡΠ΅ΠΆΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΠΏΡΠΎΡΡΠΎ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ, Π±Π΅Π· ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ²).
ΠΡΠΎΠ³ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ Π½Π° Python:
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))
Π Π΄Π²ΡΡ ΡΠ»ΠΎΠ²Π°Ρ , ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎΡ ΠΊΠΎΠ΄:
- ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ PSoC (ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π΅ΠΌΡ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΈΡΠ»ΠΎ).
- ΠΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ Π²Π΅ΠΊΡΠΎΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
- ΠΡΠ·ΡΠ²Π°Π΅Ρ Arduino-ΡΡΠ½ΠΊΡΠΈΡ Cmnd_STK_START_CSUM (0x85), ΠΊΡΠ΄Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ .
- Π‘ΡΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ (0xF8 ΠΈ 0xF9) ΠΈ Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ 0xF1.
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎ 10 ΡΠ°Π· Π·Π° 1 ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄Ρ. 0xF1 ΡΡΠ΄Π° Π²ΠΊΠ»ΡΡΡΠ½, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΡΠ» Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ΅Π³ΠΈΡΡΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ΅Π½ΡΠ»ΡΡ ΠΏΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠΎ-Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΠ΄Π»ΠΈΠ²ΡΠΉ Ρ Π°ΠΊ, ΠΊΠΎΡΠΎΡΡΠΌ Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Ρ Arduino, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ picocom, ΠΊΠΎΠ³Π΄Π° Arduino ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΠΏΠΎΠ΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈΠΆΠΈΠ·Π½ΠΈ (ΠΏΠΎΠ½ΡΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ).
7.2. Π‘ΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ Python-ΡΠΊΡΠΈΠΏΡΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ (ΡΠΏΡΠΎΡΡΠ½ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ):
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 ΠΌΠΊΡ Π½Π° Π±Π°ΠΉΡ, β ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ Π² ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ»Ρ ΠΏΠ΅ΡΠ²ΡΡ ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ² Π²ΡΡ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ-ΡΠ°ΠΊΠΈ Π»Π΅Π³ΠΊΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΊΠΎΠ½Π΅Ρ ΡΡΠΎΠ³ΠΎ Π΄Π°ΠΌΠΏΠ° ΠΌΠ΅Π½Π΅Π΅ ΡΠΎΡΠ΅Π½, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Β«Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈΒ» ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΎΠ³ΠΎΠ½Π΅ β ΡΡΠΌΠΌΠΈΡΡΡΡΡΡ, ΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ:
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. ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ Π°Π΄ΡΠ΅Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΈΠ½ΠΊΠΎΠ΄Π°
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ Π² Π½ΡΠΆΠ½ΡΠ΅ Π½Π°ΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, β ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΊΠ°ΠΊ ΠΈ Π³Π΄Π΅ ΠΎΠ½Π° ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ:
- Π²Π²ΠΎΠ΄ΠΈΠΌ Π½Π΅Π²Π΅ΡΠ½ΡΠΉ ΠΏΠΈΠ½ΠΊΠΎΠ΄;
- ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΡΠ΅ΠΌ ΠΏΠΈΠ½ΠΊΠΎΠ΄.
ΠΠ½Π°ΡΠ°Π»Π΅, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ, Ρ ΡΠ½ΡΠ» Π΄Π°ΠΌΠΏ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ Ρ ΡΠ°Π³ΠΎΠΌ Π² 10 ΠΌΡ, ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΠ°ΡΠ΅ΠΌ Ρ Π²Π²ΡΠ» Π½Π΅Π²Π΅ΡΠ½ΡΠΉ ΠΏΠΈΠ½ΠΊΠΎΠ΄ ΠΈ ΡΠ΄Π΅Π»Π°Π» ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΡΡΠ½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±ΡΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ. ΠΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ² ΠΌΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ, ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ Π³Π΄Π΅-ΡΠΎ Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ 120000 ΠΌΠΊΡ ΠΈ 140000 ΠΌΠΊΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ. ΠΠΎ Β«ΠΏΠΈΠ½ΠΊΠΎΠ΄Β», ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°ΠΌ ΠΎΠ±ΡΠ°Π½ΡΠΆΠΈΠ»ΠΈ, Π±ΡΠ» Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ β ΠΈΠ·-Π·Π° Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ delayMicroseconds, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ, ΠΊΠΎΠ³Π΄Π° Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ 0.
ΠΠ°ΡΠ΅ΠΌ, ΠΏΠΎΡΡΠ°ΡΠΈΠ² ΠΏΠΎΡΡΠΈ 3 ΡΠ°ΡΠ°, Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ», ΡΡΠΎ SROMβΠΎΠ²ΡΠΊΠΈΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² CheckSum Π½Π° Π²Ρ ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Π·Π°Π΄Π°ΡΡΠΈΠΉ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π»ΠΎΠΊΠΎΠ² Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ! Π’.ΠΎ. ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π±Π΅Π· ΡΡΡΠ΄Π° Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π°Π΄ΡΠ΅Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΈΠ½ΠΊΠΎΠ΄Π° ΠΈ ΡΡΡΡΡΠΈΠΊΠ° Β«Π½Π΅Π²Π΅ΡΠ½ΡΡ ΠΏΠΎΠΏΡΡΠΎΠΊΒ», β Ρ ΡΠΎΡΠ½ΠΎΡΡΡΡ Π΄ΠΎ 64-Π±Π°ΠΉΡΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°.
ΠΠΎΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΠΎΠ½Ρ Π΄Π°Π»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠ°ΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠ΅Π½ΡΠ» ΠΏΠΈΠ½ΠΊΠΎΠ΄ Ρ Β«123456Β» Π½Π° Β«1234567Β» ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΈΠ½ΠΊΠΎΠ΄ ΠΈ ΡΡΡΡΡΠΈΠΊ Π½Π΅Π²Π΅ΡΠ½ΡΡ ΠΏΠΎΠΏΡΡΠΎΠΊ, ΠΏΠΎΡ ΠΎΠΆΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ Π² Π±Π»ΠΎΠΊΠ΅ β126.
7.5. Π‘Π½ΠΈΠΌΠ°Π΅ΠΌ Π΄Π°ΠΌΠΏ Π±Π»ΠΎΠΊΠ° β126
ΠΠ»ΠΎΠΊ β126 Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π³Π΄Π΅-ΡΠΎ Π² ΡΠ°ΠΉΠΎΠ½Π΅ 125x64x18 = 144000ΠΌΠΊΡ, ΠΎΡ Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΡΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ, Π² ΠΌΠΎΡΠΌ ΠΏΠΎΠ»Π½ΠΎΠΌ Π΄Π°ΠΌΠΏΠ΅, ΠΈ ΠΎΠ½ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡΠ°Π²Π΄ΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ. ΠΠ°ΡΠ΅ΠΌ, ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ½ΠΎΠ³ΠΎ ΠΎΡΡΠ΅ΠΈΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π½Π΅Π²Π΅ΡΠ½ΡΡ Π΄Π°ΠΌΠΏΠΎΠ² (ΠΈΠ·-Π·Π° Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ Β«Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈΒ»), Ρ Π² ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ» Π²ΠΎΡ ΡΠ°ΠΊΠΈΠ΅ Π±Π°ΠΉΡΡ (Π½Π° Π·Π°Π΄Π΅ΡΠΆΠΊΠ΅ 145527ΠΌΠΊΡ):
Π‘ΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΏΠΈΠ½ΠΊΠΎΠ΄ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² Π½Π΅Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅! ΠΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π½Π΅ Π² ASCII-ΠΊΠΎΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΠ°Π½Ρ, Π½ΠΎ ΠΊΠ°ΠΊ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ β ΠΎΡΡΠ°ΠΆΠ°ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΡ, ΡΠ½ΡΡΡΠ΅ Ρ ΡΠΌΠΊΠΎΡΡΠ½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Ρ ΠΏΡΠΎΠ²ΡΠ» Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡΠΎΠ², ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ, Π³Π΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΡΡΡΡΠΈΠΊ Π½Π΅Π²Π΅ΡΠ½ΡΡ ΠΏΠΎΠΏΡΡΠΎΠΊ. ΠΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
0xFF β ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«15 ΠΏΠΎΠΏΡΡΠΎΠΊΒ», ΠΈ ΠΎΠ½ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½Π΅Π²Π΅ΡΠ½ΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠ΅.
7.6. ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΈΠ½ΠΊΠΎΠ΄Π°
ΠΠΎΡ ΠΌΠΎΠΉ ΡΡΠΎΠ΄Π»ΠΈΠ²ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π²ΠΌΠ΅ΡΡΠ΅ Π²ΡΡ Π²ΡΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅:
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);
- ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π΅ΡΡ ΠΎΠ΄Π½Ρ Π°ΡΠ°ΠΊΡ: Π²Π²Π΅ΡΡΠΈ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅Π²Π΅ΡΠ½ΡΠΉ ΠΏΠΈΠ½ΠΊΠΎΠ΄, ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈ Ρ Π΄Π°ΠΌΠΏΠΈΡΡ RAM, Π½Π°Π΄Π΅ΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠΈΠ½ΠΊΠΎΠ΄ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°Π½ΡΠ½Π½ΡΠΌ Π² RAM, Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π° Arduino ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ ΡΠ°ΠΊ-ΡΠΎ ΠΏΡΠΎΡΡΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠΈΠ³Π½Π°Π»Π° Arduino ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 5 Π²ΠΎΠ»ΡΡ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΈΡΡΠ»Π΅Π΄ΡΠ΅ΠΌΠ°Ρ Π½Π°ΠΌΠΈ ΠΏΠ»Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠΈΠ³Π½Π°Π»Π°ΠΌΠΈ Π² 3,3 Π²ΠΎΠ»ΡΡ.
ΠΠ΄Π½Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ Π²Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ β ΠΏΠΎΠΈΠ³ΡΠ°ΡΡ ΡΡΠΎΠ²Π½Π΅ΠΌ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ, Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° Π·Π°ΡΠΈΡΡ ΠΎΡ ΡΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π±Ρ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΡΠ°Π±ΠΎΡΠ°Π», ΠΌΡ Π±Ρ ΡΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠΎΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ ΡΠ»Π΅ΡΠΊΠΈ, β Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ Ρ Π½Π΅ΡΠΎΡΠ½ΡΠΌΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°ΠΌΠΈ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ SROM, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π·Π°ΡΠΈΡΠ½ΡΠ΅ Π±ΠΈΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ReadBlock, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ
ΠΡΡ ΠΎΠ΄Π½Π° Π·Π°Π±Π°Π²Π½Π°Ρ Π²Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ β ΡΡΠΎΡΠΈΡΡ Ρ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌΡ ΠΊΠΎΡΠΏΡΡ: Π΄Π»Ρ ΡΠ½ΡΡΠΈΡ Π΄Π°ΠΌΠΏΠ° SRAM, Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ.
9. ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠ°ΠΊ, Π·Π°ΡΠΈΡΠ° ΡΡΠΎΠ³ΠΎ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Ρ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΆΠ΅Π»Π°ΡΡ Π»ΡΡΡΠ΅Π³ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΈΠ½ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ±ΡΡΠ½ΡΠΉ (Π½Π΅ Β«Π·Π°ΠΊΠ°Π»ΡΠ½Π½ΡΠΉΒ») ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρβ¦ ΠΠ»ΡΡ Ρ Π΅ΡΡ Π½Π΅ ΡΠΌΠΎΡΡΠ΅Π» (ΠΏΠΎΠΊΠ°), ΠΊΠ°ΠΊ Π½Π° ΡΡΠΎΠΌ Π΄Π΅Π²Π°ΠΉΡΠ΅ Π΄Π΅Π»Π° ΠΎΠ±ΡΡΠΎΡΡ Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ !
Π§ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ Aigo? ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π² ΠΏΠ°ΡΡ-ΡΡΠΎΠΉΠΊΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΡ
HDD-Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Π΅ΠΉ, Ρ Π² 2015 Π³ΠΎΠ΄Ρ ΡΠ΄Π΅Π»Π°Π»
ΠΠ° ΡΡΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΡΡΠ°ΡΠΈΠ» Π΄Π²Π° Π²ΡΡ ΠΎΠ΄Π½ΡΡ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΠ΅ΡΠΎΠ². Π ΠΎΠ±ΡΠ΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΡΡΠ΄ΠΊΠ° 40 ΡΠ°ΡΠΎΠ². Π‘ΡΠΈΡΠ°Ρ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° (ΠΊΠΎΠ³Π΄Π° Ρ Π²ΡΠΊΡΡΠ» Π΄ΠΈΡΠΊ) ΠΈ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° (Π΄Π°ΠΌΠΏ ΠΏΠΈΠ½ΠΊΠΎΠ΄Π°). Π ΡΡΠΈ ΠΆΠ΅ 40 ΡΠ°ΡΠΎΠ² Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΠΏΠΎΡΡΠ°ΡΠΈΠ» Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ. ΠΡΠ΅Π½Ρ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π±ΡΠ»ΠΎ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΠ΅.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com