рдмрд┐рд▓реНрд▓реА рдХреЗ рдЕрдВрджрд░ рдЧреИрдВрдбрд╛ - рдХреЛрдкреАрдХреИрдЯ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ


16 рдлрд░рд╡рд░реА рдХреЛ 0x0A DC7831 DEF CON рдирд┐рдЬрд╝рдиреА рдиреЛрд╡рдЧреЛрд░реЛрдб рдХреА рдмреИрдардХ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдореЗрдВ, рд╣рдордиреЗ рдмрд╛рдЗрдирд░реА рдХреЛрдб рдЗрдореНрдпреВрд▓реЗрд╢рди рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╕реНрддреБрдд рдХреА - рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо Kopycat рдХреЗ рдПрдХ рдПрдореБрд▓реЗрдЯрд░ред


рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓реЙрдиреНрдЪ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ, рдбрд┐рдмрдЧрд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВрдЧреЗ рдФрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдЧрддрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред


рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕


рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдПрдХ рдЖрдХрд╛рд╢рдЧрдВрдЧрд╛ рдореЗрдВ рдмрд╣реБрдд рджреВрд░


рд╣рдорд╛рд░реА рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдмреВрдЯрд▓реЛрдбрд░ рджреНрд╡рд╛рд░рд╛ рдЕрдирдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрд╣реБрдд рд╣реА рдЙрд▓рдЭреЗ рд╣реБрдП рддрд░реАрдХреЗ рд╕реЗ рдРрд╕рд╛ рдХрд┐рдпрд╛, рдХрдИ рдмрд╛рд░ рдбреЗрдЯрд╛ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╢рд┐рдлреНрдЯ рдХрд░ рджрд┐рдпрд╛ред рд╣рд╛рдБ, рдФрд░ рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдиреЗ рддрдм рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрд╛рддрдЪреАрдд рдХреАред рдФрд░ рдпрд╣ рд╕рдм MIPS рдХреЛрд░ рдкрд░ред


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


рдкрд░рд┐рдгрд╛рдо рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо Kopycat рдХрд╛ рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдерд╛ред



рдХреЛрдкреАрдХреИрдЯ рдХреНрдпреЛрдВ?

рд╢рдмреНрджреЛрдВ рдкрд░ рдПрдХ рдирд╛рдЯрдХ рд╣реИред


  1. рдХреЙрдкреАрдХреИрдЯ (рдЕрдВрдЧреНрд░реЗрдЬреА, рдПрдиред [atk╔кp├жk ]t]) - рдХреЙрдкреАрдХреИрдЯ, рдЗрдорд┐рдЯреЗрдЯрд░
  2. рдмрд┐рд▓реНрд▓реА (рдЕрдВрдЧреНрд░реЗрдЬреА, рдПрдиред [├жk├жt]) - рдмрд┐рд▓реНрд▓реА, рдмрд┐рд▓реНрд▓реА - рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдкрд╕рдВрджреАрджрд╛ рдЬрд╛рдирд╡рд░
  3. рдкрддреНрд░ "рдХреЗ" - рдХреЛрдЯрд▓рд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╕реЗ

Kopycat


рдПрдореБрд▓реЗрдЯрд░ рдмрдирд╛рддреЗ рд╕рдордп, рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ:


  • рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдирдИ рдкрд░рд┐рдзрд┐, рдореЙрдбреНрдпреВрд▓, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛;
  • рд╡рд┐рднрд┐рдиреНрди рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдПрдХ рдЖрднрд╛рд╕реА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛;
  • рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдореЗрдореЛрд░реА рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ (рдлрд░реНрдорд╡реЗрдпрд░) рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛;
  • рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ (рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕реНрдиреИрдкрд╢реЙрдЯ);
  • рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбрд┐рдмрдЧрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛;
  • рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рдЖрдзреБрдирд┐рдХ рднрд╛рд╖рд╛ред

рдирддреАрдЬрддрди, рдХреЛрдЯрд▓рд┐рди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдмрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ (рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореЙрдбреНрдпреВрд▓ рд╡рд░реНрдЪреБрдЕрд▓ рдбреЗрдЯрд╛ рдмрд╕реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ), рдбрд┐рд╡рд╛рдЗрд╕ рд╡рд┐рд╡рд░рдг рдкреНрд░рд╛рд░реВрдк рдХреЗ рд░реВрдк рдореЗрдВ JSON рдФрд░ рдбрд┐рдмрдЧрд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ GDB RSPред


