Aigo рд╕реНрд╡-рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯрд┐рдЩ рдмрд╛рд╣реНрдп HDD рдбреНрд░рд╛рдЗрднрд▓рд╛рдИ рдЙрд▓реНрдЯрд╛рдЙрдиреЗ рд░ рд╣реНрдпрд╛рдХ рдЧрд░реНрдиреЗред рднрд╛рдЧ реи: рд╕рд╛рдЗрдкреНрд░рд╕ PSoC рдмрд╛рдЯ рдбрдореНрдк рд▓рд┐рдБрджреИ

рдмрд╛рд╣реНрдп рд╕реНрд╡-рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯрд┐рдЩ рдбреНрд░рд╛рдЗрднрд╣рд░реВ рд╣реНрдпрд╛рдХ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рд▓реЗрдЦрдХреЛ рдпреЛ рджреЛрд╕реНрд░реЛ рд░ рдЕрдиреНрддрд┐рдо рднрд╛рдЧ рд╣реЛред рдорд▓рд╛рдИ рддрдкрд╛рдИрд▓рд╛рдИ рд╕рдореНрдЭрд╛рдЙрди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдПрдХ рд╕рд╣рдХрд░реНрдореАрд▓реЗ рднрд░реНрдЦрд░реИ рдорд▓рд╛рдИ рдПрдХ Patriot (Aigo) SK8671 рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрдн рд▓реНрдпрд╛рдП, рд░ рдореИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЙрд▓реНрдЯрд╛рдЙрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ, рд░ рдЕрдм рдо рдпрд╕рдмрд╛рдЯ рдХреЗ рдЖрдпреЛ рд╕рд╛рдЭрд╛ рдЧрд░реНрджреИрдЫреБред рдердк рдкрдвреНрдиреБ рдЕрдШрд┐, рдЕрд╡рд╢реНрдп рдкрдвреНрдиреБрд╣реЛрд╕реН рдкрд╣рд┐рд▓реЛ рднрд╛рдЧ рд▓реЗрдЦ

4. рд╣рд╛рдореА рдЖрдиреНрддрд░рд┐рдХ PSoC рдлреНрд▓реНрдпрд╛рд╕ рдбреНрд░рд╛рдЗрднрдмрд╛рдЯ рдбрдореНрдк рд▓рд┐рди рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВ
5. ISSP рдкреНрд░реЛрдЯреЛрдХрд▓
тАУ рел.резред ISSP рднрдиреЗрдХреЛ рдХреЗ рд╣реЛ
- рел.реиред Demystifying рднреЗрдХреНрдЯрд░рд╣рд░реВ
- рел.рейред PSoC рд╕рдВрдЧ рд╕рдВрдЪрд╛рд░
тАУ рел.рекред рдЕрди-рдЪрд┐рдк рджрд░реНрддрд╛рд╣рд░реВрдХреЛ рдкрд╣рд┐рдЪрд╛рди
тАУ рел.релред рд╕реБрд░рдХреНрд╖рд╛ рдмрд┐рдЯреНрд╕
6. рдкрд╣рд┐рд▓реЛ (рдЕрд╕рдлрд▓) рдЖрдХреНрд░рдордг: ROMX
7. рджреЛрд╕реНрд░реЛ рдЖрдХреНрд░рдордг: рдХреЛрд▓реНрдб рдмреБрдЯ рдЯреНрд░реЗрд╕рд┐рдЩ
тАУ рен.резред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
тАУ рен.реиред рдирддрд┐рдЬрд╛ рдкрдвреНрджреИ
тАУ рен.рейред рдлреНрд▓реИрд╢ рдмрд╛рдЗрдирд░реА рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг
тАУ рен.рекред PIN рдХреЛрдб рднрдгреНрдбрд╛рд░рдг рдареЗрдЧрд╛рдирд╛ рдЦреЛрдЬреНрджреИ
тАУ рен.рел рдмреНрд▓рдХ рдирдореНрдмрд░ резреирем рдХреЛ рдбрдореНрдк рд▓рд┐рдБрджреИ
тАУ рен.ремред PIN рдХреЛрдб рд░рд┐рдХрднрд░реА
8. рдЕрдм рдХреЗ рдЫ?
Con. рдирд┐рд╖реНрдХрд░реНрд╖

Aigo рд╕реНрд╡-рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯрд┐рдЩ рдмрд╛рд╣реНрдп HDD рдбреНрд░рд╛рдЗрднрд▓рд╛рдИ рдЙрд▓реНрдЯрд╛рдЙрдиреЗ рд░ рд╣реНрдпрд╛рдХ рдЧрд░реНрдиреЗред рднрд╛рдЧ реи: рд╕рд╛рдЗрдкреНрд░рд╕ PSoC рдмрд╛рдЯ рдбрдореНрдк рд▓рд┐рдБрджреИ


4. рд╣рд╛рдореА рдЖрдиреНрддрд░рд┐рдХ PSoC рдлреНрд▓реНрдпрд╛рд╕ рдбреНрд░рд╛рдЗрднрдмрд╛рдЯ рдбрдореНрдк рд▓рд┐рди рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВ

рддреНрдпрд╕реЛрднрдП, рд╕рдмреИ рдХреБрд░рд╛рд▓реЗ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫ (рдЬрд╕реНрддреИ рд╣рд╛рдореАрд▓реЗ [рдкрд╣рд┐рд▓реЛ рднрд╛рдЧ]() рдорд╛ рд╕реНрдерд╛рдкрд┐рдд рдЧрд░реЗрдХрд╛ рдЫреМрдВ) рдХрд┐ PIN рдХреЛрдб PSoC рдХреЛ рдлреНрд▓реНрдпрд╛рд╢ рдЧрд╣рд┐рд░рд╛рдЗрдорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫред рддреНрдпрд╕рдХрд╛рд░рдг, рд╣рд╛рдореАрд▓реЗ рдпреА рдлреНрд▓реИрд╢ рдЧрд╣рд┐рд░рд╛рдЗрд╣рд░реВ рдкрдвреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдЖрд╡рд╢реНрдпрдХ рдХрд╛рдордХреЛ рдЕрдЧрд╛рдбрд┐:

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

рддреНрдпрд╣рд╛рдБ рджреБрдИ рдард╛рдЙрдБрд╣рд░реВ рдЫрдиреН рдЬрд╣рд╛рдБ рдпрд╕рд▓реЗ рд╡реИрдз рдкрд┐рди рдХреЛрдб рдЦреЛрдЬреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЕрд░реНрде рджрд┐рдиреНрдЫ:

  • рдЖрдиреНрддрд░рд┐рдХ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА;
  • SRAM, рдЬрд╣рд╛рдБ рдкрд┐рди рдХреЛрдбрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реЗрдХреЛ рдкрд┐рди рдХреЛрдбрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрди рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдЕрдЧрд╛рдбрд┐ рд╣реЗрд░реНрджреИ, рдо рдиреЛрдЯ рдЧрд░реНрдиреЗрдЫреБ рдХрд┐ рдореИрд▓реЗ рдЕрдЭреИ рдкрдирд┐ рдЖрдиреНрддрд░рд┐рдХ PSoC рдлреНрд▓реНрдпрд╛рд╕ рдбреНрд░рд╛рдЗрднрдХреЛ рдбрдореНрдк рд▓рд┐рди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реЗрдХреЛ рдЫреБ - "рдХреЛрд▓реНрдб рдмреБрдЯ рдЯреНрд░реЗрд╕рд┐рдЩ" рднрдирд┐рдиреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрдХреНрд░рдордгрдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпрд╕рдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реАрд▓рд╛рдИ рдмрд╛рдЗрдкрд╛рд╕ рдЧрд░реНрджреИ - ISSP рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рдХрд╛рдЧрдЬрд╛рдд рдирднрдПрдХрд╛ рдХреНрд╖рдорддрд╛рд╣рд░реВ рдЙрд▓реНрдЯрд╛рдПрд░ред рдпрд╕рд▓реЗ рдорд▓рд╛рдИ рдкреНрд░рддреНрдпрдХреНрд╖ PIN рдХреЛрдб рдбрдореНрдк рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдпреЛред

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

