EJTAG: рд╣реИрдХрд░реНрд╕ -2 рдХреЗ рд▓рд┐рдП рдЖрдХрд░реНрд╖рдг


рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ EJTAG рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдореЗрдВ : рд╣реИрдХрд░реНрд╕ рдФрд░ рдмреНрд▓реИрдХ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдХрд░реНрд╖рдг : EJTAG рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , EJTAG рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ - рд░реИрдо рдореЗрдВ рд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдИрдЬреЗрдЯреАрдПрдЬреА рдХреА рдХреНрд╖рдорддрд╛рдПрдВ рдЗрд╕ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдкреНрд░рдХрд╛рд╢рди рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдИрдЬреЗрдЯреАрдПрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рд▓ рдХреЛрдб рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдУрдкреЗрдирдХрд╛рдб рдФрд░ рдЬреАрдбреАрдмреА рдлреНрд░реАрд╡реЗрдпрд░ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдХреЛ рдПрдХ рдкрд╛рдардХ рдХреЗ рдкрддреНрд░ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдЧреБрдордирд╛рдо рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдФрд░ рдЬрд┐рд╕рдиреЗ рдореБрдЭрд╕реЗ рдорджрдж рдорд╛рдВрдЧреА - рдПрдХ AR9344-рдЖрдзрд╛рд░рд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рдмреВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рдпреВ-рдмреВрдЯ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрдЯреЗрдЬ рдкрд░ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИ) - рдореИрдВ рдпрд╣ рдХреИрд╕реЗ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдИрдЬреЗрдЯреАрдПрдЬреА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ?
рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╣рд╛рде рдореЗрдВ AR9344 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдмрдВрдзрд┐рдд AR9331 рдЪрд┐рдк рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдмреНрд▓реИрдХ рд╕реНрд╡рд┐рдлреНрдЯ рдкреНрд░реЛ рдмреЛрд░реНрдб рдЗрд╕ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдерд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдХрд▓рд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ AR9344 рдХреЗ рд▓рд┐рдП рдЬреЛ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдЬрд╛рдиреЗ рд╣реИрдВ, рд╡реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред
рдЖрдЗрдП рд╕рдорд╕реНрдпрд╛ рдХрдерди
рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ : рдПрдХ рдмреНрд▓реИрдХ рд╕реНрд╡рд┐рдлреНрдЯ рдкреНрд░реЛ рдмреЛрд░реНрдб рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдИрдЬреЗрдЯреАрдПрдЬреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдУрдкрдирдХрд╛рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛрдбрд╝рд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд╕реНрдЯреЙрдк рдореЛрдб рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рд╣реИред
рдпрд╣ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХрдИ рджрд╕рд┐рдпреЛрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд░реЛрдХрдирд╛ рдФрд░, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд░реИрдо, рдмреВрдЯ рд░реЛрдо, рдкрд░рд┐рдзреАрдп рдирд┐рдпрдВрддреНрд░рдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдпрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ред
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдХрдо рд╕реЗ рдХрдо рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:
  • рд╕рд░рд▓ - рдХреЗрд╡рд▓ рдУрдкрдирдХрд╛рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ - рдЖрд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдУрдкрдиреЛрдХреИрдб рдореЗрдВ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП;
  • рдЬрдЯрд┐рд▓ - Openocd + GDB рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ GDB рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ Openocd GDB рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ EJTAG рдХрдорд╛рдВрдб рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред

рдЕрдм рджреЛрдиреЛрдВ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
, Black Swift: EJTAG.


1: openocd


рдЬреЛ рд▓реЛрдЧ EJTAG рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ Openocd рдЙрди рдореЗрдВ рдПрдХ рдЧреВрдВрдЧрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрдХ (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ) рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдмреИрдЪ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрдмрдХрд┐ Openocd рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ "рдкреВрдЫрдирд╛" рд╕рдВрднрд╡ рд╣реИред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Openocd рдПрдХ рдЯреЗрд▓рдиреЗрдЯ рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЯреЗрд▓рдиреЗрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЯреАрд╕реАрдкреА рдкреЛрд░реНрдЯ 4444 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреАрд╕реАрдкреА рдкреЛрд░реНрдЯ рдирдВрдмрд░ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ telnet_port(рдиреАрдЪреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ)ред
рдЖрдЗрдП рдУрдкрди рд╕реНрд╡рд┐рдб рдХреЗ рд╕рд╛рде рдмреНрд▓реИрдХ рд╕реНрд╡рд┐рдлреНрдЯ рдмреЛрд░реНрдб рдХреЗ рдмреВрдЯрд▓реЛрдбрд░ рдХреЛ рдЯреНрд░реЗрд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдЙрджрд╛рд╣рд░рдгblack-swift-trace.cfg Openocd рдХреЗ рд▓рд┐рдП, рдЬреЛ telnet рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП port 4455 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП openocd рдХреЛ рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ:
 рд╕реНрд░реЛрдд [рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЦреЛрдЬреЗрдВ / ftdi / tumpa.cfg]
 
 рдЕрдиреБрдХреВрд▓рдХ_рдЦреЗрдЬ ремрежрежреж
 
 source [рдмреНрд▓реИрдХ-рд╕реНрд╡рд┐рдлреНрдЯ.рд╕реАрдПрдлрдЬреА рдкрд╛рдПрдВ]
 
 рдЯреЗрд▓рдиреЗрдЯ_рдкреЛрд░реНрдЯ 4455
 
 рдЗрд╕ рдореЗрдВ
 рдкрдбрд╝рд╛рд╡

рдЬрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдУрдкрдирдХрд╛рдб 0.9.0 рдЪрд▓ рд░рд╣рд╛ рд╣реИ:
 # рдУрдкрдирдХрд╛рдб -рдл рдмреНрд▓реИрдХ-рд╕реНрд╡рд┐рдлреНрдЯ-рдЯреНрд░реЗрд╕.рд╕реАрдПрдлрдЬреА
 рдУрдкрди рдСрди-рдЪрд┐рдк рдбреАрдмрдЧрд░ 0.9.0 (2015-05-28-17: 08)
 GNU GPL v2 рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИ
 рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП, рдкрдврд╝реЗрдВ
         http://openocd.org/doc/doxygen/bugs.html
 рдХреЛрдИ рднреА рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ
 рдПрдбрд╛рдкреНрдЯрд░ рдЧрддрд┐: 6000 kHz
 рдЬрд╛рдирдХрд╛рд░реА: рдСрдЯреЛ-рд╕реЗрд▓реЗрдХреНрдЯрд┐рдВрдЧ рдкрд╣рд▓рд╛ рдЙрдкрд▓рдмреНрдз рд╕рддреНрд░ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ "jtag"ред 'рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рд╕реЗрд▓реЗрдХреНрдЯ <рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ>' рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
 рддреНрд░реБрдЯрд┐: рдХреЛрдИ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рдорд┐рд▓рд╛
 рддреНрд░реБрдЯрд┐: vid 0403, pid 8a98, рд╡рд┐рд╡рд░рдг '*' рдФрд░ рд╕реАрд░рд┐рдпрд▓ '*' рдХреЗ рд╕рд╛рде ftdi рдбрд┐рд╡рд╛рдЗрд╕ рдЦреЛрд▓рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде
 рдЬрд╛рдирдХрд╛рд░реА: рдШрдбрд╝реА рдХреА рдЧрддрд┐ 6000 kHz
 рдЬрд╛рдирдХрд╛рд░реА: JTAG рдЯреИрдк: ar9331.cpu рдЯреИрдк / рдбрд┐рд╡рд╛рдЗрд╕ рдорд┐рд▓рд╛: 0x00000001 (mfg: 0x000, part: 0x0000, ver: 0x0)
 рд▓рдХреНрд╖рд┐рдд рд╕реНрдерд┐рддрд┐: рд░реБрдХрд╛ рд╣реБрдЖ
 рдбрд┐рдмрдЧ-рдЕрдиреБрд░реЛрдз, рдкреАрд╕реА: 0xbfc00000 рдХреЗ рдХрд╛рд░рдг MIPS32 рдореЛрдб рдореЗрдВ рд░реБрдХрд╛ рд╣реБрдЖ рд▓рдХреНрд╖реНрдп
 рд▓рдХреНрд╖рд┐рдд рд╕реНрдерд┐рддрд┐: рд░реБрдХрд╛ рд╣реБрдЖ
 рд╕рд┐рдВрдЧрд▓-рд╕реНрдЯреЗрдк, рдкреАрд╕реА: 0xbfc00404 рдХреЗ рдХрд╛рд░рдг MIPS32 рдореЛрдб рдореЗрдВ рд░реБрдХрд╛ рд╣реБрдЖ рд▓рдХреНрд╖реНрдп

рдЕрдм рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдУрдкрдирдХрд╛рдб рдЯреЗрд▓рдиреЗрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ telnet:
 $ рдЯреЗрд▓рдиреЗрдЯ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ 4455
 рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ :: 1 ...
 127.0.0.1 рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ ...
 рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ред
 рдкрд▓рд╛рдпрди рдЪрд░рд┐рддреНрд░ '^] рд╣реИред
 рдЪрд┐рдк-рдбрд┐рдмрдЧрд░ рдЦреЛрд▓реЗрдВ
 >