рд╡рд┐рдХрд╛рд╕ рджреЛ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЬрд╛рд░реА рд╣реИред рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди, MIPS, x86, V850ES, ARM, PowerPC рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдврд╝ рд░рд╣реА рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЖрдо рдЬрдирддрд╛ рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рд╣рдо рдмрд╛рдж рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдХреЛрдкрд┐рдХрд╛рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред


рд╕рдмрд╕реЗ рдЕрдзреАрд░ рдХреЗ рд▓рд┐рдП - рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдкреНрд░реЛрдореЛ рд╕рдВрд╕реНрдХрд░рдг рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред


рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рд░рд╛рдЗрдиреЛ


рд╕реНрдорд░рдг рдХрд░реЛ рдХрд┐ рдкрд╣рд▓реЗ SMARTRHINO-2018 рд╕рдореНрдореЗрд▓рди рдХреЗ рд▓рд┐рдП, рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреМрд╢рд▓ рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг "рдЧреИрдВрдбрд╛" рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╕реНрдЯреЗрдЯрд┐рдХ рдлрд░реНрдорд╡реЗрдпрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


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


рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
1) рдЬрд╛рд╡рд╛ 1.8
2) рдПрдореНрдпреВрд▓реЗрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдЕрдЬрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдФрд░ рдЬреЗрдк рдореЙрдбреНрдпреВрд▓ред рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП Jep рдореЙрдбреНрдпреВрд▓ рдХреА WHL рдЕрд╕реЗрдВрдмрд▓реА рдпрд╣рд╛рдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ ред


рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП:
1) com0com
2) PuTTY


рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП:
1) рд╕рдорд╛рдЬ


рдЖрдк GDB рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЧреНрд░рд╣рдг, рдЖрдИрдбреАрдП рдкреНрд░реЛ, рдпрд╛ рд░рдбрд╛рд░ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдлрд░реНрдорд╡реЗрдпрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ "рдЕрд╕реЗрдВрдмрд▓" рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ ("рд░рд╛рдЗрдиреЛ") рдХреЛ рдмреНрд▓реЙрдХ рдЖрд░реЗрдЦ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


рдЕрд╕рд▓реА рдбрд┐рд╡рд╛рдЗрд╕ рд╕рд░реНрдХрд┐рдЯ

рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓рд░ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ JSON рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


