Aigo рдХреЗ рд╕реЗрд▓реНрдл рдПрдирдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдПрдХреНрд╕рдЯрд░реНрдирд▓ рдПрдЪрдбреАрдбреА рдХреЛ рдЙрд▓рдЯрд╛рдирд╛ рдФрд░ рд╣реИрдХ рдХрд░рдирд╛ред рднрд╛рдЧ 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ред рдкрд┐рдирдХреЛрдб рднрдВрдбрд╛рд░рдг рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
- 7.5ред рд╣рдо рдмреНрд▓реЙрдХ рдирдВрдмрд░ 126 рдХреЗ рдбрдВрдк рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ
- 7.6ред рдкрд┐рдирдХреЛрдб рд░рд┐рдХрд╡рд░реА
8. рдЖрдЧреЗ рдХреНрдпрд╛?
9. рдирд┐рд╖реНрдХрд░реНрд╖




4. рд╣рдо рдЖрдВрддрд░рд┐рдХ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ PSoC рд╕реЗ рдбрдВрдк рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ


рддреЛ, рд╕рдм рдХреБрдЫ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ [рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдерд╛] ()) рдХрд┐ рдкрд┐рдирдХреЛрдб рдХреЛ рдкреАрдПрд╕рдУрд╕реА рдлреНрд▓реИрд╢ рдмреЙрд▓реНрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрди рдлреНрд▓реИрд╢ рдмреЙрд▓реНрд╕ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд╛ рдореЛрд░реНрдЪрд╛:


  • рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде "рд╕рдВрдЪрд╛рд░" рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд░рдЦрдирд╛;
  • рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЦреЛрдЬреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ "рд╕рдВрдЪрд╛рд░" рдмрд╛рд╣рд░ рд╕реЗ рдкрдврд╝рдиреЗ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ;
  • рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬреЗрдВред

рджреЛ рдЬрдЧрд╣ рд╣реИрдВ рдЬрд╣рд╛рдБ рдпрд╣ рдПрдХ рд╡реИрдз рдкрд┐рдирдХреЛрдб рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ:


  • рдЖрдВрддрд░рд┐рдХ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА;
  • SRAM, рдЬрд╣рд╛рдВ рдкрд┐рдирдХреЛрдб рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдкрд┐рдирдХреЛрдб рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЕрднреА рднреА рдЖрдВрддрд░рд┐рдХ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ PSoC рдХреЗ рдбрдВрдк рдХреЛ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, ISSP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЙрд▓рдЯрдиреЗ рдХреЗ рдмрд╛рдж рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╣рдорд▓реЗ "рдХреЛрд▓реНрдб рд░реАрд╕реЗрдЯ рдЯреНрд░реЗрд╕" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдЗрд╕рд╕реЗ рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдкрд┐рдирдХреЛрдб рдХреЛ рд╕реАрдзреЗ рдбрдВрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реАред


$ ./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 рдирд╛рдордХ рдПрдХ OpenSource рдПрдирд╛рд▓реЙрдЧ рднреА рд╣реИ (рд╣рдо рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ)ред ISSP рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:


  • PSoC рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ;
  • рдЗрд╕ PSoC рдХреЗ рд╕реАрд░рд┐рдпрд▓ рдбреЗрдЯрд╛ рд▓реЗрдЧ рдкрд░ рдЬрд╛рджреВ рдирдВрдмрд░ рд▓рд╛рдПрдВ; рдмрд╛рд╣рд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП;
  • рдРрд╕реЗ рдХрдорд╛рдВрдб рднреЗрдЬреЗрдВ рдЬреЛ "рд╡реИрдХреНрдЯрд░" рдирд╛рдордХ рд▓рдВрдмреЗ рдмрд┐рдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╣реИрдВред