рд╕рднреА Openocd рдХрдорд╛рдВрдб рдХреА рдПрдХ рд╕реВрдЪреА рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ helpред
рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП, stepрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ :
 рдЪрд░рдг [рдкрддрд╛]
       рд░рдЬрд┐рд╕реНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдкрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
       рдХрдорд╛рдВрдб рдХрд╛рдЙрдВрдЯрд░ (рдкреАрд╕реА)ред рдпрджрд┐ рдкрддрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ, рддреЛ
       рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдкрддреЗ рдХреЗ рдкрддреЗ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдирд┐рд╖реНрдкрд╛рджрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
 > рдЪрд░рдг 0xbfc00400
 рд▓рдХреНрд╖рд┐рдд рд╕реНрдерд┐рддрд┐: рд░реБрдХрд╛ рд╣реБрдЖ
 рд╕рд┐рдВрдЧрд▓-рд╕реНрдЯреЗрдк, рдкреАрд╕реА: 0xbfc00404 рдХреЗ рдХрд╛рд░рдг MIPS32 рдореЛрдб рдореЗрдВ рд░реБрдХрд╛ рд╣реБрдЖ рд▓рдХреНрд╖реНрдп
 > рдЪрд░рдг
 рд▓рдХреНрд╖рд┐рдд рд╕реНрдерд┐рддрд┐: рд░реБрдХрд╛ рд╣реБрдЖ
 рд╕рд┐рдВрдЧрд▓-рд╕реНрдЯреЗрдк, рдкреАрд╕реА: 0xbfc00408 рдХреЗ рдХрд╛рд░рдг MIPS32 рдореЛрдб рдореЗрдВ рд░реБрдХрд╛ рд╣реБрдЖ рд▓рдХреНрд╖реНрдп
 > рдЪрд░рдг
 рд▓рдХреНрд╖рд┐рдд рд╕реНрдерд┐рддрд┐: рд░реБрдХрд╛ рд╣реБрдЖ
 рд╕рд┐рдВрдЧрд▓-рд╕реНрдЯреЗрдк, рдкреАрд╕реА: 0xbfc0040c рдХреЗ рдХрд╛рд░рдг MIPS32 рдореЛрдб рдореЗрдВ рд░реБрдХрд╛ рд╣реБрдЖ рд▓рдХреНрд╖реНрдп

рдирд┐рдореНрди рдУрдкрдиреЛрдХреИрдб рдХрдорд╛рдВрдб рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
 reg [(register_number | register_name) [(рдореВрд▓реНрдп | 'рдмрд▓')]]
       рдкреНрд░реЛрд╕реЗрд╕рд░ рд░рдЬрд┐рд╕реНрдЯрд░ рд╡реИрд▓реНрдпреВ рдХреЛ рдкрдврд╝реЗрдВ рдпрд╛ рд▓рд┐рдЦреЗрдВред
       рд╕рднреА рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд░реЗрдЬ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
       рдпрджрд┐ 'рдмрд▓' рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
       рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдШрдЯрд╛рдирд╛ (рдХреИрд╢реНрдб рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп)
       рдорд╛рди)ред
 
 mwb ['phys'] address value [count]
          address ,     value.
          phys,   address тАФ  ,
          тАФ .
          count    address  
           count,    
         value.
 
 mwh ['phys'] address value [count]
         mwb,     16- .
 
 mww ['phys'] address value [count]
         mwb,     32- .
 
 mdb ['phys'] address [count]
               address.
          phys,   address тАФ  ,
          тАФ .
          count        
       рдкрддрд╛ рд▓рдВрдмрд╛рдИ рд▓рдВрдмрд╛рдИ рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рд╕рд░рдгреАред
 
 mdh ['рд╢рд░реАрд░'] рдкрддрд╛ [рдЧрд┐рдирддреА]
       рдХрдорд╛рдВрдб mdb рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдЗрдЯ рдХреЗ рдмрдЬрд╛рдп 16-рдмрд┐рдЯ рд╢рдмреНрдж рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
 
 mdw ['рд╢рд░реАрд░'] рдкрддрд╛ [рдЧрд┐рдирддреА]
       рдХрдорд╛рдВрдб mdb рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдЗрдЯ рдХреЗ рдмрдЬрд╛рдп 32-рдмрд┐рдЯ рд╢рдмреНрдж рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдУрдкрдиреЛрдХреЙрд░реНрдб 0.9.0 рдХрд╛ рдирд╡реАрдирддрдо (рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп) рд╕рдВрд╕реНрдХрд░рдг рдПрдордЖрдИрдкреА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдЖрд░рдПрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░ рд╣реИ ред