JSON 105 рд▓рд╛рдЗрдиреЛрдВ рдкрд░
{ "top": true, // Plugin name should be the same as file name (or full path from library start) "plugin": "rhino", // Directory where plugin places "library": "user", // Plugin parameters (constructor parameters if jar-plugin version) "params": [ { "name": "tty_dbg", "type": "String"}, { "name": "tty_bt", "type": "String"}, { "name": "firmware", "type": "String", "default": "NUL"} ], // Plugin outer ports "ports": [ ], // Plugin internal buses "buses": [ { "name": "mem", "size": "BUS30" }, { "name": "nand", "size": "4" }, { "name": "gpio", "size": "BUS32" } ], // Plugin internal components "modules": [ { "name": "u1_stm32", "plugin": "STM32F042", "library": "mcu", "params": { "firmware:String": "params.firmware" } }, { "name": "usart_debug", "plugin": "UartSerialTerminal", "library": "terminals", "params": { "tty": "params.tty_dbg" } }, { "name": "term_bt", "plugin": "UartSerialTerminal", "library": "terminals", "params": { "tty": "params.tty_bt" } }, { "name": "bluetooth", "plugin": "BT", "library": "mcu" }, { "name": "led_0", "plugin": "LED", "library": "mcu" }, { "name": "led_1", "plugin": "LED", "library": "mcu" }, { "name": "led_2", "plugin": "LED", "library": "mcu" }, { "name": "led_3", "plugin": "LED", "library": "mcu" }, { "name": "led_4", "plugin": "LED", "library": "mcu" }, { "name": "led_5", "plugin": "LED", "library": "mcu" }, { "name": "led_6", "plugin": "LED", "library": "mcu" }, { "name": "led_7", "plugin": "LED", "library": "mcu" }, { "name": "led_8", "plugin": "LED", "library": "mcu" }, { "name": "led_9", "plugin": "LED", "library": "mcu" }, { "name": "led_10", "plugin": "LED", "library": "mcu" }, { "name": "led_11", "plugin": "LED", "library": "mcu" }, { "name": "led_12", "plugin": "LED", "library": "mcu" }, { "name": "led_13", "plugin": "LED", "library": "mcu" }, { "name": "led_14", "plugin": "LED", "library": "mcu" }, { "name": "led_15", "plugin": "LED", "library": "mcu" } ], // Plugin connection between components "connections": [ [ "u1_stm32.ports.usart1_m", "usart_debug.ports.term_s"], [ "u1_stm32.ports.usart1_s", "usart_debug.ports.term_m"], [ "u1_stm32.ports.usart2_m", "bluetooth.ports.usart_m"], [ "u1_stm32.ports.usart2_s", "bluetooth.ports.usart_s"], [ "bluetooth.ports.bt_s", "term_bt.ports.term_m"], [ "bluetooth.ports.bt_m", "term_bt.ports.term_s"], [ "led_0.ports.pin", "u1_stm32.buses.pin_output_a", "0x00"], [ "led_1.ports.pin", "u1_stm32.buses.pin_output_a", "0x01"], [ "led_2.ports.pin", "u1_stm32.buses.pin_output_a", "0x02"], [ "led_3.ports.pin", "u1_stm32.buses.pin_output_a", "0x03"], [ "led_4.ports.pin", "u1_stm32.buses.pin_output_a", "0x04"], [ "led_5.ports.pin", "u1_stm32.buses.pin_output_a", "0x05"], [ "led_6.ports.pin", "u1_stm32.buses.pin_output_a", "0x06"], [ "led_7.ports.pin", "u1_stm32.buses.pin_output_a", "0x07"], [ "led_8.ports.pin", "u1_stm32.buses.pin_output_a", "0x08"], [ "led_9.ports.pin", "u1_stm32.buses.pin_output_a", "0x09"], [ "led_10.ports.pin", "u1_stm32.buses.pin_output_a", "0x0A"], [ "led_11.ports.pin", "u1_stm32.buses.pin_output_a", "0x0B"], [ "led_12.ports.pin", "u1_stm32.buses.pin_output_a", "0x0C"], [ "led_13.ports.pin", "u1_stm32.buses.pin_output_a", "0x0D"], [ "led_14.ports.pin", "u1_stm32.buses.pin_output_a", "0x0E"], [ "led_15.ports.pin", "u1_stm32.buses.pin_output_a", "0x0F"] ] } 

Params рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдлрд░реНрдорд╡реЗрдпрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ - рдпрд╣ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕реЗ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдореБрдЦреНрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рдмрд╛рддрдЪреАрдд рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


рд╕рд░реНрдХрд┐рдЯ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдбрд┐рд╡рд╛рдЗрд╕

рдПрдореБрд▓реЗрдЯрд░ рдХреА рд╡рд░реНрддрдорд╛рди рдкрд░реАрдХреНрд╖рд╛ рдореЗрдВ рдореБрдЦреНрдп OS рдХреЗ COM рдкреЛрд░реНрдЯ (рдмреНрд▓реВрдЯреВрде рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП UART рдФрд░ UART) рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреЛрд░реНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХрдиреЗрдХреНрдЯреЗрдб рд╣реИрдВ рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯ ( com0com / socat рд╕рд┐рд░реНрдл рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣реИрдВ ) ред


рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрд╛рд╣рд░ рд╕реЗ рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рджреЛ рдореБрдЦреНрдп рддрд░реАрдХреЗ рд╣реИрдВ:


  • рдЬреАрдбреАрдмреА рдЖрд░рдПрд╕рдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ (рдХреНрд░рдорд╢рдГ, рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди, рдЙрдкрдХрд░рдг - рдЧреНрд░рд╣рдг / рдЖрдИрдбреАрдП / рд░рдбрд╛рд░ 2);
  • рдПрдореБрд▓реЗрдЯрд░ рдЖрдВрддрд░рд┐рдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди (рдЖрд░реНрдЧрдкрд░реНрд╕ рдпрд╛ рдкрд╛рдпрдерди)ред

рд╡рд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯреНрд╕


рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ UART рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдкреЛрд░реНрдЯ рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо (PuTTY рдпрд╛ рд╕реНрдХреНрд░реАрди):


рд╡рд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯреНрд╕

Com0com рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рд╡рд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯреНрд╕ рдХреЛ com0com рдХрд┐рдЯ (рдХрдВрд╕реЛрд▓ рд╕рдВрд╕реНрдХрд░рдг C: \ Program Files (x86) \ com0com \ setup.exe, рдпрд╛ GUI рд╕рдВрд╕реНрдХрд░рдг C: \ Program Files (x86) \ com0com \ setupg.exe рд╕реЗ рд╕реЗрдЯрдЕрдк рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред :


рд╡рд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

рд╕рднреА рдмрдирд╛рдП рдЧрдП рд╡рд░реНрдЪреБрдЕрд▓ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдмрдлрд╝рд░ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ , рдЕрдиреНрдпрдерд╛ рдПрдореБрд▓реЗрдЯрд░ COM рдкреЛрд░реНрдЯ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ред


рд╕рдорд╛рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


UNIX рд╕рд┐рд╕реНрдЯрдо рдкрд░, рд╡рд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯреНрд╕ рдХреЛ рд╕реЛрд╢рд▓ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдореБрд▓реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдкреЛрд░реНрдЯ рдирд╛рдо рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред


рдЖрдВрддрд░рд┐рдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдЖрд░реНрдЧрдкрд░реНрд╕ рдпрд╛ рдкрд╛рдпрдерди)


рдЪреВрдВрдХрд┐ рдХреЛрдкреАрдХреИрдЯ рдПрдХ рд╕рд╛рдВрддреНрд╡рдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдореБрд▓реЗрдЯрд░ рдЕрдкрдиреЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рджреЛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рдЕрд░реНрдЧрдкрд░реНрд╕ рдФрд░ рдкрд╛рдпрдердиред


рдЖрд░реНрдЧрдкрд░реНрд╕ рд╕реАрдПрд▓рдЖрдИ рд╣реИ рдЬреЛ рдХреЛрдкреАрдХреИрдЯ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред


рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реАрдПрд▓рдЖрдИ рдкрд╛рдпрдерди рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬреЗрдк рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкрд╛рдпрдерди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдореБрдЦреНрдп рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдкрд╛рдпрдерди рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред


рдкрд╛рдпрдерди рдЬреЗрдк рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд, рдЬреЗрдк рдХреЛ рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 pip install jep 

рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдЬреЗрдк рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рдВрдбреЛрдЬ рдПрд╕рдбреАрдХреЗ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдордиреЗ рдЖрдкрдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдХрд┐рдпрд╛ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП WHL JEP рдЕрд╕реЗрдВрдмрд▓реА рдмрдирд╛рдИ, рддрд╛рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ:


 pip install jep-3.8.2-cp27-cp27m-win_amd64.whl 

Jep рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛:


 python -c "import jep" 

рдЬрд╡рд╛рдм рдореЗрдВ, рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:


 ImportError: Jep is not supported in standalone Python, it must be embedded in Java. 

рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдореБрд▓реЗрдЯрд░ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ (Windows рдХреЗ рд▓рд┐рдП kopycat.bat , рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП kopycat ) рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ Djava.library.path рдХреЛ DEFAULT_JVM_OPTS рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ - рдЗрд╕рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд Jep рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкрде рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рд▓рд╛рдЗрди рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП:


 set DEFAULT_JVM_OPTS="-XX:MaxMetaspaceSize=256m" "-XX:+UseParallelGC" "-XX:SurvivorRatio=6" "-XX:-UseGCOverheadLimit" "-Djava.library.path=C:/Python27/Lib/site-packages/jep" 

рдХреЛрдкреАрдХреИрдЯ рд▓реЙрдиреНрдЪ


рдПрдореБрд▓реЗрдЯрд░ рдПрдХ рдХрдВрд╕реЛрд▓ рдЬреЗрд╡реАрдПрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред рдкреНрд░рдХреНрд╖реЗрдкрдг рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ (sh / cmd) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб:


 bin\kopycat -g 23946 -n rhino -l user -y library -p firmware=firmware\rhino_pass.bin,tty_dbg=COM26,tty_bt=COM28 

рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рджреЗрд╢ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ:


 ./bin/kopycat -g 23946 -n rhino -l user -y library -p firmware=./firmware/rhino_pass.bin,tty_dbg=socat:./COM26,tty_bt=socat:./COM28 

  • -g 23646 - рдЯреАрд╕реАрдкреА рдкреЛрд░реНрдЯ рдЬреЛ рдЬреАрдбреАрдмреА рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реЛрдЧрд╛;
  • -n rhino - рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо (рдбрд┐рд╡рд╛рдЗрд╕ рдЕрд╕реЗрдВрдмрд▓реА);
  • -l user - рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд╛рдо;
  • -y library - рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдореЙрдбреНрдпреВрд▓ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХрд╛ рдорд╛рд░реНрдЧ;
  • firmware\rhino_pass.bin - рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде;
  • COM26 рдФрд░ COM28 рд╡рд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯ рд╣реИрдВред

рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо Python > (рдпрд╛ Argparse > ) Argparse > :


 18:07:59 INFO [eFactoryBuilder.create ]: Module top successfully created as top 18:07:59 INFO [ Module.initializeAndRes]: Setup core to top.u1_stm32.cortexm0.arm for top 18:07:59 INFO [ Module.initializeAndRes]: Setup debugger to top.u1_stm32.dbg for top 18:07:59 WARN [ Module.initializeAndRes]: Tracer wasn't found in top... 18:07:59 INFO [ Module.initializeAndRes]: Initializing ports and buses... 18:07:59 WARN [ Module.initializePortsA]: ATTENTION: Some ports has warning use printModulesPortsWarnings to see it... 18:07:59 FINE [ ARMv6CPU.reset ]: Set entry point address to 08006A75 18:07:59 INFO [ Module.initializeAndRes]: Module top is successfully initialized and reset as a top cell! 18:07:59 INFO [ Kopycat.open ]: Starting virtualization of board top[rhino] with arm[ARMv6Core] 18:07:59 INFO [ GDBServer.debuggerModule ]: Set new debugger module top.u1_stm32.dbg for GDB_SERVER(port=23946,alive=true) Python > 

рдЖрдИрдбреАрдП рдкреНрд░реЛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд


рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЖрдИрдбреАрдП рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд╛рдЗрдиреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдПрд▓рдПрд▓рдПрдл рдлрд╝рд╛рдЗрд▓ (рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА рд╡рд╣рд╛рдВ рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ) рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред


рдЖрдк рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ рдореБрдЦреНрдп рдлрд░реНрдорд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЖрдИрдбреАрдП рдкреНрд░реЛ рдореЗрдВ рдХреЛрдкреЗрдХрдЯ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдбрд┐рдмрдЧрд░ рдореЗрдиреВ рдореЗрдВ, " рд╕реНрд╡рд┐рдЪ рдбреАрдмрдЧрд░ ... " рдЖрдЗрдЯрдо рдкрд░ рдЬрд╛рдПрдВ рдФрд░ " рд░рд┐рдореЛрдЯ рдЬреАрдбреАрдмреА рдбреАрдмрдЧрд░ " рдЪреБрдиреЗрдВред рдЕрдЧрд▓рд╛, рдХрдиреЗрдХреНрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ: рдбреАрдмрдЧрд░ рдореЗрдиреВ - рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдк ...


рдорд╛рди рд╕реЗрдЯ рдХрд░реЗрдВ:


  • рдЖрд╡реЗрджрди - рдХреЛрдИ рдореВрд▓реНрдп
  • рд╣реЛрд╕реНрдЯрдирд╛рдо: 127.0.0.1 (рдпрд╛ рджреВрд░рд╕реНрде рдорд╢реАрди рдХрд╛ рдЖрдИрдкреА рдкрддрд╛ рдЬрд╣рд╛рдВ рдХреЛрдкрд╛рдпрдХрд╛рдЯ рдЪрд▓ рд░рд╣рд╛ рд╣реИ)
  • рдкреЛрд░реНрдЯ: 23946

GDB рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛

рдЕрдм рдбрд┐рдмрдЧ рд╕реНрдЯрд╛рд░реНрдЯ рдмрдЯрди рдЙрдкрд▓рдмреНрдз рд╣реИ (F9 рдХреБрдВрдЬреА):



рдЗрд╕реЗ рджрдмрд╛рдПрдВ - рдпрд╣ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдбреАрдмрдЧрд░ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЖрдИрдбреАрдП рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрддрд┐рд░рд┐рдХреНрдд рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ: рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА, рд╕реНрдЯреИрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред


рдЕрдм рд╣рдо рдбрд┐рдмрдЧрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рднреА рдорд╛рдирдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


  • рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдирд┐рд╖реНрдкрд╛рджрди ( рдЪрд░рдг рдореЗрдВ рдФрд░ рдХрджрдо - рдХреБрдВрдЬреА F7 рдФрд░ F8, рдХреНрд░рдорд╢рдГ);
  • рдкреНрд░рд╛рд░рдВрдн рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХреЗрдВ;
  • рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛ (F2 рдХреБрдВрдЬреА) рджреЛрдиреЛрдВ рдкрд░ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдмрдирд╛рдирд╛ред

рдбреАрдмрдЧрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛрдб рд╢реБрд░реВ рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ 0x08006A74 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - Reset_Handler рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрддред рдпрджрд┐ рдЖрдк рдиреАрдЪреЗ рджреА рдЧрдИ рд╕реВрдЪреА рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рдХрд░реНрд╕рд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдкрддрд╛ 0x08006ABE ) рдФрд░ рдХрд░реНрд╕рд░ рдСрдкрд░реЗрд╢рди (F4 рдХреБрдВрдЬреА) рддрдХ рд░рди рдХрд░реЗрдВ ред