ISSP рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ, рдЗрди рд╡реИрдХреНрдЯрд░реЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рдореБрдЯреНрдареА рднрд░ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


  • рдкреНрд░рд╛рд░рдВрдн -1
  • рдкреНрд░рд╛рд░рдВрдн -2
  • рдЖрд░рдВрднрд┐рдХ -3 (3V рдФрд░ 5V рд╡рд┐рдХрд▓реНрдк)
  • рдЖрдИрдбреА рд╕реЗрдЯрдЕрдк
  • рдкрдврд╝реЗрдВ-рдЖрдИрдбреА-рд╡рд░реНрдб
  • рд╕реЗрдЯ-рдмреНрд▓реЙрдХ-рдиреБрдо: 10011111010dddddddd111, рдЬрд╣рд╛рдВ dddddddd = рдмреНрд▓реЙрдХ #
  • рдмрд▓реНрдХ ERASE
  • рдХрд╛рд░реНрдпрдХреНрд░рдо-рдмреНрд▓реЙрдХ
  • рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ-рд╕реЗрдЯрдЕрдк
  • READ-BYTE: 10110aaaaZDDDDDDDDZ1, рдЬрд╣рд╛рдВ DDDDDDDDD = рдбреЗрдЯрд╛ рдЖрдЙрдЯ, рдЖрдЖрдЖрдЖрдЖрдЖ = рдкрддрд╛ (6 рдмрд┐рдЯреНрд╕)
  • WRITE-BYTE: 10010aaaaadddddddd111, рдЬрд╣рд╛рдВ dddddddd = рдореЗрдВ рдбреЗрдЯрд╛, рдЖрдЖрдЖрдЖрдЖрдЖ = рдкрддрд╛ (6 рдмрд┐рдЯреНрд╕)
  • рд╕реБрд░рдХреНрд╖рд┐рдд
  • рдЕрдВрддрддрдГ,-рд╕реЗрдЯрдЕрдк
  • READ-CHECKSUM: 10111111001ZDDDDDDDDDDD111101111000ZDDDDDDDZ1, рдЬрд╣рд╛рдБ DDDDDDDDDDDDDDDDD = = рдмрд╛рд╣рд░: рдбрд┐рд╡рд╛рдЗрд╕ рдЪреЗрдХрд╕рдо
  • рдорд┐рдЯрд╛ рджреЗрдВ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд░рдВрднрд┐рдХ -2 рдХреЗ рд▓рд┐рдП рд╡реЗрдХреНрдЯрд░:


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

рд╕рднреА рд╡реИрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рд╕рдорд╛рди рд╣реИ: 22 рдмрд┐рдЯреНрд╕ред HSSP рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ ISSP рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИ: "ISSP рд╡реЗрдХреНрдЯрд░ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдмрд┐рдЯ рдЕрдиреБрдХреНрд░рдо рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред"



5.2ред рд╡реИрдХреНрдЯрд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди


рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВрдиреЗ рдорд╛рдирд╛ рдХрд┐ рдпреЗ рд╡реИрдХреНрдЯрд░ рдПрдо 8 рд╕реА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдХрдЪреНрдЪреЗ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдСрдкрдХреЛрдб рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВред


рдлрд┐рд░ рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рд╡реЗрдХреНрдЯрд░ рдХреЛ рджреЗрдЦрд╛, рдФрд░ рдЗрд╕ рдЕрдзреНрдпрдпрди рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ, рдЬрд╣рд╛рдВ рд▓реЗрдЦрдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕реБрд░рд╛рдЧ рджреЗрддрд╛ рд╣реИ: "рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢ рддреАрди рдмрд┐рдЯреНрд╕ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЪрд╛рд░ рдореЗрдиреЗрдорд┐рдХреНрд╕ (рд░реИрдо рд╕реЗ рдкрдврд╝реЗрдВ), рд░реИрдо рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрддрд╛ рд╣реИ , рд░рдЬрд┐рд╕реНрдЯрд░ рдкрдврд╝реЗрдВ, рд░рдЬрд┐рд╕реНрдЯрд░ рд▓рд┐рдЦреЗрдВ)ред рдЗрд╕рдХреЗ рдмрд╛рдж 8-рдмрд┐рдЯ рдПрдбреНрд░реЗрд╕ рдЖрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рдж 8 рдбреЗрдЯрд╛ рдмрд┐рдЯреНрд╕ (рдпрд╛ рддреЛ рдкрдврд╝рд╛ рдпрд╛ рд▓рд┐рдЦрд╛ рд╣реБрдЖ) рдФрд░ рдЕрдВрдд рдореЗрдВ рддреАрди рд╕реНрдЯреЙрдк рдмрд┐рдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВред тАЭ