рдЕрдиреНрддрд┐рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛрдб:

5. ISSP рдкреНрд░реЛрдЯреЛрдХрд▓

рел.резред ISSP рднрдиреЗрдХреЛ рдХреЗ рд╣реЛ

рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░рд╕рдБрдЧ "рд╕рдВрдЪрд╛рд░" рдХреЛ рдЕрд░реНрде рдлрд░рдХ рдЪреАрдЬрд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫ: "рд╡рд┐рдХреНрд░реЗрддрд╛рдмрд╛рдЯ рд╡рд┐рдХреНрд░реЗрддрд╛" рдПрдХ рд╕рд┐рд░рд┐рдпрд▓ рдкреНрд░реЛрдЯреЛрдХрд▓ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдорд╛рдЗрдХреНрд░реЛрдЪрд┐рдкрдХреЛ PIC рдХреЛ рд▓рд╛рдЧрд┐ ICSP) рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиред

рд╕рд╛рдЗрдкреНрд░рд╕рдХреЛ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЖрдлреНрдиреИ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдкреНрд░реЛрдЯреЛрдХрд▓ рдЫ, рдЬрд╕рд▓рд╛рдИ ISSP (рдЗрди-рд╕рд┐рд╕реНрдЯрдо рд╕рд┐рд░рд┐рдпрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рдкреНрд░реЛрдЯреЛрдХрд▓) рднрдирд┐рдиреНрдЫ, рдЬреБрди рдЖрдВрд╢рд┐рдХ рд░реВрдкрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫред рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛. рдкреЗрдЯреЗрдиреНрдЯ US7185162 рдХреЗрд╣реА рдЬрд╛рдирдХрд╛рд░реА рдкрдирд┐ рджрд┐рдиреНрдЫ ред рддреНрдпрд╣рд╛рдБ HSSP рднрдирд┐рдиреЗ OpenSource рд╕рдорддреБрд▓реНрдп рдкрдирд┐ рдЫ (рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдХреЗрд╣рд┐ рдкрдЫрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ)ред ISSP рд▓реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдЧрд░реНрджрдЫ:

  • PSoC рд░рд┐рдмреБрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  • рдпрд╕ PSoC рдХреЛ рд╕рд┐рд░рд┐рдпрд▓ рдбрд╛рдЯрд╛ рдкрд┐рдирдорд╛ рдЬрд╛рджреБрдИ рдирдореНрдмрд░ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН; рдмрд╛рд╣реНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рдореЛрдб рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрди;
  • рдЖрджреЗрд╢рд╣рд░реВ рдкрдард╛рдЙрдиреБрд╣реЛрд╕реН, рдЬреБрди "рднреЗрдХреНрдЯрд░" рднрдирд┐рдиреЗ рд▓рд╛рдореЛ рдмрд┐рдЯ рд╕реНрдЯреНрд░рд┐рдЩрд╣рд░реВ рд╣реБрдиреНред

ISSP рдХрд╛рдЧрдЬрд╛рддрд▓реЗ рдпреА рднреЗрдХреНрдЯрд░рд╣рд░реВрд▓рд╛рдИ рдХреЗрд╡рд▓ рдереЛрд░реИ рдореБрдЯреНрдареАрднрд░ рдЖрджреЗрд╢рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджрдЫ:

  • рдкреНрд░рд╛рд░рдореНрдн-рез
  • рдкреНрд░рд╛рд░рдореНрдн-рез
  • Initialize-3 (3V рд░ 5V рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ)
  • ID-SETUP
  • READ-ID-WORD
  • SET-BLOCK-NUM: 10011111010dddddd111, рдЬрд╣рд╛рдБ dddddddd=block #
  • рдмрд▓реНрдХ рдореЗрдЯрд╛рдЙрдиреБрд╣реЛрд╕реН
  • рдХрд╛рд░реНрдпрдХреНрд░рдо-рдмреНрд▓рдХ
  • рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН-рд╕реЗрдЯрдЕрдк
  • READ-BYTE: 10110aaaaaZDDDDDDDZ1, рдЬрд╣рд╛рдБ DDDDDDDD = рдбреЗрдЯрд╛ рдмрд╛рд╣рд┐рд░, aaaaaa = рдареЗрдЧрд╛рдирд╛ (6 рдмрд┐рдЯ)
  • WRITE-BYTE: 10010aaaaaddddd111, рдЬрд╣рд╛рдБ dddddddd = data in, aaaaaa = рдареЗрдЧрд╛рдирд╛ (6 рдмрд┐рдЯ)
  • рд╕реБрд░рдХреНрд╖рд┐рдд
  • рдЪреЗрдХрд╕рдо-рд╕реЗрдЯрдЕрдк
  • READ-CHECSUM: 10111111001ZDDDDDDDZ110111111000ZDDDDDDDZ1, рдЬрд╣рд╛рдБ DDDDDDDDDDDDDDDDD = рдбреЗрдЯрд╛ рдмрд╛рд╣рд┐рд░: рдЙрдкрдХрд░рдг рдЪреЗрдХрд╕рдо
  • рдмреНрд▓рдХ рдореЗрдЯрд╛рдЙрдиреБрд╣реЛрд╕реН

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, Initialize-2 рдХреЛ рд▓рд╛рдЧрд┐ рднреЗрдХреНрдЯрд░:

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

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

рел.реиред Demystifying рднреЗрдХреНрдЯрд░рд╣рд░реВ

рдпрд╣рд╛рдБ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБрд╣реЛрд╕реНред рдкреНрд░рд╛рд░рдореНрднрдорд╛, рдореИрд▓реЗ рдпреА рднреЗрдХреНрдЯрд░рд╣рд░реВ M8C рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрдХреЛ рдХрдЪреНрдЪрд╛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдерд┐рдП рднрдиреА рдЕрдиреБрдорд╛рди рдЧрд░реЗ, рддрд░ рдпреЛ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдЬрд╛рдБрдЪ рдЧрд░реЗрдкрдЫрд┐, рдореИрд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдП рдХрд┐ рдЕрдкрд░реЗрд╕рдирд╣рд░реВрдХреЛ рдЕрдкрдХреЛрдбрд╣рд░реВ рдореЗрд▓ рдЦрд╛рдБрджреИрдирдиреНред

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

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

  • 00h:SWBootReset
  • 01h: ReadBlock
  • 02h: WriteBlock
  • режрей рдШрдиреНрдЯрд╛: рдЗрд░реЗрдЬрдмреНрд▓рдХ
  • 06h: TableRead
  • 07h: CheckSum
  • режрео рдШрдиреНрдЯрд╛: рдХреНрдпрд╛рд▓рд┐рдмреНрд░реЗрдЯреж
  • режрео рдШрдиреНрдЯрд╛: рдХреНрдпрд╛рд▓рд┐рдмреНрд░реЗрдЯреж

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

  • 100 => "рд░реЗрдо"
  • 101 => "rdmem"
  • 110 => "wrreg"
  • 111 => "rdreg"

