рдПрд╕рдЯреАрдПрдо 32 рдкрд╛рд░реНрдЯ 2: рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди

рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреБрдЫ рдмрдбрд╝реЗ рдФрд░ рдЕрд╕рдВрднрд╡ рдХреЛ рдХреБрдЫ рдЫреЛрдЯреЗ рдФрд░ рдмрд╣реБрдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЗрдВ рддреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред


рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдореЗрд░реА рдкрд╣рд▓реА (рдШреГрдгрд┐рдд) рдкреЛрд╕реНрдЯ рдХреЛ рдпрд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордзреНрдпрд╕реНрдереЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдФрд░ рдорд╛рдБ рдХреЛ рдирдорд╕реНрддреЗ рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛! рдФрд░ рд╕рд╛рде рд╣реА рдореИрдВ рдЙрди рд╕рднреА рдкрд╛рдардХреЛрдВ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рднреА рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдореЗрд░реА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреАред рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд░реВрд╕реА рдореЗрдВ рдореИрдВрдиреЗ рдЧреНрд░реЗрдб 6 рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрд╛, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдирд╛рд░рд╛рдЬ рдордд рд╣реЛред

STM32 рднрд╛рдЧ 1: рдореВрд▓ рдмрд╛рддреЗрдВ

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


extern void *_estack;

void Reset_Handler();

void *vectors[] __attribute__((section(".isr_vector"), used)) = {
    &_estack,
    &Reset_Handler
};

void __attribute__((naked, noreturn)) Reset_Handler()
{
    while(1);
}


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

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

(рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗрдХреНрдЯрд░ рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рдкрддреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИ, рдЙрд░реНрдл тАЛтАЛ"рдкреЙрдЗрдВрдЯрд░")ред

рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ред

extern void *_estack;

void Reset_Handler();
void Default_Handler();

void NMI_Handler()   __attribute__((weak, alias("Default_Handler")));
void HardFault_Handler()   __attribute__((weak, alias("Default_Handler")));
//     

void *vectors[] __attribute__((section(".isr_vector"), used)) = {
    &_estack,
    &Reset_Handler
    &NMI_Handler,
    &HardFault_Handler
};

void __attribute__((naked, noreturn)) Reset_Handler()
{
    while(1);
}

void __attribute__((naked, noreturn)) Default_Handler(){
    while(1);
}


рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди Default_Handler () рдЬреЛрдбрд╝рд╛; рдЬреЛ рд╕рднреА рд╡реНрдпрд╡рдзрд╛рдиреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд▓реЗрдЧрд╛, рдмрд┐рд▓реНрдХреБрд▓ред рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, __attribute__((weak, alias("Default_Handler")));рдореИрдВрдиреЗ рдпрд╣ рднреА рдиреЛрдЯ рдХрд┐рдпрд╛ рдХрд┐ рдпрджрд┐ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓рд╛ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕ рд░реБрдХрд╛рд╡рдЯ рдХрд╛ рд╕рдВрдЪрд╛рд▓рдХ рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЕрднреА рдпрд╣ Default_Handler рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рдЖрдкрдХреЗ рд╕рдВрджрд░реНрдн рдореИрдиреБрдЕрд▓ рд╕реЗ рд╕реВрдЪреА рдореЗрдВ рд╕рднреА рд╡реИрдХреНрдЯрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдЪрд╛рдирдХ рдПрдХ рд░реБрдХрд╛рд╡рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдирд╛ рднреВрд▓ рдЧрдпрд╛, рддреЛ рд╕рд╛рдорд╛рдиреНрдп Default_Handler рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реИрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЖрдк рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реЗрдХреНрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдкрд░ рдФрд░ рд▓рд┐рдВрдХрд░ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд▓рд┐рдП рдбреЗрдЯрд╛ рдФрд░ bss рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЖрд░рдВрдн рдХреЛ Reset_Handler рдХреЗ рд╢рд░реАрд░ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрдИ рдмрд╛рд╣рд░реА рдЪрд░ рдЬреЛрдбрд╝рдХрд░ рдЕрдкрдиреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк.c рдХреЛ рдлрд┐рд░ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред

extern void *_sidata, *_sdata, *_edata, *_sbss, *_ebss;

void __attribute__((naked, noreturn)) Reset_Handler()
{


	void **pSource, **pDest;
	for (pSource = &_sidata, pDest = &_sdata; pDest != &_edata; pSource++, pDest++)
		*pDest = *pSource;

	for (pDest = &_sbss; pDest != &_ebss; pDest++)
		*pDest = 0;

	while(1);
}


рдЗрд╕рд▓рд┐рдП, рдирдП рдЪрд░, рдФрд░ рдлрд┐рд░ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдВрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдкрд┐рдЫрд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ ред рдФрд░ рдПрдХ рдирдП рдХреЗ рд╕рд╛рде рднреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред

MEMORY{
	ROM(rx) : ORIGIN = 0x08000000, LENGTH = 1M
	SRAM (rwx):     ORIGIN = 0x20010000, LENGTH = 240K
}

_estack = LENGTH(SRAM) + ORIGIN(SRAM);