рдПрдХ рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░ рдХреА рдХрдореА, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╕реАрдзреЗ-рд╕реАрдзреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕реНрдЯреЗрдк-рдмрд╛рдп-рд╕реНрдЯреЗрдк рдмрдирд╛ рджреЗрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдУрдкрдирдХреЙрдб рдмрд╣реБрдд рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк GDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЖрд░рд╛рдо рдХреЗ рд╕реНрддрд░ рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдорд╛рдзрд╛рди 2: Openocd + GDB рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


Openocd + GDB рдмрдВрдбрд▓ рдореЗрдВ, рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ GDB рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЙрд╕ рддрдВрддреНрд░ рд╕реЗ рдЕрдореВрд░реНрдд рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ Openocd GDB рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд╕реАрдзреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред
EJTAG рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ MIPS рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП GDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдУрдкрдирдХреЙрдб рдкрд░ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ:
  • рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, MIPS рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ disassembler GDB рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ;
  • рд╕реНрд░реЛрдд рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реА-рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбрд┐рдмрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЬреАрдбреАрдмреА рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реА-рдХреЛрдб рдХреА рдХрд┐рд╕ рд▓рд╛рдЗрди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡реЗрд░рд┐рдПрдмрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ, рди рдХрд┐ рд░рд╣рд╕реНрдпрдордп рдкрддреЗ рд╡рд╛рд▓реЗ рдореЗрдореЛрд░реА рд╕реЗрд▓;
  • openocd GDB GDB Remote Serial Protocol; qemu , , тАФ GDB;
  • , GDB TAB.

рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ GDB рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ Openocd рдХреЛ рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрд╢рд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ, GDB рд╡рд┐рд╢рд▓рд┐рд╕реНрдЯ рдХреЛ EJTAG рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ GDB рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдкрд░ рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рдирд┐рд░реНрджреЗрд╢ рдУрдкрдирдХрд╛рдб рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди MIPS рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП, рдУрдкрдирдХреЛрдб рдореЗрдВ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдХрдо рд╕реЗ рдХрдо рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
  • sdbbp, , openocd sdbbp , sdbbp , . software breakpoint. , .
  • . . , hardware breakpoint, .

рд╣рд╛рд▓рд╛рдВрдХрд┐ GDB рд░рд┐рдореЛрдЯ рд╕реАрд░рд┐рдпрд▓ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рднреАрддрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рдПрдХ рдЕрдВрддрд░ рд╣реИ ( рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╕рдВрдХреБрд▓ z рдФрд░ z0 рджреЗрдЦреЗрдВ ), рдФрд░ GDB рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯреНрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд╣реЛред рдПрдХ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛ рдЯреВрдЯрдирд╛ред рддрджрдиреБрд╕рд╛рд░, рдУрдкрдирдХрд╛рдб рдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдХрд▓реНрдк gdb_breakpoint_overrideрд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рджреЛ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
GDB рдбрд┐рдмрдЧрд░ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ GDB рд╕рд░реНрд╡рд░ рдХреЛ Openocd рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ TCP рдкреЛрд░реНрдЯ 3333 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ TCP рдкреЛрд░реНрдЯ рдирдВрдмрд░ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ gdb_portред
MIPS рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ Openocd GDB рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ MDB рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде GDB рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ x86 / amd64- рдЖрдзрд╛рд░рд┐рдд рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдбреЗрдмрд┐рдпрди рд▓рд┐рдирдХреНрд╕ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдкрдирдХрд╛рд░реНрдб рдФрд░ рдЬреАрдбреАрдмреА рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЦрдЯреНрдЯрд╛ рдХреЛрдбрдмреИрдВрдХ рдкреИрдХреЗрдЬ рд╕реЗ mips-linux-gnu-gdb рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ , рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕рдВрд╢реЛрдзрди рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХрд┐ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдордп, рдирд╡реАрдирддрдо Sourcery CodeBench mips-2015.05-18 рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЬрд┐рд╕реЗ рдордИ 2015 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред
рдЖрдЗрдП рдЕрднреНрдпрд╛рд╕ рдореЗрдВ Openocd + GDB рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред Openocd рдЪрд▓рд╛рдПрдВ:
 # рдУрдкрдиреЛрдХрдб-рдПрдл рд░рди-рдпреВ-рдмреВрдЯ_рдореЙрдб-рдЯреНрд░реЗрд╕.рд╕реАрдПрдлрдЬреА \
 > -c "gdb_breakpoint_override рд╣рд╛рд░реНрдб" -c "рдЪрд░рдг 0xbfc00400"