рддрдм рдореИрдВ рддрдХрдиреАрдХреА рдореИрдиреБрдЕрд▓ рдХреЗ рд╕реБрдкрд░рд╡рд╛рдЗрдЬрд░реА рд░реЙрдо (рдПрд╕рдЖрд░рдПрдо) рдЕрдиреБрднрд╛рдЧ рд╕реЗ рдХреБрдЫ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред SROM PSoC рдореЗрдВ рдПрдХ рд╣рд╛рд░реНрдб-рдХреЛрдбрд┐рдд ROM рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдп (Syscall рдХреЗ рд╕рдорд╛рди) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:


  • 00h: SWBootReset
  • 01h: ReadBlock
  • 02h: рд░рд╛рдЗрдЯрдмреНрд▓реЙрдХ
  • 03h: EraseBlock
  • 06 рдПрдЪ: рдЯреЗрдмрд▓рд░реЗрдб
  • 07h: рдЪреЗрдХрд╕рдо
  • 08h: рдХреИрд▓рд┐рдмреНрд░реЗрдЯ 0
  • 09h: рдХреИрд▓рд┐рдмреНрд░реЗрдЯ 1

рдПрд╕рдЖрд░рдПрдо рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡реЗрдХреНрдЯрд░ рдирд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдПрд╕рдЖрд░рдПрдо рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо ISSP рд╡реИрдХреНрдЯрд░ рдХреЗ рдкрд╣рд▓реЗ рддреАрди рдмрд┐рдЯреНрд╕ рдХреЛ рдбреАрдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


  • 100 => "рд░рд╛рдЗрдЯрдо"
  • 101 => "rdmem"
  • 110 => "рдЧрд▓рдд"
  • 111 => "rdreg"

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрдВрдЯреНрд░рд╛-рдЪрд┐рдк рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдкреВрд░реА рд╕рдордЭ рдХреЗрд╡рд▓ рдкреАрдПрд╕рдУрд╕реА рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рд╕рдВрдЪрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред



5.3ред PSoC рдХреЗ рд╕рд╛рде рдЪреИрдЯ рдХрд░реЗрдВ


рдЪреВрдВрдХрд┐ рдбрд░реНрдХ рдкреЗрддреНрд░рд╛рдЙрддреНрд╕реНрдХреА рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Arduino рдореЗрдВ рд╕рд░реВ HSSP рдХреЛрдб рдХреЛ рдкреЛрд░реНрдЯ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХреАрдмреЛрд░реНрдб рдмреЛрд░реНрдб рдХреЛ ISSP рдХрдиреЗрдХреНрдЯрд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП Arduino Uno рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореЗрд░реЗ рд╢реЛрдз рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рдбрд┐рд░реНрдХ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рдмрджрд▓ рджрд┐рдпрд╛ред рдЖрдк GitHub рдкрд░ рдореЗрд░рд╛ рд╕рдВрд╢реЛрдзрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ: рдпрд╣рд╛рдВ рдореЗрд░реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА cypress_psoc_tools рдореЗрдВ Arduino рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред


рдЗрд╕рд▓рд┐рдП, Arduino рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ "рд╕рдВрдЪрд╛рд░" рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ "рдЖрдзрд┐рдХрд╛рд░рд┐рдХ" рд╡реИрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ VERIFY рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдВрддрд░рд┐рдХ ROM рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЬреИрд╕реА рдХрд┐ рдЙрдореНрдореАрдж рдереА, рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рд╕рдВрднрд╡рддрдГ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рдЕрдВрджрд░ рд╕реБрд░рдХреНрд╖рд╛ рдмрд┐рдЯреНрд╕ рдХреЛ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред


рдлрд┐рд░ рдореИрдВрдиреЗ рдореЗрдореЛрд░реА / рд░рдЬрд┐рд╕реНрдЯрд░ рд▓рд┐рдЦрдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХреБрдЫ рд╕рд░рд▓ рд╡реИрдХреНрдЯрд░ рдмрдирд╛рдПред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдкреВрд░реЗ рдПрд╕рдЖрд░рдПрдо рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реЛ!



5.4ред рдЗрдВрдЯреНрд░рд╛-рдЪрд┐рдк рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рдкрд╣рдЪрд╛рди


"рдЕрд╕рдВрддреБрд╖реНрдЯ" рд╡реИрдХреНрдЯрд░реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдПрдо 8 рд╕реА рдУрдкрдХреЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ (0xF8-0xFA) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реАрдзреЗ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдиреЗ рдореБрдЭреЗ "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 