SECTIONS{
	.isr_vector : {
	KEEP(*(.isr_vector))
	} >ROM
	
	.text : {
        . = ALIGN(4);
        *(.text)
    } >ROM
	
	_sidata = LOADADDR(.data);
        .data : {
		. = ALIGN(4);
		_sdata = .;
		*(.data)
		. = ALIGN(4);
		_edata = .;
	} >SRAM AT>ROM
	
	.bss : {
		. = ALIGN(4);
		_sbss = .;
		*(.bss)
		. = ALIGN(4);
		_ebss = .;
	} >SRAM
}


рджреЛ рдирдП рдЦрдВрдб рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ, рдпреЗ рд╣реИрдВ .data рдФрд░ .bsред рд╣рдореЗрдВ рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдмреЗрд╕рдмреНрд░реА рд╕реЗ рдЗрдВрддреЗрдЬрд╝рд╛рд░ рд╣реИрдВред рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ .data рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛ рдФрд░ рд╕реНрдереИрддрд┐рдХ bss рдХреЛ рдЬрд╛рдПрдЧрд╛ред рдпреЗ рджреЛрдиреЛрдВ рдЦрдВрдб рд░реИрдо рдореЗрдВ рд╣реИрдВ, рдФрд░ рдЕрдЧрд░ bss рд╕реЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ (рдпреЗ рд╕рд┐рд░реНрдл рд╢реВрдиреНрдп рд╣реИрдВ), рддреЛ рдбреЗрдЯрд╛ рд╕реЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╢реБрд░реВ рдореЗрдВ рдбреЗрдЯрд╛ рдЕрдиреБрднрд╛рдЧ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдореЗрдВ рдХрд╣реАрдВ рдЭреВрда рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ, рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд▓рд┐рдВрдЯрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЗрд╕реЗ рд░реИрдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдЗрдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рджреЗрдЦреЗрдВ рдЬрд╣рд╛рдВ рд╣рдо рдбреЗрдЯрд╛ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред


        _sidata = LOADADDR(.data);
        .data : {
		. = ALIGN(4);
		_sdata = .;
		*(.data)
		. = ALIGN(4);
		_edata = .;
	} >SRAM AT>ROM


рдпрд╣ _sidata рдХреА рдШреЛрд╖рдгрд╛ рдФрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рд╕рдордп, рдПрдХ рдРрд╕реЗ рдореВрд▓реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд┐рд╕реЗ рд╣рдо рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рд╕реНрд╡рдпрдВ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдпрд╣рд╛рдВ ALIGN рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ , рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдмрд┐рдВрджреБ (рд╡рд░реНрддрдорд╛рди рдкрддреЗ) рдХреЛ рдПрдХ рдорд╛рди рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдбреЗрдЯрд╛ рдпрд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╡рд╣рд╛рдВ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ _sdata, _edata, рдФрд░ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЕрдВрдд рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдиреБрднрд╛рдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ рдмрд╕ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПредSRAM AT>ROMред рдпрд╣ рдкрдВрдХреНрддрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдВрдХрд░ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдЕрдиреБрднрд╛рдЧ SRAM рдореЗрдВ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЦрдВрдб ROM рдпрд╛ рдлрд╝реНрд▓реИрд╢ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рд╣реИред рдЕрдм рд╣рдорд╛рд░реЗ _sidata рд╡реЗрд░рд┐рдПрдмрд▓ рдФрд░ LOADADDR рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрдВ рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬреЛ рд▓реЛрдбрд┐рдВрдЧ рд╕реЗрдХреНрд╢рди рдХреЗ рдкрддреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред рдпрд╣реА рд╣реИ, рд╣рдордиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рд░реИрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдореЗрдВ рдЗрд╕рдХреЗ рдкрддреЗ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ LOADADDR рдлрд╝рдВрдХреНрд╢рди рд░рд┐рдЯрд░реНрди рд╣реИред рдЗрд╕ рдмреАрдЪ, рд╡реЗрд░рд┐рдПрдмрд▓ _sdata рдФрд░ _edata рд░реИрдо рдореЗрдВ рдЕрдиреБрднрд╛рдЧ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╣реА рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡рд╣ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛрдб рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЙрдкрд░реЛрдХреНрдд рд╕реМрджреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд┐рдпрд╛ рд╣реИред

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

.text (ORIGIN(ROM_ITCM) + SIZEOF(.isr_vector)): {
        . = ALIGN(4);
        *(.text)
    } AT>ROM_AXIM


рдЗрд╕ рдмреНрд▓реЙрдХ рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЯреЗрдХреНрд╕реНрдЯ рд╕реЗрдХреНрд╢рди рдХреЛ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдореЗрдВ рднреА рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдирд┐рд░реНрджреЗрд╢реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдмрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдПрдЖрд░рдЯреА рдПрдХреНрд╕реЗрд▓реЗрд░реЗрдЯрд░ (рдПрдХ рдирд┐рдпрдорд┐рдд рдХреИрд╢ рдХреА рддрд░рд╣)ред рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд▓реЛрдб рдкрддреЗ рдФрд░ рдкрддреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЕрдЧрд░ рдореИрдВрдиреЗ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджрд┐рдпрд╛ рдХрд┐ рдЕрдиреБрднрд╛рдЧ рдСрдлрд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕реЗ рдФрд░ рднреА рдХрдИ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рд╣реИрдВ, рдореИрдВ рдЙрди рд╕рдмрдХреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред

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

рдЖрдк рд╕рднреА рдХрд╛ рдзреНрдпрд╛рди, рдФрд░ рдЖрдкрдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдореЗрдВ рд╕рдлрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

All Articles