рдпрджреНрдпрдкрд┐, рдЕрди-рдЪрд┐рдк рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдХреЛ рдкреВрд░реНрдг рдмреБрдЭрд╛рдЗ PSoC рд╕рдБрдЧ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдЮреНрдЪрд╛рд░ рдорд╛рд░реНрдлрдд рдорд╛рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рел.рейред PSoC рд╕рдВрдЧ рд╕рдВрдЪрд╛рд░

рдбрд░реНрдХ Petrautsky рдкрд╣рд┐рд▓реЗ рдиреИ рдЫ рдкреЛрд░реНрдЯ рдЧрд░рд┐рдПрдХреЛ Arduino рдорд╛ Cypress рдХреЛ HSSP рдХреЛрдб, рдореИрд▓реЗ рдХрд┐рдмреЛрд░реНрдб рдмреЛрд░реНрдбрдХреЛ ISSP рдХрдиреЗрдХреНрдЯрд░рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди Arduino Uno рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдВред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдореЗрд░реЛ рдЕрдиреБрд╕рдиреНрдзрд╛рдирдХреЛ рдХреНрд░рдордорд╛, рдореИрд▓реЗ рдбрд┐рд░реНрдХрдХреЛ рдХреЛрдб рдПрдХрджрдо рдереЛрд░реИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрдВред рддрдкрд╛рдИрдВрд▓реЗ GitHub рдорд╛ рдореЗрд░реЛ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: рдпрд╣рд╛рдБ рд░ рдореЗрд░реЛ рднрдгреНрдбрд╛рд░рдорд╛ Arduino рд╕рдБрдЧ рд╕рдЮреНрдЪрд╛рд░ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкрд╛рдЗрдерди рд▓рд┐рдкрд┐ cypress_psoc_tools.

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

рддреНрдпрд╕рдкрдЫрд┐ рдореИрд▓реЗ рдореЗрдореЛрд░реА/рд░реЗрдЬрд┐рд╕реНрдЯрд░рд╣рд░реВ рд▓реЗрдЦреНрди рд░ рдкрдвреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЖрдлреНрдиреИ рдХреЗрд╣реА рд╕рд░рд▓ рднреЗрдХреНрдЯрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдВред рдлреНрд▓реНрдпрд╛рд╕ рдбреНрд░рд╛рдЗрдн рд╕реБрд░рдХреНрд╖рд┐рдд рднрдП рддрд╛рдкрдирд┐ рд╣рд╛рдореА рд╕рдореНрдкреВрд░реНрдг SROM рдкрдвреНрди рд╕рдХреНрдЫреМрдВ рднрдиреЗрд░ рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН!

рел.рекред рдЕрди-рдЪрд┐рдк рджрд░реНрддрд╛рд╣рд░реВрдХреЛ рдкрд╣рд┐рдЪрд╛рди

"рдбрд┐рд╕рд╕реЗрдореНрдмрд▓" рднреЗрдХреНрдЯрд░рд╣рд░реВ рд╣реЗрд░реЗрдкрдЫрд┐, рдореИрд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдПрдБ рдХрд┐ рдпрдиреНрддреНрд░рд▓реЗ M0C рдУрдкрдХреЛрдбрд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЕрдкреНрд░рдорд╛рдгрд┐рдд рд░реЗрдЬрд┐рд╕реНрдЯрд░рд╣рд░реВ (8xF0-8xFA) рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рдЬреБрди рд╕реБрд░рдХреНрд╖рд╛рд▓рд╛рдИ рдмрд╛рдЗрдкрд╛рд╕ рдЧрд░реЗрд░ рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдкрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫред рдпрд╕рд▓реЗ рдорд▓рд╛рдИ "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    # ╨Э╨╡╨┤╨╛╨║╤Г╨╝╨╝╨╡╨╜╤В╨╕╤А╨╛╨▓╨░╨╜╨╜╨░╤П ╨╛╨┐╨╡╤А╨░╤Ж╨╕╤П: ╨▓╤Л╨┐╨╛╨╗╨╜╨╕╤В╤М ╨▓╨╜╨╡╤И╨╜╨╕╨╣ ╨╛╨┐╨║╨╛╨┤

рел.рел рд╕реБрд░рдХреНрд╖рд╛ рдмрд┐рдЯреНрд╕

рдпрд╕ рдЪрд░рдгрдорд╛ рдо рдкрд╣рд┐рд▓реЗ рдиреИ PSoC рд╕рдБрдЧ рдХреБрд░рд╛рдХрд╛рдиреА рдЧрд░реНрди рд╕рдХреНрдЫреБ, рддрд░ рдорд╕рдБрдЧ рдЕрдЭреИ рдкрдирд┐ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрднрдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рдмрд┐рдЯрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рднрд░рдкрд░реНрджреЛ рдЬрд╛рдирдХрд╛рд░реА рдЫреИрдиред рдо рдпрд╕ рддрдереНрдпрдмрд╛рдЯ рдзреЗрд░реИ рдЫрдХреНрдХ рдкрд░реЗрдВ рдХрд┐ рд╕рд╛рдЗрдкреНрд░рд╕рд▓реЗ рдЙрдкрдХрд░рдгрдХреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдХреНрд░рд┐рдп рдЫ рдХрд┐ рдЫреИрди рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдХреБрдиреИ рдкрдирд┐ рдорд╛рдзреНрдпрдо рдкреНрд░рджрд╛рди рдЧрд░реНрджреИрдиред рдбрд░реНрдХрд▓реЗ рдЖрдлреНрдиреЛ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЬрд╛рд░реА рдЧрд░реЗрдкрдЫрд┐ Cypress рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ HSSP рдХреЛрдб рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рднрдиреНрдиреЗ рдХреБрд░рд╛ рдмреБрдЭреНрди рдореИрд▓реЗ Google рдорд╛ рдЧрд╣рд┐рд░реЛ рдЦреЛрдЬ рдЧрд░реЗрдВред рд░ рддреНрдпрд╕реИрд▓реЗ! рдпреЛ рдирдпрд╛рдБ рднреЗрдХреНрдЯрд░ рджреЗрдЦрд╛ рдкрд░реНрдпреЛ:

[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 рдорд╛ рд╕рдмреИ рд╕реБрд░рдХреНрд╖рд╛ рдмрд┐рдЯрд╣рд░реВ рдкрд╛рдЙрдБрдЫреМрдВ, рдЬрд╣рд╛рдБ рдкреНрд░рддрд┐ рд╕реБрд░рдХреНрд╖рд┐рдд рдмреНрд▓рдХрдорд╛ рджреБрдИрд╡рдЯрд╛ рдмрд┐рдЯрд╣рд░реВ рдЫрдиреНред

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

6. рдкрд╣рд┐рд▓реЛ (рдЕрд╕рдлрд▓) рдЖрдХреНрд░рдордг: ROMX

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

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

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢ рдпреЛ рдХреЛрдб рдХрд╛рдо рдЧрд░реНрджреИрдиред ЁЯЩБ рд╡рд╛ рдмрд░реБ рдпрд╕рд▓реЗ рдХрд╛рдо рдЧрд░реНрдЫ, рддрд░ рдЖрдЙрдЯрдкреБрдЯрдорд╛ рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдЖрдлреНрдиреИ рдЕрдкрдХреЛрдбрд╣рд░реВ рдкрд╛рдЙрдБрдЫреМрдВ (0x28 0x30 0x40)! рдорд▓рд╛рдИ рд▓рд╛рдЧреНрджреИрди рдХрд┐ рдЙрдкрдХрд░рдгрдХреЛ рд╕рдореНрдмрдиреНрдзрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрдвреНрдиреЗ рд╕реБрд░рдХреНрд╖рд╛рдХреЛ рдПрдХ рддрддреНрд╡ рд╣реЛред рдпреЛ рдПрдХ рдИрдиреНрдЬрд┐рдирд┐рдпрд░рд┐рдЩреН рдЪрд╛рд▓ рдЬрд╕реНрддреИ рдЫ: рдмрд╛рд╣реНрдп opcodes рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрд╛, ROM рдмрд╕ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдмрдлрд░ рдорд╛ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рд╣реБрдиреНрдЫред

7. рджреЛрд╕реНрд░реЛ рдЖрдХреНрд░рдордг: рдХреЛрд▓реНрдб рдмреБрдЯ рдЯреНрд░реЗрд╕рд┐рдЩ

ROMX рдЪрд╛рд▓рд▓реЗ рдХрд╛рдо рдирдЧрд░реЗрдХреЛрд▓реЗ, рдореИрд▓реЗ рдпрд╕ рдЪрд╛рд▓рдХреЛ рдЕрд░реНрдХреЛ рднрд┐рдиреНрдирддрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╕реЛрдЪреНрди рдерд╛рд▓реЗрдБ - рдкреНрд░рдХрд╛рд╢рдирдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ "рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░рдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рд╕реБрд░рдХреНрд╖рд╛рдорд╛ рдзреЗрд░реИ рд▓рд╛рдЗрдЯ рдмрд╣рд╛рдЙрдБрджреИ".

рен.резред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

ISSP рдХрд╛рдЧрдЬрд╛рддрд▓реЗ CHECKSUM-SETUP рдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рдореНрди рднреЗрдХреНрдЯрд░ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ:

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

рдпрд╕рд▓реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛ SROM рдкреНрд░рдХрд╛рд░реНрдп 0x07 рдХрд▓ рдЧрд░реНрджрдЫ, рдЬрд╕реНрддреИ рджрд╕реНрддрд╛рд╡реЗрдЬрдорд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХреЛ рдЫ (рдЗрдЯрд╛рд▓рд┐рдХ рдорд╛рдЗрди):

рдпреЛ рдкреНрд░рдХрд╛рд░реНрдп рдЪреЗрдХрд╕рдо рдкреНрд░рдорд╛рдгреАрдХрд░рдгред рдпрд╕рд▓реЗ рд╢реВрдиреНрдпрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реА рдПрдЙрдЯрд╛ рдлреНрд▓реНрдпрд╛рд╕ рдмреИрдВрдХрдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛-рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдмреНрд▓рдХрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛рдХреЛ 16-рдмрд┐рдЯ рдЪреЗрдХрд╕рдо рдЧрдгрдирд╛ рдЧрд░реНрдЫред BLOCKID рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдЪреЗрдХрд╕рдо рдЧрдгрдирд╛ рдЧрд░реНрджрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗ рдмреНрд▓рдХрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдкрд╛рд╕ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред "1" рдХреЛ рдорд╛рдирд▓реЗ рдмреНрд▓рдХ рд╢реВрдиреНрдпрдХреЛ рд▓рд╛рдЧрд┐ рдЪреЗрдХрд╕рдо рдорд╛рддреНрд░ рдЧрдгрдирд╛ рдЧрд░реНрдиреЗрдЫ; рдЬрдмрдХрд┐ "0" рд▓реЗ рдлреНрд▓реНрдпрд╛рд╢ рдмреИрдВрдХрдХреЛ рд╕рдмреИ 256 рдмреНрд▓рдХрд╣рд░реВрдХреЛ рдХреБрд▓ рдЪреЗрдХрд╕рдо рдЧрдгрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫред 16-рдмрд┐рдЯ рдЪреЗрдХрд╕рдо KEY1 рд░ KEY2 рдорд╛рд░реНрдлрдд рдлрд┐рд░реНрддрд╛ рдЧрд░рд┐рдиреНрдЫред KEY1 рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд▓реЗ рдЪреЗрдХрд╕рдордХреЛ рдХрдо-рдЕрд░реНрдбрд░ 8 рдмрд┐рдЯрд╣рд░реВ рднрдгреНрдбрд╛рд░ рдЧрд░реНрджрдЫ, рд░ KEY2 рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд▓реЗ рдЙрдЪреНрдЪ-рдЕрд░реНрдбрд░ 8 рдмрд┐рдЯрд╣рд░реВ рднрдгреНрдбрд╛рд░ рдЧрд░реНрджрдЫред рдзреЗрд░реИ рдлреНрд▓реНрдпрд╛рд╕ рдмреИрдВрдХрд╣рд░реВ рднрдПрдХрд╛ рдпрдиреНрддреНрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рдЪреЗрдХрд╕рдо рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рддреНрдпреЗрдХрдХреЛ рд▓рд╛рдЧрд┐ рдЫреБрдЯреНрдЯреИ рдмреЛрд▓рд╛рдЗрдиреНрдЫред рдпрд╕рд▓реЗ рдХрд╛рдо рдЧрд░реНрдиреЗ рдмреИрдВрдХ рдирдореНрдмрд░ FLS_PR1 рджрд░реНрддрд╛рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ (рд▓рдХреНрд╖реНрдп рдлреНрд▓реНрдпрд╛рд╕ рдмреИрдВрдХрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдмрд┐рдЯ рд╕реЗрдЯ рдЧрд░реЗрд░)ред

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

рддреНрдпрд╕реИрд▓реЗ рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛ рдореЗрд░реЛ рдЖрдХреНрд░рдордг рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

  1. рд╣рд╛рдореА ISSP рдорд╛рд░реНрдлрдд рдЬрдбрд╛рди рдЧрд░реНрдЫреМрдВред
  2. рд╣рд╛рдореАрд▓реЗ CHECKSUM-SETUP рднреЗрдХреНрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЪреЗрдХрд╕рдо рдЧрдгрдирд╛ рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВред
  3. рд╣рд╛рдореАрд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рдкрдЫрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рд░рд┐рдмреБрдЯ рдЧрд░реНрдЫреМрдВред
  4. рд╣рд╛рдореАрд▓реЗ рд╣рд╛рд▓рдХреЛ рдЪреЗрдХрд╕рдо рд╕реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди RAM рдкрдвреНрдЫреМрдВред
  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

рдпреЛ рдХреЛрдбрд▓реЗ 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();

  1. checkum_delay рдкрдвреНрдиреБрд╣реЛрд╕реНред
  2. рдЪреЗрдХрд╕рдо рдЧрдгрдирд╛ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН (send_checksum_v)ред
  3. рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордпрдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреБрд╣реЛрд╕реН; рдирд┐рдореНрди рдХрдордЬреЛрд░реАрд╣рд░реВрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ:
    • рдореИрд▓реЗ рдзреЗрд░реИ рд╕рдордп рдмрд░реНрдмрд╛рдж рдЧрд░реЗрдВ рдЬрдм рд╕рдореНрдо рдореИрд▓реЗ рдпреЛ рдерд╛рд╣рд╛ рдкрд╛рдП рдХрд┐ рдпреЛ рдХреЗ рд╣реБрдиреНрдЫ рдврд┐рд▓рд╛рдЗ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХреЗрдиреНрдб 16383 ╬╝s рднрдиреНрджрд╛ рдмрдврд┐ рдврд┐рд▓рд╛рдЗ рд╕рдВрдЧ рдорд╛рддреНрд░ рд╕рд╣реА рдХрд╛рдо рдЧрд░реНрджрдЫ;
    • рд░ рддреНрдпрд╕рдкрдЫрд┐ рдлреЗрд░рд┐ рдЙрд╕реНрддреИ рд╕рдордп рдорд╛рд░реНрдпреЛ рдЬрдмрд╕рдореНрдо рдореИрд▓реЗ рдврд┐рд▓рд╛рдЗ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХреЗрдиреНрдбрд╣рд░реВ рдкрддреНрддрд╛ рдирд▓рд╛рдЧреЗрдорд╛, рдпрджрд┐ реж рд▓рд╛рдИ рдЗрдирдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ рдкрд╛рд╕ рдЧрд░рд┐рдпреЛ рднрдиреЗ, рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЧрд▓рдд рдХрд╛рдо рдЧрд░реНрджрдЫ!
  4. PSoC рд▓рд╛рдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рдореЛрдбрдорд╛ рд░рд┐рдмреБрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рд╣рд╛рдореА рдХреЗрд╡рд▓ рдЬрд╛рджреБрдИ рдирдореНрдмрд░ рдкрдард╛рдЙрдБрдЫреМрдВ, рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рднреЗрдХреНрдЯрд░рд╣рд░реВ рдирдкрдард╛рдИ)ред