рдЗрд╕ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП (psoc.py рдореЗрдВ read_security_data рджреЗрдЦреЗрдВ), рд╣рдореЗрдВ SRAM рдореЗрдВ 0x80 рдкрд░ рд╕рднреА рд╕реБрд░рдХреНрд╖рд╛ рдмрд┐рдЯреНрд╕ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдЯ рдХреЛ рджреЛ рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдкрд░рд┐рдгрд╛рдо рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ: рд╕рдм рдХреБрдЫ "рдмрд╛рд╣рд░реА рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдЕрдХреНрд╖рдо" рдореЛрдб рдореЗрдВ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рди рдХреЗрд╡рд▓ рдпреВрдПрд╕рдмреА рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рд╕реЗ рдХреБрдЫ рднреА рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рднреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╣рд╛рдВ рдПрдХ ROM рдбрдореНрдкрд░ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдкреВрд░реА рдЪрд┐рдк рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд┐рдЯрд╛ рджреЗрдирд╛ рд╣реИред :-(



6. рдкрд╣рд▓рд╛ (рд╡рд┐рдлрд▓) рд╣рдорд▓рд╛: ROMX


рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд╛рд▓ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ opcodes рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП ROMX рдХреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рдлрд▓рддрд╛ рдХреА рдЕрдЪреНрдЫреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рд░реАрдбрдмреНрд▓реЙрдХ рдлрд╝рдВрдХреНрд╢рди, рдЬреЛ рдПрд╕рдЖрд░рдПрдо рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ (рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реИрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ рдЖрдИрдПрд╕рдПрд╕рдкреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, ROMX opcode рдореЗрдВ рд╕рдВрднрд╡рддрдГ рдРрд╕рд╛ рдЪреЗрдХ рдирд╣реАрдВ рд╣реИред рддреЛ, рдпрд╣рд╛рдБ рдкрд╛рдпрдерди рдХреЛрдб рд╣реИ (рдХреБрдЫ рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЕрд░рдбреВрдЗрдиреЛ рд╕реА рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж):


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

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред :-( рдмрд▓реНрдХрд┐, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣рдореЗрдВ рдЕрдкрдирд╛ рдСрдкреНрдХреЛрдб (0x28 0x30xx40) рдорд┐рд▓рддрд╛ рд╣реИ! рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд░реАрдб рдкреНрд░реЛрдЯреЗрдХреНрд╢рди рдХрд╛ рдПрдХ рддрддреНрд╡ рд╣реИред рдпрд╣ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдЯреНрд░рд┐рдХ рдХреА рддрд░рд╣ рд╣реИ: рдмрд╛рд╣рд░реА рдСрдкрдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп, ROM рдмрд╕ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдмрдлрд░ рдХреЗ рд▓рд┐рдПред



7. рджреВрд╕рд░рд╛ рд╣рдорд▓рд╛: рдХреЛрд▓реНрдб рд░реАрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЯреНрд░реЗрд╕


рдЪреВрдВрдХрд┐ ROMX рдЯреНрд░рд┐рдХ рдиреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдЯреНрд░рд┐рдХ рдХреЗ рдПрдХ рдФрд░ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ - рдЬреЛ рдХрд┐ "рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдкреНрд░реЛрдЯреЗрдХреНрд╢рди рдкрд░ рдмрд╣реБрдд рдЬрд╝реНрдпрд╛рджрд╛ рд▓рд╛рдЗрдЯрд┐рдВрдЧ рдмрд╣рд╛ рд░рд╣рд╛ рд╣реИ" рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред



7.1ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


CHECKSUM-SETUP рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реЗрдХреНрдЯрд░ ISSP рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИ:


 [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 рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд▓рдХреНрд╖реНрдп рдлрд╝реНрд▓реИрд╢ рдмреИрдВрдХ рдХреЗ рдЕрдиреБрд░реВрдк рдЗрд╕рдореЗрдВ рдереЛрдбрд╝реА рд╕реА рд╕реЗрдЯрд┐рдВрдЧ рдХрд░рдХреЗ)ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЪреЗрдХрд╕рдо рд╣реИ: рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдХреЛрдИ рдкрд░рд┐рд╖реНрдХреГрдд рд╕реАрдЖрд░рд╕реА quirksред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдПрдо 8 рд╕реА рдХреЛрд░ рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рд╕реЗрдЯ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ, рдореИрдВрдиреЗ рдпрд╣ рдорд╛рдирд╛ рдХрд┐ рдЪреЗрдХрд╕рдо рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп, рдордзреНрдпрд╡рд░реНрддреА рдорд╛рди рдЙрд╕реА рдЪрд░ рдореЗрдВ рддрдп рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рдЬреЛ рдЕрдВрддрддрдГ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдВрдЧреЗ: KEY1 (0xF8 / KEY2 (0xF9)ред


рддреЛ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдореЗрд░рд╛ рд╣рдорд▓рд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


  1. ISSP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред
  2. рд╣рдо рд╡реЗрдХреНрдЯрд░ рдЪреЗрдХ-рд╕реЗрдЯрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреЗрдХрд╕рдо рдХреА рдЧрдгрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
  3. рд╣рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рдЯреА рдХреЗ рдмрд╛рдж рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░рддреЗ рд╣реИрдВред
  4. рд╡рд░реНрддрдорд╛рди рдЪреЗрдХрд╕рдо рд╕реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реИрдо рдкрдврд╝реЗрдВред
  5. рдЪрд░рдг 3 рдФрд░ 4 рдХреЛ рджреЛрд╣рд░рд╛рдПрдВ, рд╣рд░ рдмрд╛рд░ рдЯреА рдмрдврд╝рд╛рдирд╛ред
  6. рд╣рдо рдкрд┐рдЫрд▓реЗ рдПрдХ рдЪреЗрдХрд╕рдо рд╕реА рдХреЛ рд╡рд░реНрддрдорд╛рди рд╕реЗ рдШрдЯрд╛рдХрд░ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рд╕реЗ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ: рдЖрд░рдВрднрд┐рдХ -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 (рдПрд╕рдЖрд░рдПрдо рдлрд╝рдВрдХреНрд╢рди 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. рдЪреЗрдХрд╕рдо рдЧрдгрдирд╛ (send_checksum_v) рдЪрд▓рд╛рдПрдВред
  3. рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕рдордп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ; рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреБрдХрд╕рд╛рди рджрд┐рдП рдЧрдП:
    • рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рдордп рддрдХ рд╣рддреНрдпрд╛ рдХреА, рдЬрдм рддрдХ рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рдХрд┐ рджреЗрд░реАрдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдХреЗрд╡рд▓ 16383 рдореАрдЯрд░ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рджреЗрд░реА рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рд╛ ;
    • рдФрд░ рдлрд┐рд░ рд╕реЗ рдЙрд╕реА рд╕рдордп рддрдХ рдорд╛рд░ рдбрд╛рд▓рд╛ рдЬрдм рддрдХ рдпрд╣ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рджреЗрд░реАрдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб, рдЕрдЧрд░ рдпрд╣ рдЕрдкрдиреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП 0 рд╕реЗ рдЧреБрдЬрд░ рдЧрдпрд╛, рддреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рдХрд╛рдо рдХрд┐рдпрд╛!
  4. рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЛрдб рдореЗрдВ рдкреАрдПрд╕рдУрд╕реА рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВ (рдХреЗрд╡рд▓ рд╢реБрд░реБрдЖрддреА рд╡реИрдХреНрдЯрд░ рднреЗрдЬреЗ рдмрд┐рдирд╛, рдореИрдЬрд┐рдХ рдирдВрдмрд░ рднреЗрдЬреЗрдВ)ред

рдкрд░рд┐рдгрд╛рдореА рдкрд╛рдпрдерди рдХреЛрдб:


 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 рдкрдврд╝рддрд╛ рд╣реИред

рдЗрд╕ рдХреЛрдб рдХреЛ 1 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдореЗрдВ 10 рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред 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 ╬╝ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рд╣рдо рдЗрд╕ рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрдпреБрдХреНрдд рд╕рдордп рдкрд░ рдЪреЗрдХрд╕рдо рдХреЗ рдореВрд▓реНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рд░рди рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рдЖрд╕рд╛рдиреА рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрд╡рдзрд┐ рд╣рдореЗрд╢рд╛ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдбрдВрдк рдХрд╛ рдЕрдВрдд рдХрдо рд╕рдЯреАрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд░рди рдХреЗ рд╕рд╛рде "рд╕рдордп рдореЗрдВ рдорд╣рддреНрд╡рд╣реАрди рд╡рд┐рдЪрд▓рди" рдХреЛ рд╕рдВрдХреНрд╖реЗрдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЧрдпрд╛ рд╣реИ:


 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 рдПрдордПрд╕ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдореЗрдВ рдПрдХ рдЪреЗрдХрд╕рдо рдбрдВрдк рд▓рд┐рдпрд╛ред рдлрд┐рд░ рдореИрдВрдиреЗ рдЧрд▓рдд рдкрд┐рдирдХреЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рдФрд░ рд╡рд╣реА рдХрд┐рдпрд╛ред


рдкрд░рд┐рдгрд╛рдо рдмрд╣реБрдд рд╕реБрдЦрдж рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдмрджрд▓рд╛рд╡ рд╣реБрдП рдереЗред рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ, рдореИрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдХрд┐ рдЪреЗрдХрд╕рдо 120,000 ╬╝s рдФрд░ 140,000 ╬╝s рджреЗрд░реА рдХреЗ рдмреАрдЪ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдХрд╣реАрдВ рдмрджрд▓ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЬреЛ "рдкрд┐рдирдХреЛрдб" рдорд┐рд▓рд╛, рд╡рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рдерд╛ - рджреЗрд░реАрдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп рдХреЗ рдХрд╛рд░рдг, рдЬреЛ 0 рд╣реЛрдиреЗ рдкрд░ рдЕрдЬреАрдм рдЪреАрдЬреЗрдВ рдХрд░рддрд╛ рд╣реИред


рдлрд┐рд░, рд▓рдЧрднрдЧ 3 рдШрдВрдЯреЗ рдмрд┐рддрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдЪреЗрдХрд╕рдо рдПрд╕рдЖрд░рдПрдо рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдкрд░ рдЗрдирдкреБрдЯ рдПрдХ рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЪреЗрдХрд╕рдо рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ! рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо 64-рдмрд╛рдЗрдЯ рдмреНрд▓реЙрдХ рдкрд░ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкрд┐рдирдХреЛрдб рдФрд░ "рдЧрд▓рдд рдкреНрд░рдпрд╛рд╕реЛрдВ" рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдкрддреЗ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдерд╛рдиреАрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдореЗрд░реЗ рд╢реБрд░реБрдЖрддреА рд░рдиреЛрдВ рдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рджрд┐рдП:



рддрдм рдореИрдВрдиреЗ рдкрд┐рдирдХреЛрдб рдХреЛ "123456" рд╕реЗ "1234567" рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛:



рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЧрд▓рдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдкрд┐рдирдХреЛрдб рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рдмреНрд▓реЙрдХ рдирдВрдмрд░ 126 рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЧрдП рд▓рдЧрддреЗ рд╣реИрдВред



7.5ред рд╣рдо рдмреНрд▓реЙрдХ рдирдВрдмрд░ 126 рдХреЗ рдбрдВрдк рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ


рдмреНрд▓реЙрдХ рдирдВрдмрд░ 126 рдХреЛ рдореЗрд░реЗ рдкреВрд░реЗ рдбрдВрдк рдореЗрдВ, 125x64x18 = 144000mks рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдЪреЗрдХрд╕рдо рдХреА рдЧрдгрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдХрд╣реАрдВ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрд╣ рдХрд╛рдлреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд▓рдЧрддрд╛ рд╣реИред рдлрд┐рд░, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрдИ рдЕрдорд╛рдиреНрдп рдбрдВрдк ("рд╕рдордп рдореЗрдВ рдорд╛рдореВрд▓реА рд╡рд┐рдЪрд▓рди" рдХреЗ рд╕рдВрдЪрдп рдХреЗ рдХрд╛рд░рдг) рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдпреЗ рдмрд╛рдЗрдЯреНрд╕ рдорд┐рд▓ рдЧрдП (145527 ╬╝s рдХреА рджреЗрд░реА рдХреЗ рд╕рд╛рде):



рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкрд┐рди рдХреЛрдб рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ! рдпреЗ рдорд╛рди рдмреЗрд╢рдХ 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, , тАУ , ┬лREcon Brussels 2017┬╗ .


, тАУ : SRAM, .



9.


, , ( ┬л┬╗) тАж (), !


Aigo? - HDD-, 2015 SyScan, HDD-, , . :-)


. 40 . ( ) ( ). 40 , . .

Source: https://habr.com/ru/post/hi455529/


All Articles