рдЫрд╡рд┐


рдЕрдЧрд▓рд╛, рдЖрдк рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП F7 рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдпрджрд┐ рдЖрдк рдЬрд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрдорд╛рдВрдб (F9 рдХреБрдВрдЬреА) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ "рдХреГрдкрдпрд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ" рд╡рд┐рдВрдбреЛ рдПрдХ рд╕рд┐рдВрдЧрд▓ рд╕рд╕реНрдкреЗрдВрдб рдмрдЯрди рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:



рдЬрдм рд╕рд╕реНрдкреЗрдВрдб рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛрдб рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдирд┐рд▓рдВрдмрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдореЗрдВ рдЙрд╕реА рдкрддреЗ рд╕реЗ рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдмрд╛рдзрд┐рдд рдерд╛ред


рдпрджрд┐ рдЖрдк рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╡рд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдореЗрдВ, рдЖрдк рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:


рдЫрд╡рд┐


рдЫрд╡рд┐


рд╕реНрдЯреНрд░рд┐рдВрдЧ "рд╕реНрдЯреЗрдЯ рдмрд╛рдпрдкрд╛рд╕" рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдмреНрд▓реВрдЯреВрде рдореЙрдбреНрдпреВрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ COM рдкреЛрд░реНрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдореЛрдб рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред


рдЕрдм рдмреНрд▓реВрдЯреВрде рдЯрд░реНрдорд┐рдирд▓ (рдЪрд┐рддреНрд░ - COM29 рдореЗрдВ) рдЖрдк рд░рд╛рдЗрдиреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдореВрд░-рдореНрдпреВрд░" рдмреНрд▓реВрдЯреВрде рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ "MEOW" рдХрдорд╛рдВрдб рдкрд░ рд▓реМрдЯрддрд╛ рд╣реИ:




рдореЗрд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХрд░рдг рди рдХрд░реЗрдВ


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


  • рдХрдорд╛рдВрдб рдХреЗ рдПрдХ рдкреВрд░реНрдг рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдбрд┐рд╡рд╛рдЗрд╕;
  • рдПрдЯреА рдХрдорд╛рдВрдб рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдореБрдЦреНрдп рд╕рд┐рд╕реНрдЯрдо рдХреЗ COM рдкреЛрд░реНрдЯ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ;
  • рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ;
  • рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдареВрдВрда рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рд╣рдореЗрд╢рд╛ "рдУрдХреЗ" рджреЗрддрд╛ рд╣реИред

рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рджреВрд╕рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╡рд░реНрдЪреБрдЕрд▓ рдмреНрд▓реВрдЯреВрде рдореЙрдбреНрдпреВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдореБрдЦреНрдп рд╕рд┐рд╕реНрдЯрдо рдХреЗ COM рдкреЛрд░реНрдЯ рд╕реЗ рдПрдореБрд▓реЗрдЯрд░ UART рдкреЛрд░реНрдЯ рдкрд░ рдбреЗрдЯрд╛ рдХреЗ "рдкреНрд░реЙрдХреНрд╕реА" рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред



рдпрджрд┐ рдкрд░рд┐рдзрд┐ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреЛрдб рдХреЗ рд╕рд░рд▓ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯреЗрд╢рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ DMA рдореЗрдВ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЯрд╛рдЗрдорд░ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ( 0x08006840 рдкрд░ рд╕реНрдерд┐рдд ws2812b_wait рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЪреЗрдХ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдлрд░реНрдорд╡реЗрдпрд░ рд╣рдореЗрд╢рд╛ DMA рдбреЗрдЯрд╛ рд▓рд╛рдЗрди рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 0x200004C4 рдкрд░ рд╕реНрдерд┐рдд рд╡реНрдпрд╕реНрдд рдзреНрд╡рдЬ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛:



рд╣рдо рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╡реНрдпрд╕реНрдд рдзреНрд╡рдЬ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд░реАрд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдИрдбреАрдП рдкреНрд░реЛ рдореЗрдВ, рдЖрдк рдкрд╛рдпрдерди рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдореЗрдВ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡реНрдпрд╕реНрдд рдлреНрд▓реИрдЧ 1 рдХреЗ рдорд╛рди рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХреЛ рдХреЛрдб рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╣реИрдВрдбрд▓рд░


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдИрдбреАрдП рдореЗрдВ рдПрдХ рдкрд╛рдпрдерди рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВред рдлрд╝рд╛рдЗрд▓ рдореЗрдиреВ - рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдорд╛рдВрдб ...


рдмрд╛рдИрдВ рдУрд░ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдирдпрд╛ рд╕реНрдирд┐рдкреЗрдЯ рдЬреЛрдбрд╝реЗрдВ, рдЗрд╕реЗ рдПрдХ рдирд╛рдо рджреЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреАрдкреАрдЯреА ),
рдЯреЗрдХреНрд╕реНрдЯ рдмреЙрдХреНрд╕ рдореЗрдВ рджрд╛рдИрдВ рдУрд░ рд╣рдо рдлрдВрдХреНрд╢рди рдХреЛрдб рдбрд╛рд▓рддреЗ рд╣реИрдВ:


 def skip_dma(): print "Skipping wait ws2812..." value = Byte(0x200004C4) if value == 1: PatchDbgByte(0x200004C4, 0) return False 