Openocd рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рджреЛ рдХрдорд╛рдВрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рджрд╛рди рдХрд░реЗрдЧреА:
  • рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рднрд▓реЗ рд╣реА рдЬреАрдбреАрдмреА рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реИ (рдкрддреЗ 0xbfc0xxxx ROM рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛);
  • 0xbfc00400 рдкрддреЗ рд╕реЗ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкреНрд░реЛрд╕реЗрд╕рд░ рдлрд┐рд░ рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдПрдХ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реЗрдВ рдФрд░ GDB рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:
 $ /opt/mips-2015.05/bin/mips-linux-gnu-gdb
 рдЬреАрдПрдирдпреВ рдЬреАрдбреАрдмреА (рд╕реЛрд░рд░реА рдХреЛрдбрдмреЗрдВрдЪ рд▓рд╛рдЗрдЯ 2015.05-18) 7.7.50.20140217-рд╕реАрд╡реАрдПрд╕
 рдХреЙрдкреАрд░рд╛рдЗрдЯ (C) 2014 рдлреНрд░реА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдлрд╛рдЙрдВрдбреЗрд╢рди, рдЗрдВрдХред
 рд▓рд╛рдЗрд╕реЗрдВрд╕ GPLv3 +: GNU GPL рд╕рдВрд╕реНрдХрд░рдг 3 рдпрд╛ рдмрд╛рдж рдореЗрдВ <http://gnu.org/licenses/gpl.html>
 рдпрд╣ рдореБрдлреНрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИ: рдЖрдк рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдФрд░ рдкреБрдирд░реНрд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред
 рдХрд╛рдиреВрди рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдордд рд╕реАрдорд╛ рддрдХ рдХреЛрдИ рд╡рд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИред рдЯрд╛рдЗрдк рдХрд░реЗрдВ "рд╢реЛ рдХреЙрдкреА"
 рдФрд░ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП "рд╢реЛ рд╡рд╛рд░рдВрдЯреА"ред
 рдЗрд╕ GDB рдХреЛ "--host = i686-pc-linux-gnu --target = mips-linux-gnu" рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджрд┐рдЦрд╛рдПрдВ" рдЯрд╛рдЗрдк рдХрд░реЗрдВред
 рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рджреЗрдЦреЗрдВ:
 <Https://sourcery.mentor.com/GNUToolchain/>ред
 рдСрдирд▓рд╛рдЗрди GDB рдореИрдиреБрдЕрд▓ рдФрд░ рдЕрдиреНрдп рдкреНрд░рд▓реЗрдЦрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ:
 <Http://www.gnu.org/software/gdb/documentation/>ред
 рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП, "рд╕рд╣рд╛рдпрддрд╛" рдЯрд╛рдЗрдк рдХрд░реЗрдВред
 "рд╢рдмреНрдж" рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЖрджреЗрд╢реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдПрдкреНрд░реЛрдкреЛрд╕ рд╢рдмреНрдж" рдЯрд╛рдЗрдк рдХрд░реЗрдВред
 (Gdb)

рдЕрдм рд╣рдо GDB рдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдмрддрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдЕрдЧрд▓реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВрдЧреЗ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдУрдкреЗрдирдХрд╛рдб GDB рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝реЗрдВрдЧреЗ:
 (gdb) рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ mips рд╕реЗрдЯ рдХрд░реЗрдВ: isa32r2
 рд▓рдХреНрд╖реНрдп рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ: isa32r2
 (gdb) рдПрдВрдбрд┐рдпрди рдмрдбрд╝рд╛ рд╕реЗрдЯ рдХрд░реЗрдВ
 рд▓рдХреНрд╖реНрдп рдмрдбрд╝рд╛ рдПрдВрдбрд┐рдпрди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ
 (gdb) рдбрд┐рд╕-рдЕрд╕реЗрдВрдмрд▓-рдиреЗрдХреНрд╕реНрдЯ-рд▓рд╛рдЗрди рдСрди рд╕реЗрдЯ рдХрд░реЗрдВ
 (gdb) рд▓рдХреНрд╖реНрдп рджреВрд░рд╕реНрде: 3333
 рд░рд┐рдореЛрдЯ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░: 3333
 0xbfc00404 рдореЗрдВ ?? ()
 => 0xbfc00404: 40 80 08 00 mtc0 рд╢реВрдиреНрдп, c0_random