рдкрд╛рдЗрдердирдорд╛ рдЕрдиреНрддрд┐рдо рдХреЛрдб:

for delay in range(0, 150000):  # ╨╖╨░╨┤╨╡╤А╨╢╨║╨░ ╨▓ ╨╝╨╕╨║╤А╨╛╤Б╨╡╨║╤Г╨╜╨┤╨░╤Е
    for i in range(0, 10):      # ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╤Б╤З╨╕╤В╤Л╨▓╨░╨╜╨╕╤П ╨┤╨╗╤П ╨║╨░╨╢╨┤╨╛╨╣╨╕╨╖ ╨╖╨░╨┤╨╡╤А╨╢╨╡╨║
        try:
            reset_psoc(quiet=True)  # ╨┐╨╡╤А╨╡╨╖╨░╨│╤А╤Г╨╖╨║╨░ ╨╕ ╨▓╤Е╨╛╨┤ ╨▓ ╤А╨╡╨╢╨╕╨╝ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╨╛╨▓╨░╨╜╨╕╤П
            send_vectors()      # ╨╛╤В╨┐╤А╨░╨▓╨║╨░ ╨╕╨╜╨╕╤Ж╨╕╨░╨╗╨╕╨╖╨╕╤А╤Г╤О╤Й╨╕╤Е ╨▓╨╡╨║╤В╨╛╤А╨╛╨▓
            ser.write("x85"+struct.pack(">I", delay)) # ╨▓╤Л╤З╨╕╤Б╨╗╨╕╤В╤М ╨║╨╛╨╜╤В╤А╨╛╨╗╤М╨╜╤Г╤О ╤Б╤Г╨╝╨╝╤Г + ╨┐╨╡╤А╨╡╨╖╨░╨│╤А╤Г╨╖╨╕╤В╤М╤Б╤П ╨┐╨╛╤Б╨╗╨╡ ╨╖╨░╨┤╨╡╤А╨╢╨║╨╕
            res = ser.read(1)       # ╤Б╤З╨╕╤В╨░╤В╤М arduino ACK
        except Exception as e:
            print e
            ser.close()
            os.system("timeout -s KILL 1s picocom -b 115200 /dev/ttyACM0 2>&1 > /dev/null")
            ser = serial.Serial('/dev/ttyACM0', 115200, timeout=0.5) # ╨╛╤В╨║╤А╤Л╤В╤М ╨┐╨╛╤Б╨╗╨╡╨┤╨╛╨▓╨░╤В╨╡╨╗╤М╨╜╤Л╨╣ ╨┐╨╛╤А╤В
            continue
        print "%05d %02X %02X %02X" % (delay,      # ╤Б╤З╨╕╤В╨░╤В╤М RAM-╨▒╨░╨╣╤В╤Л
                read_regb(0xf1),
                read_ramb(0xf8),
                read_ramb(0xf9))

рд╕рдВрдХреНрд╖реЗрдкрдорд╛, рдпреЛ рдХреЛрдбрд▓реЗ рдХреЗ рдЧрд░реНрдЫ:

  1. PSoC рд░рд┐рдмреБрдЯ рдЧрд░реНрджрдЫ (рд░ рдпрд╕рд▓рд╛рдИ рдЬрд╛рджреБрдИ рдирдореНрдмрд░ рдкрдард╛рдЙрдБрдЫ)ред
  2. рдкреВрд░реНрдг рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рднреЗрдХреНрдЯрд░рд╣рд░реВ рдкрдард╛рдЙрдБрдЫред
  3. Arduino рдкреНрд░рдХрд╛рд░реНрдп Cmnd_STK_START_CSUM (0x85) рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрджрдЫ, рдЬрд╣рд╛рдБ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХреЗрдиреНрдбрдорд╛ рднрдПрдХреЛ рдврд┐рд▓рд╛рдЗрд▓рд╛рдИ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдХреЛ рд░реВрдкрдорд╛ рдкрд╛рд╕ рдЧрд░рд┐рдиреНрдЫред
  4. рдЪреЗрдХрд╕рдо (0xF8 рд░ 0xF9) рд░ рдХрд╛рдЧрдЬрд╛рдд рдирднрдПрдХреЛ рджрд░реНрддрд╛ 0xF1 рдкрдвреНрдЫред

рдпреЛ рдХреЛрдб 10 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХреЗрдиреНрдбрдорд╛ 1 рдкрдЯрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫред 0xF1 рдпрд╣рд╛рдБ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐рдирднрдиреЗ рдпреЛ рдорд╛рддреНрд░ рджрд░реНрддрд╛ рдерд┐рдпреЛ рдЬреБрди рдЪреЗрдХрд╕рдо рдЧрдгрдирд╛ рдЧрд░реНрджрд╛ рдкрд░рд┐рд╡рд░реНрддрди рднрдпреЛред рд╕рд╛рдпрдж рдпреЛ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рддрд░реНрдХ рдПрдХрд╛рдЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдХреЗрд╣рд┐ рдкреНрд░рдХрд╛рд░рдХреЛ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рд╣реЛред рдореИрд▓реЗ рдкрд┐рдХреЛрдХрдо рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Arduino рд░рд┐рд╕реЗрдЯ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХреЛ рдмрджрд╕реВрд░рдд рд╣реНрдпрд╛рдХрд▓рд╛рдИ рдиреЛрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЬрдм Arduino рд▓реЗ рдЬреАрд╡рдирдХрд╛ рд╕рдВрдХреЗрддрд╣рд░реВ рджреЗрдЦрд╛рдЙрди рд░реЛрдХреНрдЫ (рдХрд┐рди рдерд╛рд╣рд╛ рдЫреИрди)ред

рен.реиред рдирддрд┐рдЬрд╛ рдкрдвреНрджреИ

рдкрд╛рдЗрдерди рд▓рд┐рдкрд┐рдХреЛ рдирддрд┐рдЬрд╛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ (рдкрдвреНрди рдпреЛрдЧреНрдпрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд░рд▓реАрдХреГрдд):

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

