рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдбрд┐рдмрдЧрдорди рдХреЗ рд╡реНрдпрд╡рдзрд╛рди рдФрд░ рдЙрд╕рд╕реЗ рдЬреБрдбрд╝реЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереАредрдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо UART рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦреЗрдВрдЧреЗредрдирд┐рдореНрди рд╕реНрддрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛
рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ GDB рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ:- рдмрдбрд╝рд╛ рдбреЗрдЯрд╛ рдЕрддрд┐рд░реЗрдХред рдкрддреЗ, рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдореВрд▓реНрдп, рдЪрд░ рд╣реЗрдХреНрд╕-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬреЛ рд╕рдВрджреЗрд╢ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ 2 рдЧреБрдирд╛ рдмрдврд╝рд╛рддрд╛ рд╣реИ
- рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рдПрдХрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрди рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗ
- рдкреИрдХреЗрдЯ рдХреЗ рдЕрдВрдд рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдпрд╛ рддреЛ рдЯрд╛рдЗрдордЖрдЙрдЯ (рдЯрд╛рдЗрдорд░ рд╡реНрдпрд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛), рдпрд╛ рдПрдХ рдЬрдЯрд┐рд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдорд╢реАрди рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ UART рдореЗрдВ рдмрд┐рддрд╛рдП рд╕рдордп рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛
рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдФрд░ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдпрдВрддреНрд░рдг рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:- 0xAA 0xFF - рдлрд╝реНрд░реЗрдо рдХреА рд╢реБрд░реБрдЖрдд
- 0xAA 0x00 - рдлрд╝реНрд░реЗрдо рдХрд╛ рдЕрдВрдд
- 0xAA 0xA5 - рдЗрдВрдЯрд░рдкреНрдЯ
- 0xAA 0xAA - 0xAA рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд
рд░рд┐рд╕реЗрдкреНрд╢рди рдХреЗ рджреМрд░рд╛рди рдЗрди рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 4 рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдСрдЯреЛрдореЗрдЯрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:- рдИрдПрд╕рд╕реА рдЪрд░рд┐рддреНрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ
- рдлреНрд░реЗрдо рд╕реАрдХреНрд╡реЗрдВрд╕ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рджреВрд╕рд░реЗ рдХрд┐рд░рджрд╛рд░ рдХрд╛ рдЗрдВрддрдЬрд╛рд░
- рдбреЗрдЯрд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд
- рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдПрдХ Esc рдЪрд░рд┐рддреНрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
рд▓реЗрдХрд┐рди рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 7 рдХреА рдЬрд░реВрд░рдд рд╣реИ:- рдлрд╝реНрд░реЗрдо рдХреА рдкрд╣рд▓реА рдмрд╛рдЗрдЯ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛
- рдлрд╝реНрд░реЗрдо рдХрд╛ рджреВрд╕рд░рд╛ рдмрд╛рдЗрдЯ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛
- рдбреЗрдЯрд╛ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ
- рдлреНрд░реЗрдо рдХреЗ рдЕрдВрдд рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛
- Esc рдЪрд░рд┐рддреНрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рднреЗрдЬ рд░рд╣рд╛ рд╣реИ
- рдкрд╣рд▓рд╛ рдЗрдВрдЯрд░рдкреНрдЯ рдмрд╛рдЗрдЯ рднреЗрдЬрдирд╛
- рджреВрд╕рд░рд╛ рдЗрдВрдЯрд░рдкреНрдЯ рдмрд╛рдЗрдЯ рднреЗрдЬрдирд╛
рдЖрдЗрдП рд╣рдо рдЙрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдЪрд░ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреЗ:typedef struct
{
unsigned tx:1;
unsigned StopProgramm:1;
union {
enum rx_state_e
{
rxWaitS = 0,
rxWaitC = 1,
rxReceive = 2,
rxEsc = 3,
} rx_state;
enum tx_state_e
{
txSendS = 0,
txSendC = 1,
txSendN = 2,
txEsc = 3,
txEnd = 4,
txSendS2 = 5,
txBrk = 6,
} tx_state;
};
uint8_t pos;
uint8_t buf[128];
uint8_t txCnt;
} dbg_t;
#define dbgG ((dbg_t*)DBG_ADDR)
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдорд╢реАрдиреЛрдВ рдХреА рдЕрд╡рд╕реНрдерд╛рдУрдВ рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рдо рдХреЛ рдЖрдзреЗ рдбреБрдкреНрд▓реЗрдХреНрд╕ рдореЛрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдм рдЖрдк рдЦреБрдж рдХреЛ рдПрдХ рдмрд╛рдзрд╛ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдСрдЯреЛрдореЗрдЯрд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВредUART рдХреЗ рд╣реИрдВрдбрд▓рд░void USART6_IRQHandler(void)
{
if (((USART6->ISR & USART_ISR_RXNE) != 0U)
&& ((USART6->CR1 & USART_CR1_RXNEIE) != 0U))
{
rxCb(USART6->RDR);
return;
}
if (((USART6->ISR & USART_ISR_TXE) != 0U)
&& ((USART6->CR1 & USART_CR1_TXEIE) != 0U))
{
txCb();
return;
}
}
void rxCb(uint8_t byte)
{
dbg_t* dbg = dbgG;
if (dbg->tx)
return;
switch(dbg->rx_state)
{
default:
case rxWaitS:
if (byte==0xAA)
dbg->rx_state = rxWaitC;
break;
case rxWaitC:
if (byte == 0xFF)
dbg->rx_state = rxReceive;
else
dbg->rx_state = rxWaitS;
dbg->pos = 0;
break;
case rxReceive:
if (byte == 0xAA)
dbg->rx_state = rxEsc;
else
dbg->buf[dbg->pos++] = byte;
break;
case rxEsc:
if (byte == 0xAA)
{
dbg->buf[dbg->pos++] = byte;
dbg->rx_state = rxReceive;
}
else if (byte == 0x00)
{
parseAnswer();
}
else
dbg->rx_state = rxWaitS;
}
}
void txCb()
{
dbg_t* dbg = dbgG;
switch (dbg->tx_state)
{
case txSendS:
USART6->TDR = 0xAA;
dbg->tx_state = txSendC;
break;
case txSendC:
USART6->TDR = 0xFF;
dbg->tx_state = txSendN;
break;
case txSendN:
if (dbg->txCnt>=dbg->pos)
{
USART6->TDR = 0xAA;
dbg->tx_state = txEnd;
break;
}
if (dbg->buf[dbg->txCnt]==0xAA)
{
USART6->TDR = 0xAA;
dbg->tx_state = txEsc;
break;
}
USART6->TDR = dbg->buf[dbg->txCnt++];
break;
case txEsc:
USART6->TDR = 0xAA;
dbg->txCnt++;
dbg->tx_state = txSendN;
break;
case txEnd:
USART6->TDR = 0x00;
dbg->rx_state = rxWaitS;
dbg->tx = 0;
CLEAR_BIT(USART6->CR1, USART_CR1_TXEIE);
break;
case txSendS2:
USART6->TDR = 0xAA;
dbg->tx_state = txBrk;
break;
case txBrk:
USART6->TDR = 0xA5;
dbg->rx_state = rxWaitS;
dbg->tx = 0;
CLEAR_BIT(USART6->CR1, USART_CR1_TXEIE);
break;
}
}
рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдШрдЯрд┐рдд рд╣реБрдИ рдШрдЯрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрдВрдЯрд░рдЪреЗрдВрдЬ рд╣реИрдВрдбрд▓рд░ рдпрд╛ рддреЛ рдПрдХ рд░рд┐рд╕реАрд╡рд┐рдВрдЧ рдорд╢реАрди рдпрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдорд╢реАрди рдХрд╣рд▓рд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдПрдХ рдкреИрдХреЗрдЯ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ:void parseAnswer()
{
dbg_t* dbg = dbgG;
dbg->pos = 1;
dbg->buf[0] = 0x33;
dbg->txCnt = 0;
dbg->tx = 1;
dbg->tx_state = txSendS;
SET_BIT(USART6->CR1, USART_CR1_TXEIE);
}
рд╕рдВрдХрд▓рди, рд╕реАрдирд╛, рдЪрд▓рд╛рдирд╛ред рдкрд░рд┐рдгрд╛рдо рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛редрд╡рд┐рдирд┐рдордп рд╡рд┐рдирд┐рдордп рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ GDB рд╕рд░реНрд╡рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реЗ рдХрдорд╛рдВрдб рдПрдирд╛рд▓реЙрдЧ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:- рдореЗрдореЛрд░реА рд░реАрдбрд┐рдВрдЧ
- рдореЗрдореЛрд░реА рд░рд┐рдХреЙрд░реНрдб
- рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдВрдж рдХрд░реЛ
- рдирд┐рд░рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди
- рдЧрд┐рд░реА рд░рдЬрд┐рд╕реНрдЯрд░ рдкрдврд╝рд╛
- рдЧрд┐рд░реА рд░рдЬрд┐рд╕реНрдЯрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
- рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдирд╛
- рд╡рд┐рд░рд╛рдо рдмрд┐рдВрджреБ рд╣рдЯрд╛рдПрдБ
рдХрдорд╛рдВрдб рдХреЛ рдбреЗрдЯрд╛ рдХреЗ рдкрд╣рд▓реЗ рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЯреАрдореЛрдВ рдХреЗ рдХреЛрдб рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реИрдВ:- 2 - рдореЗрдореЛрд░реА рдкрдврд╝реЗрдВ
- 3 - рдореЗрдореЛрд░реА рд░рд┐рдХреЙрд░реНрдб
- 4 - рдмрдВрдж рдХрд░реЛ
- 5 - рдЬрд╛рд░реА рд░рдЦрд╛
- 6 - рдорд╛рдорд▓рд╛ рдкрдврд╝рд╛
- 7 - рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
- 8 - рдмреНрд░реЗрдХрд┐рдВрдЧ рдХреНрд▓рд┐рдпрд░рд┐рдВрдЧ
- 9 - рдХрджрдо (рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓)
- 10 - рд░рдЬрд┐рд╕реНрдЯрд░ рдПрдВрдЯреНрд░реА (рд▓рд╛рдЧреВ рдирд╣реАрдВ)
рдкреИрд░рд╛рдореАрдЯрд░ рдбреЗрдЯрд╛ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗредрдЙрддреНрддрд░ рдореЗрдВ рдХрдорд╛рдВрдб рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдЯреАрдо рдиреЗ рднреЗрдЬрд╛ рд╣реИредрдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдмрд╕рдлреЙрд▓реНрдЯ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ M3 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдорд╛рд╕реНрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ M0 рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдбрдлреЙрд▓реНрдЯ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛редрд╕реБрд░рдХреНрд╖рд┐рдд рдпрд╛рджрдЧрд╛рд░int memcpySafe(uint8_t* to,uint8_t* from, int len)
{
static const uint32_t BFARVALID_MASK = (0x80 << SCB_CFSR_BUSFAULTSR_Pos);
int cnt = 0;
SCB->CFSR |= BFARVALID_MASK;
uint32_t mask = __get_FAULTMASK();
__disable_fault_irq();
SCB->CCR |= SCB_CCR_BFHFNMIGN_Msk;
while ((cnt<len))
{
*(to++) = *(from++);
cnt++;
}
SCB->CCR &= ~SCB_CCR_BFHFNMIGN_Msk;
__set_FAULTMASK(mask);
return cnt;
}
рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯрд┐рдВрдЧ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░рдЬрд┐рд╕реНрдЯрд░ FP_COMP рдХреА рдЦреЛрдЬ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИредрдХреЛрдб рд╕реНрдерд╛рдкрд┐рдд рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ
dbg->pos = 0;
addr = ((*(uint32_t*)(&dbg->buf[1])))|1;
for (tmp = 0;tmp<8;tmp++)
if (FP->FP_COMP[tmp] == addr)
break;
if (tmp!=8)
break;
for (tmp=0;tmp<NUMOFBKPTS;tmp++)
if (FP->FP_COMP[tmp]==0)
{
FP->FP_COMP[tmp] = addr;
break;
}
break;
рд╕реЗрдЯ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХреА рдЦреЛрдЬ рдХрд░рдХреЗ рд╕рдлрд╛рдИ рдХреА рдЬрд╛рддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рдкреАрд╕реА рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗрдЯ рд╡рд┐рд░рд╛рдо рдмрд┐рдВрджреБ рдХреЛ рд░реЛрдХрдирд╛ред UART рдХреЗ рдмреАрдЪ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░, рдХрд░реНрдиреЗрд▓ рддреБрд░рдВрдд DebugMon_Handler рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИредрдбреАрдмрдЧрдореИрди рд╣реИрдВрдбрд▓рд░ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:- 1. рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- 2. рд╕рднреА рд╕реЗрдЯ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдХреЛ рдордВрдЬреВрд░реА рджреЗ рджреА рдЬрд╛рддреА рд╣реИред
- 3. uart рдореЗрдВ рдХрдорд╛рдВрдб рдХреЛ рдЬрд╡рд╛рдм рднреЗрдЬрдиреЗ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ (рдЕрдЧрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛)
- 4. рдЗрдВрдЯрд░рдкреНрдЯ рдЕрдиреБрдХреНрд░рдо рднреЗрдЬрдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
- 5. рд▓реВрдк рдореЗрдВ, рдкреНрд░реЗрд╖рд┐рдд рдФрд░ рдкреНрд░рд╛рдкреНрдд рдорд╢реАрдиреЛрдВ рдХреЗ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЛ рд╕реНрдЯреЙрдк рдлреНрд▓реИрдЧ рдХреЛ рдХрдо рдХрд░рдиреЗ рддрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдбрд┐рдмрдЧрдорди рд╣реИрдВрдбрд▓рд░ рдХреЛрдбvoid DebugMon_Handler(void)
{
dbgG->StopProgramm = 1;
for (int i=0;i<NUMOFBKPTS;i++)
FP->FP_COMP[i] = 0;
while (USART6->CR1 & USART_CR1_TXEIE)
if ((USART6->ISR & USART_ISR_TXE) != 0U)
txCb();
dbgG->tx_state = txSendS2;
dbgG->tx = 1;
SET_BIT(USART6->CR1, USART_CR1_TXEIE);
while (dbgG->StopProgramm)
{
if (((USART6->ISR & USART_ISR_RXNE) != 0U)
&& ((USART6->CR1 & USART_CR1_RXNEIE) != 0U))
rxCb(USART6->RDR);
if (((USART6->ISR & USART_ISR_TXE) != 0U)
&& ((USART6->CR1 & USART_CR1_TXEIE) != 0U))
txCb();
}
}
рдЬрдм рдХрд╛рд░реНрдп рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рддреЛ C-Syshny рд╕реЗ рдХрд░реНрдиреЗрд▓ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрдврд╝реЗрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ ASM рдкрд░ рдХреЛрдб рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ред рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ рдХрд┐ рди рддреЛ рдбреАрдмрдЧрдорди_рд╣реИрдВрдбрд▓рд░, рди рд╣реА рдпреВрдПрдЖрд░рдЯреА рдмрд╛рдзрд╛ рд╣реИрдВрдбрд▓рд░, рди рд╣реА рдорд╢реАрдиреЗрдВ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдЗрд╕рдиреЗ рдХрд░реНрдиреЗрд▓ рд░рдЬрд┐рд╕реНрдЯрд░ рдорд╛рдиреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛редGdb рд╕рд░реНрд╡рд░
рдбреАрдмрдЧрд░ рдХрд╛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╣рд┐рд╕реНрд╕рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрдм рдЖрдЗрдбреА рдФрд░ рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рд▓рд┐рдВрдХ рд▓рд┐рдЦреЗрдВредрд╕реНрдХреНрд░реИрдЪ рд╕реЗ, рдбрд┐рдмрдЧ рд╕рд░реНрд╡рд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЪрд▓реЛ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдХреЛ рд▓реЗрдВред рдЪреВрдВрдХрд┐ рдореБрдЭреЗ .net рдкрд░ рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ред рдУрдкрдирдУрд╕реАрдбреА рдореЗрдВ рдирдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧреЗрдЧрд╛редрд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреВрдЫрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ COM рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдлрд┐рд░ TCP рдкреЛрд░реНрдЯ 3333 рдкрд░ рд╕реБрдирдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ GDB рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИредрд╕рднреА GDB рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрдорд╛рдВрдб рдПрдХ рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реИрдВредрдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ UART рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛редрдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдирд┐рд╖реНрдХрд░реНрд╖
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рд╕реНрд╡рдпрдВ рд╕реБрдкрд░ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИредрд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдореЗрдореЛрд░реА рд╕реЗрдХреНрд╢рди рдореЗрдВ рд░рдЦрдХрд░, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдлреНрд▓реИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ GDB рд╕рд░реНрд╡рд░ рдХреЗрдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рднрд╛рдЧ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП GitHub рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