рдЙрд╕рдХреЗ рдмрд╛рдж, Run рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрдВрдж рдХрд░реЗрдВред


рдЕрдм 0x0800688A рдкрд░ рдХреЛрдб рдкрд░ 0x0800688A , рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ (F2 рдХреБрдВрдЬреА) рд╕реЗрдЯ рдХрд░реЗрдВ, рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ( рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ... рд╕рдВрджрд░реНрдн рдореЗрдиреВ), рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ - рдкрд╛рдпрдерди:




рдпрджрд┐ рд╡реНрдпрд╕реНрдд рдзреНрд╡рдЬ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдорд╛рди 1 рд╣реИ, рддреЛ рд╕реНрдХрд┐рдк_рдбрдорд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:



рдпрджрд┐ рдЖрдк рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ-рд╣реИрдВрдбрд▓рд░ рдХреЛрдб рдЖрдИрдбреАрдП рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд▓рд╛рдЗрди рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ Skipping wait ws2812... рдЕрдм рдлрд░реНрдорд╡реЗрдпрд░ рд╡реНрдпрд╕реНрдд рдзреНрд╡рдЬ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред


рдПрдореБрд▓реЗрдЯрд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди


рдПрдореБрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдореБрд▓реЗрд╢рди рд╕реЗ рдЦреБрд╢реА рдФрд░ рдЖрдирдВрдж рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдЕрдЧрд░ рдПрдореБрд▓реЗрдЯрд░ рд╢реЛрдзрдХрд░реНрддрд╛ рдХреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдбреЗрдЯрд╛ рджреЗрдЦрдиреЗ рдпрд╛ рдкреНрд░рд╡рд╛рд╣ рдХреА рдмрд╛рддрдЪреАрдд рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред


рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ RTOS рдХрд╛рд░реНрдпреЛрдВ рдХреА рдмрд╛рддрдЪреАрдд рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрджрд┐ рдпрд╣ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рддреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХреЗрдВред рдпрджрд┐ рдЖрдк "LED" рдХрдорд╛рдВрдб рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдмреНрд░рд╛рдВрдЪ рдореЗрдВ bluetooth_task_entry рдлрдВрдХреНрд╢рди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ (рдПрдбреНрд░реЗрд╕ 0x080057B8 ), рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ ledControlQueueandandle рд╕рд┐рд╕реНрдЯрдо рдХрддрд╛рд░ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЫрд╡рд┐


рдЖрдк 0x20000624 рдкрд░ рд╕реНрдерд┐рдд ledControlQueueHandle рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ:



рдирддреАрдЬрддрди, рдкрд╣рд▓реЗ рдпрд╣ osMailAlloc рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 0x080057CA рдкрддреЗ рдкрд░ 0x080057CA , рдлрд┐рд░ osMailPut рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 0x08005806 рдкрд░, рдлрд┐рд░ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж 0x08005BD4 ( osMailGet рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ), рдЬреЛ leds_task_entask_ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдХрд╛рд░реНрдп рд╕реНрд╡рд┐рдЪ рдерд╛, рдФрд░ рдЕрдм рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдПрд▓рдИрдбреА рдХрд╛рд░реНрдп рдорд┐рд▓рд╛ рд╣реИред


рдЫрд╡рд┐


рдРрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рдЖрдк рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ RTOS рдХрд╛рд░реНрдп рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВред


рдмреЗрд╢рдХ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд╛рд░реНрдпреЛрдВ рдХреА рдмрд╛рддрдЪреАрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдо рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред


рдпрд╣рд╛рдВ рдЖрдк рдПрдореБрдбрд╛ рд▓реЙрдиреНрдЪ рдФрд░ рдЖрдИрдбреАрдП рдкреНрд░реЛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред


Radare2 рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ


рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЙрдкрдХрд░рдг рдХреЛ Radare2 рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред


R2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдореБрд▓реЗрдЯрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:


 radare2 -A -a arm -b 16 -d gdb://localhost:23946 rhino_fw42k6.elf 

рдЕрдм рдкреНрд░рд╛рд░рдВрдн ( dc ) рдФрд░ рдард╣рд░рд╛рд╡ рдирд┐рд╖реНрдкрд╛рджрди (Ctrl + C) рдЙрдкрд▓рдмреНрдз рд╣реИрдВред


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рд╕рдордп r2 рдореЗрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ gdb рд╕рд░реНрд╡рд░ рдФрд░ рдореЗрдореЛрд░реА рдорд╛рд░реНрдХрдЕрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖрддреА рд╣реИрдВ, рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯреНрд╕ рдФрд░ рд╕реНрдЯреЗрдкреНрд╕ ( ds рдХрдорд╛рдВрдб) рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рддрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ред


рдЧреНрд░рд╣рдг рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ


рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рддрд╣рдд рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рд░рд╛рдЗрдиреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЖрдк рдпрд╣рд╛рдВ рд╕реЗ рдлрд░реНрдорд╡реЗрдпрд░ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред


рд╣рдо IDE рдХреЗ рд░реВрдк рдореЗрдВ STM32 рд╕реВрдЯ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рд╡рд░реНрдХрдмреЗрдВрдЪ рд╕реЗ рдЧреНрд░рд╣рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред


рдЧреНрд░рд╣рдг рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рд╕реАрдзреЗ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдореБрд▓реЗрдЯрд░ рд╕реНрдЯрд╛рд░реНрдЯ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП firmware=null рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:


 bin\kopycat -g 23946 -n rhino -l user -y library -p firmware=null,tty_dbg=COM26,tty_bt=COM28 

рдбрд┐рдмрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


рдЧреНрд░рд╣рдг рдореЗрдВ, рд░рди - рдбрд┐рдмрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди ... рдореЗрдиреВ рдЪреБрдиреЗрдВ ред GDB рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдбреАрдмрдЧрд┐рдВрдЧ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ "рдореБрдЦреНрдп" рдЯреИрдм рдкрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред



рдбреАрдмрдЧрд░ рдЯреИрдм рдкрд░, рдЖрдкрдХреЛ GDB рдХрдорд╛рдВрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
${openstm32_compiler_path}\arm-none-eabi-gdb


рдФрд░ GDB рд╕рд░реНрд╡рд░ (рд╣реЛрд╕реНрдЯ рдФрд░ рдкреЛрд░реНрдЯ) рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рднреА рджрд░реНрдЬ рдХрд░реЗрдВ:



"рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк" рдЯреИрдм рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП:


  • рдЪреЗрдХрдмреЙрдХреНрд╕ рд▓реЛрдб рдЫрд╡рд┐ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ (рддрд╛рдХрд┐ рдЗрдХрдЯреНрдареЗ рдлрд░реНрдорд╡реЗрдпрд░ рдЫрд╡рд┐ рдХреЛ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдП);
  • рдЪреЗрдХрдорд╛рд░реНрдХ рд▓реЛрдб рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ;
  • рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝реЗрдВ: set $pc = *0x08000004 рд╕реЗрдЯ рдХрд░реЗрдВ (рдкреАрд╕реА рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ 0x08000004 рдкрддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рд╕реЗ рдорд╛рди рд╕реЗрдЯ рдХрд░реЗрдВ - 0x08000004 рдХрд╛ рдкрддрд╛ рд╡рд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ)ред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЧреНрд░рд╣рдг рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд▓реЛрдб рдЫрд╡рд┐ рдФрд░ рд░рди рдХрдорд╛рдВрдб рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред



рдбреАрдмрдЧ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


  • рдЪрд░рдг-рджрд░-рдЪрд░рдг рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди
  • рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд

рдиреЛрдЯред рдЧреНрд░рд╣рдг рдореЗрдВ, рд╣рдореНрдо ... рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ ... рдФрд░ рдЖрдкрдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдбрд┐рдмрдЧрд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп "0x0" рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдВрджреЗрд╢ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЪрд░рдг рдХрдорд╛рдВрдб (F5) рдЪрд▓рд╛рдПрдВред



рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


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


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


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

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


All Articles