GDB рдореЗрдВ рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ stepiред рдЖрдЗрдП рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреАрдбреАрдмреА рдХреА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рд╕реЗ рднреНрд░рдорд┐рдд рди рд╣реЛрдВ (рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ), рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред
 (gdb) рд╕реНрдЯреЗрдкреА
 рдЪреЗрддрд╛рд╡рдиреА: GDB рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд 0xbfc00408 рдкрд░ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред
 
     GDB 0xbfc00408 рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИ
 рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕реНрдЯреИрдХ рдлреНрд░реЗрдо рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
 рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ GDB рдЙрд╕ рд╕реНрдЯреИрдХ рдлреНрд░реЗрдо рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛
 рдЗрд╕рдХреЗ рдиреАрдЪреЗ рдХреЗ рддрдЦреНрддреЗред
     рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд┐рд╕реА рдЕрдорд╛рдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рдЙрдВрдЯрд░ рдпрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИ
 рд╕реНрдЯреЗрдХ рд╕реВрдЪрдХред
     рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ GDB рдХреЛ рдмрд╕ рдЖрдЧреЗ рдкреАрдЫреЗ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП
 рдХреЛрдб рдХреЗ рд▓рд┐рдП 0xbfc00408 рд╕реЗ рдЬреЛ рдХреА рд╢реБрд░реБрдЖрдд рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ
 рдлрд╝рдВрдХреНрд╢рди, рдЖрдк `рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЛрдЬ рдХреА рд╕реАрдорд╛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ
 heuristic-рдмрд╛рдбрд╝-рдкреЛрд╕реНрдЯ 'рдХрдорд╛рдиред
 рдореЗрдВ 0xbfc00408 ?? ()
 => 0xbfc00408: 40 80 10 00 mtc0 рд╢реВрдиреНрдп, c0_entrylo0
 (gdb) рд╕реНрдЯреЗрдкреА
 рдЪреЗрддрд╛рд╡рдиреА: GDB 0xbfc0040c рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдирд╣реАрдВ рдвреВрдБрдв рд╕рдХрддрд╛ред
 рдореЗрдВ 0xbfc0040c ?? ()
 => 0xbfc0040c: 40 80 18 00 mtc0 рд╢реВрдиреНрдп, c0_entrylo1
 (gdb) рд╕реНрдЯреЗрдкреА
 рдЪреЗрддрд╛рд╡рдиреА: GDB рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд 0xbfc00410 рдкрд░ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред
 0xbfc00410 рдореЗрдВ ?? ()
 => 0xbfc00410: 40 80 20 00 mtc0 рд╢реВрдиреНрдп, c0_context
 (Gdb)

рдЕрдм 0xbfc00408 рдкрд░ 32-рдмрд┐рдЯ рд╢рдмреНрдж рдкрдврд╝реЗрдВ:
 (gdb) p / x * 0xbfc00408
 $ 1 = 0x40801000

рдкреНрд░реЛрд╕реЗрд╕рд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ info registers:
 (gdb) рдЬрд╛рдирдХрд╛рд░реА рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ
           рд╢реВрдиреНрдп рдкрд░ v0 v1 a1 a2 a3 a
  R0 00000000 37c688e2 22b15a00 28252198 0c12d319 4193c014 84e49102 06193640
             t0 t1 t2 t3 t4 t5 t6 t7
  R8 00000002 9f003bc0 92061301 1201c163 31d004a0 92944911 ac031248 b806001c
             s0 s1 s2 s3 s4 s5 s6 s7
  R16 8bc81985 402da011 c94d2454 88d5a554 81808e0d cc445151 4401a826 50020402
             t8 t9 k0 k1 gp sp s8 ra
  R24 01c06b30 01000000 10000004 fffffffe 9f003bc0 54854eab 329d626b bfc004b4
         рд╕реНрдЯреЗрдЯрд╕ рд▓реЛ рд╣рд╛рдп рдмрджрд╡рджреНрд░рдж рдкреАрд╕реА
       00400004 00244309 b9ca872c ed6a1f00 60808350 bfc00410
           fcsr fir
       00000000 00000000

GDB рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЖрджреЗрд╢реЛрдВ рдФрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдиреНрдирдд рдЙрдкрдХрд░рдг рд╣реИ; рдЬреАрдбреАрдмреА рдХреЗ рд╕рд╛рде рдХрд░реАрдмреА рдкрд░рд┐рдЪрд┐рдд рдХреЗ рд▓рд┐рдП, рдореИрдВ рдкрд╛рдардХ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЬреАрдбреАрдмреА рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ ред

AR9331 рд░реИрдо рдирд┐рдпрдВрддреНрд░рдХ рдХреА рд╢реБрд░реБрдЖрдд


рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЬреАрдбреАрдмреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдмреНрд▓реИрдХ рд╕реНрд╡рд┐рдлреНрдЯ рдмреЛрд░реНрдб рдкрд░ рдпреВ-рдмреВрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЯреНрд░реЗрд╕ рдХрд░рдХреЗ, рд╣рдо рд░реИрдо рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рдПрдХ рдЕрдиреБрдХреНрд░рдо рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдЗрд╕рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕реЗ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реИ рдЕрдЧрд░ рд╣рдо U- рдмреВрдЯ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдУрдкрдирдХрд╛рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреНрд▓реИрдХ рд╕реНрд╡рд┐рдлреНрдЯ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рд╛рде рд╣реА, рдмреНрд▓реИрдХ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдмреВрдЯрд▓реЛрдбрд░ рдмрдирд╛рддреЗ рд╕рдордп рдпрд╣ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЕрдиреБрдХреНрд░рдо рдЙрдкрдпреЛрдЧреА рд╣реИред
Openocd рдЪрд▓рд╛рдПрдВ (рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдХреА рддрд░рд╣):
 # рдУрдкрдиреЛрдХрдб-рдПрдл рд░рди-рдпреВ-рдмреВрдЯ_рдореЙрдб-рдЯреНрд░реЗрд╕.рд╕реАрдПрдлрдЬреА \
 > -c "gdb_breakpoint_override рд╣рд╛рд░реНрдб" -c "рдЪрд░рдг 0xbfc00400"

GDB рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВ bs-u-boot-trace-gdb.conf:
 рд╕реЗрдЯ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ mips: isa32r2
 рдПрдВрдбрд┐рдпрди рдмрдбрд╝рд╛ рд╕реЗрдЯ рдХрд░реЗрдВ
 рдЬреБрджрд╛-рдЕрдЧрд▓реА-рд▓рд╛рдЗрди рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ
 
 рд▓рдХреНрд╖реНрдп рджреВрд░рд╕реНрде: 3333
 
 рдкреЗрдЬреЗрд╢рди рдмрдВрдж рдХрд░реЗрдВ
 
 рд▓реЙрдЧрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ bs_gdb.log рд╕реЗрдЯ рдХрд░реЗрдВ
 рд▓реЙрдЧрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░реЗрдВ
 
 рдЬрдмрдХрд┐ $ рдкреАрд╕реА! = (рд╢реВрдиреНрдп (*) ()) 0x9f002ab0
         stepi
         рдЬрд╛рдирдХрд╛рд░реА рд░рдЬрд┐рд╕реНрдЯрд░
 рд╕рдорд╛рдкреНрдд
 
 рдЕрд▓рдЧ рдХрд░реЗрдВ
 
 рдЫреЛрдбрд╝рдирд╛

рдкрд┐рдЫрд▓реЗ рдЦрдВрдб рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ GDB рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ bs_gdb.log, рдФрд░ рдкреЗрдЬрд┐рдиреЗрд╢рди (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреГрд╖реНрда рдХреА рдкреБрд╖реНрдЯрд┐) рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдмрд╛рдж рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЪрдХреНрд░реАрдп рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЬрдм рдкреАрд╕реА рд░рдЬрд┐рд╕реНрдЯрд░ (рдирд┐рдореНрди рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдкрддрд╛ рд░рдЬрд┐рд╕реНрдЯрд░) рдорд╛рди 0x9f002ab0 рдкрд░ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рддреЛ GDB рдУрдкрдирдХрд╛рдб рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, GDB рдХреЗ рдЕрдВрдд рдореЗрдВ, bs_gdb.logрдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкреВрд░реНрдг рдирд┐рд╢рд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА ред
GDB рдХрд╛ рд╢реБрднрд╛рд░рдВрдн рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
 $ /opt/mips-2015.05/bin/mips-linux-gnu-gdb -x bs-u-рдмреВрдЯ-рдЯреНрд░реЗрд╕-gdb.conf

рдиреЛрдЯ: bs-u-boot-trace-gdb.confрдмреЛрд░реНрдб рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ u-boot_mod рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдПрдВрдЯреА-рдорд┐рд╕реНрдЯреНрд░реА рдПрд░рд░ AR9331 рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░ рджреЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдирд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧреАред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, Openocd рдФрд░ GDB рдмрдВрдж рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ Openocd рдФрд░ GDB рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБред

рдЕрдм рдпрд╣ рдЫреЛрдЯреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╣реИ - рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ bs_gdb.logрд╕рднреА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ sw(рд╕реНрдЯреЛрд░ рд╢рдмреНрдж, рдЕрд░реНрдерд╛рдд, 32-рдмрд┐рдЯ рдорд╛рди рд▓рд┐рдЦреЗрдВ)ред AR9331 рдореЗрдореЛрд░реА рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░ 32-рдмрд┐рдЯ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╕реНрдЯреЛрд░ рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рдбрд┐рд╕реНрд╕реИрдореНрдмрд▓рд░ рдХреЗрд╡рд▓ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рддрд░реНрдХ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдирд╛рдо рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИsw
 => 0xbfc004ec: ad f9 00 00 sw t9,0 (t7)

рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдореВрд▓реНрдп рдирд╣реАрдВ, рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕реЗ bs_gdb.logрд╕реНрд╡реЗ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╡рд╛рд▓реА рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ ред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕ рдорд╛рди рдХреЗ рд╕рд╛рде рд╕реНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрддрд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд╝рд╛рдЗрд▓ рдХреЛ bs_gdb.logрдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрдзреАрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг parse_gdb_output.pl рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 #!/usr/bin/perl -w
 
 my %r;
 
 foreach $i (qw(zero at v0 v1 a0 a1 a2 a3 t0 t1 t2 t3 t4 t5 t6 t7
        s0 s1 s2 s3 s4 s5 s6 s7 t8 t9 k0 k1 gp sp s8 ra)) {
    $r{$i} = "none";
 }
 
 sub parse_reg($)
 {
    $_ = $_[0];
    if (/^ R/) {
        my @fields = split m'\s+';
        my $f = 2;
        my @rgs;
 
        @rgs = qw(zero at v0 v1 a0 a1 a2 a3) if (/^ R0/);
        @rgs = qw(t0 t1 t2 t3 t4 t5 t6 t7) if (/^ R8/);
        @rgs = qw(s0 s1 s2 s3 s4 s5 s6 s7) if (/^ R1/);
        @rgs = qw(t8 t9 k0 k1 gp sp s8 ra) if (/^ R2/);
 
        foreach $i (@rgs) {
            $r{$i} = $fields[$f];
            $f = $f + 1;
        }
    }
 }
 
 while (<>) {
    if (/^=>([^s]*)\tsw\t([^,]*),(\d+)\(([^)]*)\)/) {
        my $rs = $2;
        my $offset = $3;
        my $rd = $4;
 
        parse_reg(<>);
        parse_reg(<>);
        parse_reg(<>);
        parse_reg(<>);
 
        print("$1    sw $rs={0x$r{$rs}}, $offset($rd={0x$r{$rd}})\n");
    }
 }


рдкреНрд░рдХреНрд╖реЗрдкрдг parse_gdb_output.plрдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
$ grep "^ = \ | ^ R" bs_gdb.log | ./parse_gdb_output.pl

рдпрд╣рд╛рдБ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ parse_gdb_output.pl(рдирд┐рд╢рд╛рди ' <<< PLL' рдФрд░ ' <<< DDR' рдХреЛ рдмрд╛рдж рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛):
 ...
  0x9f002700: рд╡рд┐рдЬреНрдЮрд╛рдкрди cf 00 00 sw t7 = {0x00dbd860}, 0 (t6 = {0xb8116248})
  0x9f00271c: ad f9 00 00 sw t9 = {0x000fffff}, 0 (t7 = {0xb800009c})
  0x9f0027a0: ad f9 00 00 sw t9 = {0x00018004}, 0 (t7 = {0xb8050008}) <<< PLL
  0x9f0027dc:   ad f9 00 00    sw t9={0x00000352}, 0(t7={0xb8050004}) <<<
  0x9f002840:   ad f9 00 00    sw t9={0x40818000}, 0(t7={0xb8050000}) <<<
  0x9f002898:   ad f9 00 00    sw t9={0x001003e8}, 0(t7={0xb8050010}) <<<
  0x9f0028f4:   ad f9 00 00    sw t9={0x00818000}, 0(t7={0xb8050000}) <<<
  0x9f002970:   ad cf 00 00    sw t7={0x00800000}, 0(t6={0xb8116248})
 ...
  0x9f002994:   ad cf 00 00    sw t7={0x40800700}, 0(t6={0xb8116248})
  0x9f002a54:   ad f9 00 00    sw t9={0x00008000}, 0(t7={0xb8050008})
  0x9f00309c:   af 38 00 00    sw t8={0x7fbc8cd0}, 0(t9={0xb8000000}) <<< DDR
  0x9f0030b0:   af 38 00 00    sw t8={0x9dd0e6a8}, 0(t9={0xb8000004}) <<<
  0x9f0030dc:   af 38 00 00    sw t8={0x00000a59}, 0(t9={0xb800008c}) <<<
  0x9f0030ec: af 38 00 00 sw t8 = {0x00000008}, 0 (t9 = {0xb8000010}) <<<
 ...

рдЪреВрдВрдХрд┐ рдХреНрд▓реЙрдХ рд╕рд┐рдЧреНрдирд▓ рдЬрдирд░реЗрдЯрд░ (рдкреАрдПрд▓рдПрд▓) рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдкрддреЗ рдФрд░ рдбреАрдбреАрдЖрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЗрдореЛрд░реА рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдкрддреЗ рдЬреНрдЮрд╛рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рд░реИрдо рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рди рдирдВрдмрд░реЛрдВ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд╛рд░рд╛рдВрд╢


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

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


All Articles