рддреНрдпреЛ рднрдирд┐рдПрдХреЛ рдЫ, рд╣рд╛рдореАрд╕рдБрдЧ рд╕рдорд╕реНрдпрд╛ рдЫ: рд╣рд╛рдореА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪреЗрдХрд╕рдорд╕рдБрдЧ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ, рдПрдХ рдирд▓ рдмрд╛рдЗрдЯрд▓реЗ рдкрдвреЗрдХреЛ рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИрдиред рдпрджреНрдпрдкрд┐, рд╕рдореНрдкреВрд░реНрдг рдЧрдгрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (реорезрепреи рдмрд╛рдЗрдЯреНрд╕) рд▓реЗ реж.резрекренрео рд╕реЗрдХреЗрдиреНрдб рд▓рд┐рдиреНрдЫ (рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рдпреЛ рдЪрд▓рд╛рдЙрдБрджрд╛ рдЕрд▓рд┐рдХрддрд┐ рднрд┐рдиреНрдирддрд╛ рд╕рд╣рд┐рдд), рдЬреБрди рд▓рдЧрднрдЧ резрео.режрек ╬╝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 рдШрдгреНрдЯрд╛ рд╣реЛред

рен.рейред рдлреНрд▓реИрд╢ рдмрд╛рдЗрдирд░реА рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг

рдореИрд▓реЗ рдЕрд╣рд┐рд▓реЗрд╕рдореНрдо рдХреЛрдб рд▓реЗрдЦреЗрдХреЛ рдЫреИрди рдЬреБрди рдлреНрд▓реНрдпрд╛рд╕ рдбреНрд░рд╛рдЗрднрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдбрд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреЗрдЫ, рд╕рдмреИ рд╕рдордп рд╡рд┐рдЪрд▓рдирд╣рд░реВрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИред рдЬреЗ рд╣реЛрд╕реН, рдореИрд▓реЗ рдпрд╕ рдХреЛрдбрдХреЛ рд╕реБрд░реБрд╡рд╛рддрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдЧрд░реЗрдХреЛ рдЫреБред рдореИрд▓реЗ рдпреЛ рд╕рд╣рд┐ рддрд░рд┐рдХрд╛рд▓реЗ рдЧрд░реЗ рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди, рдореИрд▓реЗ 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

рдПрдХрджрдореИ рдкреНрд░рд╢рдВрд╕рдиреАрдп рджреЗрдЦрд┐рдиреНрдЫ!

рен.рекред PIN рдХреЛрдб рднрдгреНрдбрд╛рд░рдг рдареЗрдЧрд╛рдирд╛ рдЦреЛрдЬреНрджреИ

рдЕрдм рд╣рд╛рдореАрд▓реЗ рдЖрд╡рд╢реНрдпрдХ рд╕рдордпрдорд╛ рдЪреЗрдХрд╕рдо рдкрдвреНрди рд╕рдХреНрдЫреМрдВ, рд╣рд╛рдореА рд╕рдЬрд┐рд▓реИ рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рдХрд┐ рдпреЛ рдХрд╕рд░реА рд░ рдХрд╣рд╛рдБ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫ рдЬрдм рд╣рд╛рдореА:

  • рдЧрд▓рдд рдкрд┐рди рдХреЛрдб рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  • рдкрд┐рди рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдкрд╣рд┐рд▓реЗ, рдЕрдиреБрдорд╛рдирд┐рдд рднрдгреНрдбрд╛рд░рдг рдареЗрдЧрд╛рдирд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди, рдореИрд▓реЗ рд░рд┐рдмреБрдЯ рдкрдЫрд┐ 10 ms рд╡реГрджреНрдзрд┐рдорд╛ рдЪреЗрдХрд╕рдо рдбрдореНрдк рд▓рд┐рдПрдБред рддреНрдпрд╕рдкрдЫрд┐ рдореИрд▓реЗ рдЧрд▓рдд PIN рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реЗрдВ рд░ рддреНрдпрд╕реИ рдЧрд░реЗрдВред

рдкрд░рд┐рдгрд╛рдо рдзреЗрд░реИ рд╕реБрдЦрдж рдерд┐рдПрди, рдХрд┐рдирдХрд┐ рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдерд┐рдПред рддрд░ рдЕрдиреНрддрдорд╛ рдореИрд▓реЗ рдЪреЗрдХрд╕рдо 120000 ┬╡s рд░ 140000 ┬╡s рдврд┐рд▓рд╛рдЗрдХреЛ рдмреАрдЪрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХреЛ рдХреБрд░рд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рд╕рдХреНрд╖рдо рднрдПрдБред рддрд░ рдореИрд▓реЗ рддреНрдпрд╣рд╛рдБ рджреЗрдЦрд╛рдПрдХреЛ "рдкрд┐рдирдХреЛрдб" рдкреВрд░реНрдгрддрдпрд╛ рдЧрд▓рдд рдерд┐рдпреЛ - рдврд┐рд▓рд╛рдЗ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХреЗрдиреНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдХрд▓рд╛рдХреГрддрд┐рдХреЛ рдХрд╛рд░рдгрд▓реЗ, рдЬреБрди реж рд▓рд╛рдИ рдкрд╛рд╕ рдЧрд░реНрджрд╛ рдЕрдиреМрдареЛ рдЪреАрдЬрд╣рд░реВ рдЧрд░реНрджрдЫред

рддреНрдпрд╕рдкрдЫрд┐, рд▓рдЧрднрдЧ 3 рдШрдгреНрдЯрд╛ рдмрд┐рддрд╛рдПрдкрдЫрд┐, рдореИрд▓реЗ рд╕рдореНрдЭреЗрдВ рдХрд┐ SROM рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдЪреЗрдХрд╕рдорд▓реЗ рдЗрдирдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ рдПрдЙрдЯрд╛ рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ рдЬрд╕рд▓реЗ рдЪреЗрдХрд╕рдордХрд╛ рд▓рд╛рдЧрд┐ рдмреНрд▓рдХрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫ! рддреНрдпреЛред рд╣рд╛рдореА PIN рдХреЛрдбрдХреЛ рднрдгреНрдбрд╛рд░рдг рдареЗрдЧрд╛рдирд╛ рд░ "рдЧрд▓рдд рдкреНрд░рдпрд╛рд╕рд╣рд░реВ" рдХрд╛рдЙрдиреНрдЯрд░рд▓рд╛рдИ 64-рдмрд╛рдЗрдЯ рдмреНрд▓рдХрд╕рдореНрдордХреЛ рд╢реБрджреНрдзрддрд╛рдХрд╛ рд╕рд╛рде рд╕рдЬрд┐рд▓реИ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред

рдореЗрд░реЛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд░рдирд▓реЗ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдЙрддреНрдкрд╛рджрди рдЧрд░реНрдпреЛ:

Aigo рд╕реНрд╡-рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯрд┐рдЩ рдмрд╛рд╣реНрдп HDD рдбреНрд░рд╛рдЗрднрд▓рд╛рдИ рдЙрд▓реНрдЯрд╛рдЙрдиреЗ рд░ рд╣реНрдпрд╛рдХ рдЧрд░реНрдиреЗред рднрд╛рдЧ реи: рд╕рд╛рдЗрдкреНрд░рд╕ PSoC рдмрд╛рдЯ рдбрдореНрдк рд▓рд┐рдБрджреИ

рддреНрдпрд╕рдкрдЫрд┐ рдореИрд▓реЗ PIN рдХреЛрдб "123456" рдмрд╛рдЯ "1234567" рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрдВ рд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдВ:

Aigo рд╕реНрд╡-рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯрд┐рдЩ рдмрд╛рд╣реНрдп HDD рдбреНрд░рд╛рдЗрднрд▓рд╛рдИ рдЙрд▓реНрдЯрд╛рдЙрдиреЗ рд░ рд╣реНрдпрд╛рдХ рдЧрд░реНрдиреЗред рднрд╛рдЧ реи: рд╕рд╛рдЗрдкреНрд░рд╕ PSoC рдмрд╛рдЯ рдбрдореНрдк рд▓рд┐рдБрджреИ

рдпрд╕рд░реА, PIN рдХреЛрдб рд░ рдЧрд▓рдд рдкреНрд░рдпрд╛рд╕рд╣рд░реВрдХреЛ рдХрд╛рдЙрдиреНрдЯрд░ рдмреНрд▓рдХ рдирдореНрдмрд░ 126 рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рджреЗрдЦрд┐рдиреНрдЫред

рен.рел рдмреНрд▓рдХ рдирдореНрдмрд░ резреирем рдХреЛ рдбрдореНрдк рд▓рд┐рдБрджреИ

рдмреНрд▓рдХ #126 рдореЗрд░реЛ рдкреВрд░реНрдг рдбрдореНрдкрдорд╛, рдЪреЗрдХрд╕рдо рдЧрдгрдирд╛рдХреЛ рд╕реБрд░реБрджреЗрдЦрд┐ рдиреИ 125x64x18 = 144000╬╝s рд╡рд░рд┐рдкрд░рд┐ рдХрддреИ рдЕрд╡рд╕реНрдерд┐рдд рд╣реБрдиреБрдкрд░реНрдЫ, рд░ рдпреЛ рдзреЗрд░реИ рдкреНрд░рд╢рдВрд╕рдиреАрдп рджреЗрдЦрд┐рдиреНрдЫред рддреНрдпрд╕рдкрдЫрд┐, рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдЕрд╕рдВрдЦреНрдп рдЕрд╡реИрдз рдбрдореНрдкрд╣рд░реВ рдмрд╛рд╣рд┐рд░ рдирд┐рдХрд╛рд▓реЗрдкрдЫрд┐ ("рд╕рд╛рдиреЛ рд╕рдордп рд╡рд┐рдЪрд▓рди" рдХреЛ рд╕рдВрдЪрдпрдХреЛ рдХрд╛рд░рдг), рдореИрд▓реЗ рдпреА рдмрд╛рдЗрдЯрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдВ (резрекрелрелреирен ╬╝s рдХреЛ рд╡рд┐рд▓рдореНрдмрддрд╛рдорд╛):

Aigo рд╕реНрд╡-рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯрд┐рдЩ рдмрд╛рд╣реНрдп HDD рдбреНрд░рд╛рдЗрднрд▓рд╛рдИ рдЙрд▓реНрдЯрд╛рдЙрдиреЗ рд░ рд╣реНрдпрд╛рдХ рдЧрд░реНрдиреЗред рднрд╛рдЧ реи: рд╕рд╛рдЗрдкреНрд░рд╕ PSoC рдмрд╛рдЯ рдбрдореНрдк рд▓рд┐рдБрджреИ

рдпреЛ рдПрдХрджрдо рд╕реНрдкрд╖реНрдЯ рдЫ рдХрд┐ PIN рдХреЛрдб рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдлрд╛рд░рдордорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ! рдпреА рдорд╛рдирд╣рд░реВ, рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, ASCII рдХреЛрдбрд╣рд░реВрдорд╛ рд▓реЗрдЦрд┐рдПрдХрд╛ рдЫреИрдирдиреН, рддрд░ рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ, рддрд┐рдиреАрд╣рд░реВрд▓реЗ capacitive рдХрд┐рдмреЛрд░реНрдбрдмрд╛рдЯ рд▓рд┐рдЗрдПрдХреЛ рдкрдврд╛рдЗрд╣рд░реВ рдкреНрд░рддрд┐рдмрд┐рдореНрдмрд┐рдд рдЧрд░реНрджрдЫред

рдЕрдиреНрддрдорд╛, рдореИрд▓реЗ рдЦрд░рд╛рдм рдкреНрд░рдпрд╛рд╕ рдХрд╛рдЙрдиреНрдЯрд░ рдХрд╣рд╛рдБ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдХреЗрд╣реА рдердк рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдПрдБред рдпрд╣рд╛рдБ рдирддрд┐рдЬрд╛ рдЫ:

Aigo рд╕реНрд╡-рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯрд┐рдЩ рдмрд╛рд╣реНрдп HDD рдбреНрд░рд╛рдЗрднрд▓рд╛рдИ рдЙрд▓реНрдЯрд╛рдЙрдиреЗ рд░ рд╣реНрдпрд╛рдХ рдЧрд░реНрдиреЗред рднрд╛рдЧ реи: рд╕рд╛рдЗрдкреНрд░рд╕ PSoC рдмрд╛рдЯ рдбрдореНрдк рд▓рд┐рдБрджреИ

0xFF - рднрдиреЗрдХреЛ "15 рдкреНрд░рдпрд╛рд╕рд╣рд░реВ" рд╣реЛ рд░ рдпреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрд╕рдлрд▓ рдкреНрд░рдпрд╛рд╕рдХреЛ рд╕рд╛рде рдШрдЯреНрдЫред

рен.ремред 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. рдЕрдм рдХреЗ рдЫ?

рддреНрдпрд╕реЛрднрдП, рд╣рд╛рдореНрд░реЛ Aigo рдбреНрд░рд╛рдЗрднрдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ PSoC рдкрдХреНрд╖рдорд╛ рд╕рдВрдХреНрд╖реЗрдк рдЧрд░реМрдВ:

  • рд╣рд╛рдореА SRAM рдкрдвреНрди рд╕рдХреНрдЫреМрдВ рдпрджрд┐ рдпреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдЫ рднрдиреЗ рдкрдирд┐;
  • рд╣рд╛рдореАрд▓реЗ рдХреЛрд▓реНрдб рдмреБрдЯ рдЯреНрд░реЗрд╕ рдЖрдХреНрд░рдордг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд░ рд╕рд┐рдзреИ PIN рдХреЛрдб рдкрдвреЗрд░ рдПрдиреНрдЯреА-рд╕реНрд╡рд╛рдЗрдк рд╕реБрд░рдХреНрд╖рд╛рд▓рд╛рдИ рдмрд╛рдЗрдкрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред

рдпрджреНрдпрдкрд┐, рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬреЗрд╕рди рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдХрд╛рд░рдгрд▓реЗ рд╣рд╛рдореНрд░реЛ рдЖрдХреНрд░рдордгрдорд╛ рдХреЗрд╣реА рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЫрдиреНред рдпрд╕рд▓рд╛рдИ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

  • "рдХреЛрд▓реНрдб рдмреБрдЯ рдЯреНрд░реЗрд╕" рдЖрдХреНрд░рдордгрдХреЛ рдкрд░рд┐рдгрд╛рдордХреЛ рд░реВрдкрдорд╛ рдкреНрд░рд╛рдкреНрдд рднрдПрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдбрд╛рдЯрд╛рд▓рд╛рдИ рд╕рд╣реА рд░реВрдкрдорд╛ рдбрд┐рдХреЛрдб рдЧрд░реНрди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН;
  • рдердк рд╕рдЯреАрдХ рд╕рдордп рдврд┐рд▓рд╛рдЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди FPGA рдЧреНрдпрд╛рдЬреЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рд╡рд╛ Arduino рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЯрд╛рдЗрдорд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН);
  • рдЕрд░реНрдХреЛ рдЖрдХреНрд░рдордг рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН: рдЬрд╛рдирд╛рдЬрд╛рдиреА рдЧрд▓рдд рдкрд┐рди рдХреЛрдб рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░рд┐рдмреБрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рд░реНрдпрд╛рдо рдбрдореНрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЖрд╢рд╛ рдЫ рдХрд┐ рд╕рд╣реА рдкрд┐рди рдХреЛрдб рддреБрд▓рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ RAM рдорд╛ рдмрдЪрдд рд╣реБрдиреЗрдЫред рдЬреЗ рд╣реЛрд╕реН, рдпреЛ Arduino рдорд╛ рдЧрд░реНрди рддреНрдпрддрд┐ рд╕рдЬрд┐рд▓реЛ рдЫреИрди, рдХрд┐рдирдХрд┐ Arduino рд╕рд┐рдЧреНрдирд▓ рд╕реНрддрд░ 5 рднреЛрд▓реНрдЯ рдЫ, рдЬрдмрдХрд┐ рд╣рд╛рдореАрд▓реЗ рдЬрд╛рдБрдЪ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдмреЛрд░реНрдбрд▓реЗ 3,3 рднреЛрд▓реНрдЯ рд╕рдВрдХреЗрддрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрдЫред

рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рд╕рдХрд┐рдиреЗ рдПрдЙрдЯрд╛ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдХреБрд░рд╛ рднрдиреЗрдХреЛ рдкрдвреНрдиреЗ рд╕реБрд░рдХреНрд╖рд╛рд▓рд╛рдИ рдмрд╛рдЗрдкрд╛рд╕ рдЧрд░реНрди рднреЛрд▓реНрдЯреЗрдЬ рд╕реНрддрд░рд╕рдБрдЧ рдЦреЗрд▓реНрдиреБ рд╣реЛред рдпрджрд┐ рдпреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрд▓реЗ рдХрд╛рдо рдЧрд░реНрдпреЛ рднрдиреЗ, рд╣рд╛рдореА рдлреНрд▓реНрдпрд╛рд╕ рдбреНрд░рд╛рдЗрднрдмрд╛рдЯ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рдбрд╛рдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреМрдВ - рдЕрд╢реБрджреНрдз рд╕рдордп рдврд┐рд▓рд╛рдЗрдХреЛ рд╕рд╛рде рдЪреЗрдХрд╕рдо рдкрдвреНрдирдорд╛ рднрд░ рдкрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛ред

SROM рд▓реЗ рд░рд┐рдбрдмреНрд▓рдХ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдорд╛рд░реНрдлрдд рдЧрд╛рд░реНрдб рдмрд┐рдЯрд╣рд░реВ рдкрдвреНрдиреЗ рд╣реБрдирд╛рд▓реЗ, рд╣рд╛рдореАрд▓реЗ рддреНрдпрд╕реИ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рджрд┐рдорд┐рддреНрд░реА рдиреЗрдбреЛрд╕реНрдкрд╛рд╕реЛрднрдХреЛ рдмреНрд▓рдЧрдорд╛ - рдХреНрд░рд┐рд╕ рдЧрд░реНрд▓рд┐рдиреНрд╕реНрдХреАрдХреЛ рдЖрдХреНрд░рдордгрдХреЛ рдкреБрди: рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд╕рдореНрдореЗрд▓рдирдорд╛ рдШреЛрд╖рдгрд╛ рдЧрд░рд┐рдпреЛ "REcon рдмреНрд░рд╕реЗрд▓реНрд╕ 2017".

рдЕрд░реНрдХреЛ рд░рдорд╛рдЗрд▓реЛ рдХреБрд░рд╛ рдЬреБрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдЪрд┐рдкрдмрд╛рдЯ рдХреЗрд╕рд▓рд╛рдИ рдкреАрд╕реНрдиреБ рд╣реЛ: SRAM рдбрдореНрдк рд▓рд┐рди, рдХрд╛рдЧрдЬрд╛рдд рдирднрдПрдХрд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рд░ рдХрдордЬреЛрд░реАрд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрдиред

Con. рдирд┐рд╖реНрдХрд░реНрд╖

рддреНрдпрд╕реЛрднрдП, рдпрд╕ рдбреНрд░рд╛рдЗрднрдХреЛ рд╕реБрд░рдХреНрд╖рд╛рд▓реЗ рдЪрд╛рд╣рд┐рдиреЗ рдзреЗрд░реИ рдЫреЛрдбреНрдЫ, рдХрд┐рдирдХрд┐ рдпрд╕рд▓реЗ рдкрд┐рди рдХреЛрдб рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдирд┐рдпрдорд┐рдд ("рдХрдареЛрд░" рд╣реЛрдЗрди) рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ... рд╕рд╛рдереИ, рдбрд╛рдЯрд╛рд╕рдБрдЧ рдХрд╕рд░реА рдЧрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреЗрд░ рдореИрд▓реЗ (рдЕрд╣рд┐рд▓реЗрд╕рдореНрдо) рд╣реЗрд░реЗрдХреЛ рдЫреИрдиред рдпрд╕ рдЙрдкрдХрд░рдгрдорд╛ рдЗрдиреНрдХреНрд░рд┐рдкреНрд╕рди!

рддрдкрд╛рдИрдВ Aigo рдХреЛ рд▓рд╛рдЧрд┐ рдХреЗ рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ? рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб HDD рдбреНрд░рд╛рдЗрдн рдХреЛ рдХреЗрд╣рд┐ рдореЛрдбреЗрд▓ рдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрдЫрд┐, 2015 рдорд╛ рдореИрд▓реЗ рдмрдирд╛рдПрдХреЛ рдкреНрд░рд╕реНрддреБрддрд┐ SyScan рдорд╛, рдЬрд╕рдорд╛ рдЙрд╣рд╛рдБрд▓реЗ рдзреЗрд░реИ рдмрд╛рд╣реНрдп HDD рдбреНрд░рд╛рдЗрднрд╣рд░реВрдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрднрдпреЛ, рд░ рддрд┐рдиреАрд╣рд░реВрдорд╛ рдХреЗ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рднрдиреЗрд░ рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрдиреБрднрдпреЛред ЁЯЩВ

рдореИрд▓реЗ рдпреЛ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдЧрд░реНрди рджреБрдИ рд╕рдкреНрддрд╛рд╣рдиреНрдд рд░ рдзреЗрд░реИ рд╕рд╛рдБрдЭ рдмрд┐рддрд╛рдПрдБред рдХреБрд▓ рдХрд░рд┐рдм рекреж рдШрдгреНрдЯрд╛ред рд╕реБрд░реБрджреЗрдЦрд┐ (рдЬрдм рдореИрд▓реЗ рдбрд┐рд╕реНрдХ рдЦреЛрд▓реЗрдХреЛ рдерд┐рдПрдБ) рдЕрдиреНрддреНрдпрд╕рдореНрдо (рдкрд┐рди рдХреЛрдб рдбрдореНрдк) рдЧрдгрдирд╛ рдЧрд░реНрджреИред рдЙрд╣реА рекреж рдШрдгреНрдЯрд╛рдорд╛ рдореИрд▓реЗ рдпреЛ рд▓реЗрдЦ рд▓реЗрдЦреНрди рдЦрд░реНрдЪ рдЧрд░реЗрдХреЛ рд╕рдордп рд╕рдорд╛рд╡реЗрд╢ рдЫред рдпреЛ рдПрдХ рдзреЗрд░реИ рд░реЛрдорд╛рдЮреНрдЪрдХ рдпрд╛рддреНрд░рд╛ рдерд┐рдпреЛред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди