рдЕрдм 512 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдпрд╛ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ (рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдлреНрд▓реИрд╢) рдореЗрдореЛрд░реА рд╡рд╛рд▓реЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рдХреЛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдирдХреА рд▓рд╛рдЧрдд рдзреАрд░реЗ-рдзреАрд░реЗ рдХрдо рд╣реЛ рд░рд╣реА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕реБрд▓рднрддрд╛ рдмрдврд╝ рд░рд╣реА рд╣реИред рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдХреА рдРрд╕реА рдорд╛рддреНрд░рд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддреА рд╣реИ рдЬреЛ рдХрд┐ рдХрдмреНрдЬреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ "рднрд╛рд░реА" рд╣реИрдВ, рдЬрдмрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рдХреЗ рдмрд╛рдж рдХреЗ рд░рдЦрд░рдЦрд╛рд╡ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рд╕реЗ рд▓рдХреНрд╖реНрдп рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рдХреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХреЛрдб рдореЗрдВ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рдкрд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреА рд╣реИред
рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕реА рдФрд░ / рдпрд╛ рд╕реА ++ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ, рдХреЛрдб рдЕрдиреБрднрд╛рдЧ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд┐рд╕реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдбрд┐рдмрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред рдФрд░ рдпрд╣ рднреА рдмрддрд╛рдПрдВ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдкреНрд░рднрд╛рд╡реА рд╕рдорд╛рдзрд╛рди рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред
рд░реАрдбрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ
рдХрдерд╛ рдХреЗ рджреМрд░рд╛рди, рдореИрдВ рдорд╛рдиреВрдВрдЧрд╛ рдХрд┐ рдкрд╛рдардХ:
- рд╡рд╣ C рдФрд░ C ++ рдореЗрдВ рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рд╣реИ;
- рдХреЛрд░реНрдЯреЗрдХреНрд╕-рдПрдо 3 / рдХреЛрд░реНрдЯреЗрдХреНрд╕-рдПрдо 4 рдХреЛрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, stm32f4 рд╢реНрд░реГрдВрдЦрд▓рд╛) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИ;
- рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЕрдВрддрд┐рдо рд╕рд┐рд▓рд╛рдИ рдлрд╝рд╛рдЗрд▓ (рдпреЛрдЧрд┐рдиреА / рдмрд┐рди) рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИ;
- рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдВрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╛рдЗрд▓реЗрдВ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИрдВ;
- рдкрд╛рда, bss, рдбреЗрдЯрд╛ рдФрд░ рдЕрдиреНрдп рдЕрдиреБрднрд╛рдЧреЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ;
- рдХрд┐рд╕реА рднреА рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛;
- рдиреНрдпреВрдирддрдо рдорд╛рд▓рд┐рдХрд╛рдирд╛рд╢;
- рдХреЛрд░реНрдЯреЗрдХреНрд╕-рдПрдо 3 / рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдПрдо 4 рдкреНрд░реЛрд╕реЗрд╕рд░ (рдЯреВрд▓рдЪреЗрди рдЖрд░реНрдо-рдиреЛ-рдИрдмреАрдмреА) рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рдЬреАрд╕реАрд╕реА рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рд╣реИ;
- cmake рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреМрд╢рд▓ рд╣реИред
рд╡рд┐рдзрд┐ рдХрд╛ рд╕рд╛рд░
рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ "рдХреНрд▓рд╛рд╕рд┐рдХ" рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╕рднреА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ (рдкрд╛рда, рдХреГрдВрддрдХ рдЕрдиреБрднрд╛рдЧ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рдорд╛рди рдФрд░ рдЕрдиреНрдп) рдЖрдорддреМрд░ рдкрд░ "рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ" рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдкрддреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ (рдХреЛрд░реНрдЯреЗрдХреНрд╕-рдПрдо 3 / рдХреЛрд░реНрдЯреЗрдХреНрд╕-рдПрдо 4 рдХреЛрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ - c) рдкрддрд╛ 0x08000000)ред рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд░реВрдк рдореЗрдВ, рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдПрдо 3 / рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдПрдо 4 рдХреЛрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдорд╛рдирдЪрд┐рддреНрд░, рд╕реА ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЗрд╕ рддрд░рд╣ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдореЗрдо рдлрд╝рд╛рдЗрд▓ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 768K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 112K }
рдпрд╣рд╛рдВ, рд╕рднреА рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдПрдХ рдПрдХрд▓ рд╡рд┐рднрд╛рдЬрди рд╣реИ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо "FLASH" рд╣реИ, рдФрд░ рд╕рднреА RAM "RAM" рдирд╛рдо рдХрд╛ рдПрдХ рд╡рд┐рднрд╛рдЬрди рд╣реИред рдЗрд╕ рд░реВрдк рдореЗрдВ, рдЬрдм рдХреЛрдИ рдХреЛрдб рдЦрдВрдб рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдмрд╛рдХреА рд╕рднреА "рд╢рд┐рдлреНрдЯ" рд╣реЛрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╛рдЗрд▓ рдХреЛ рдХреБрдЫ рд▓реЙрдЬрд┐рдХрд▓ рдмреНрд▓реЙрдХ рдореЗрдВ "рд╕реНрдкреНрд▓рд┐рдЯ" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
- рдмрд╛рдзрд┐рдд рд╡реИрдХреНрдЯрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛;
- рдЦреБрдж рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп;
- рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп (рдЬрд┐рдиреНрд╣реЗрдВ рдмрджрд▓рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ);
- рдЕрдХреНрд╕рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХреЛрдбред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдВрддрд┐рдо рдмрд┐рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдб рдХреЗ рдПрдХ рд╕реЗрдХреНрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдкрд░, рдХреЗрд╡рд▓ рд╡рд╣ рд╕реЗрдХреНрд╢рди рдЬрд┐рд╕рдореЗрдВ рдХреЛрдб рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡рд╣ рд╕реЗрдХреНрд╢рди рдЬреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдерд╛, рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░рдкреНрдЯ рд╡реИрдХреНрдЯрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдпрджрд┐ рдХреБрдЫ рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдХреА рд╕реНрдерд┐рддрд┐ рд╡рд░реНрдЧреЛрдВ рд╕реЗ)ред
рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП,
рд╕реНрдерд┐рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд┐рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдлреНрд▓реИрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╕рд┐рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдбреАрдмрдЧрд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдлрд░реНрдорд╡реЗрдпрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдХрдореА рдХреЛ рднреА рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдкрд╛рд╕ рддреБрд░рдВрдд рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдирд╡реАрдирддрдо рдлрд░реНрдорд╡реЗрдпрд░ рд╣реЛрдЧрд╛ рдФрд░ рдЖрдк рддреБрд░рдВрдд рдбреАрдмрдЧрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛, рдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд░реНрдгрдп рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рдХреЛ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдХрд╛рдо рдкрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреЗ рдЗрдиреЛрд╡реЗрд╢рди рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВ, рдореИрдВ рдЕрдкрдиреЗ
рд╣реЛрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред рдЪреВрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдХрд╛рдо рдкрд░ рдирд┐рдпрдорд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдХрд░реАрдм рд╣реИ, рдпрд╣ рд╕рдордЭрдирд╛ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдирд╡рд╛рдЪрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВ рдФрд░ рдпрд╣ рдХрд┐рд╕ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рд╡рд╣рди рдХрд░рддрд╛ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рд╡рд░рдг
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- C ++ 14 рдореЗрдВ рдореБрдЦреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдХреЛрдб рд╡рд░реНрдЪреБрдЕрд▓ рдЯреЗрдмрд▓реНрд╕, рдирдП / рдбрд┐рд▓реАрдЯ (рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рдХреЗ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛), рд╢реЗрдпрд░реНрдб_рдкреНрдЯреНрд░ (рдФрд░ рдЕрдиреНрдп рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕) рдФрд░ рдорд╛рдирдХ рд╕реА ++ 14 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЕрдиреНрдп рдкреНрд░рд╕рдиреНрдирддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ;
- рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░рд┐рдзреАрдп рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдБрдЪреЗ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП 6 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ ( MakiseGUI рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп , рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рд╡рд╕рд╛ ( FatFS ), рдЖрджрд┐) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП FreeRTOS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ ;
- рдмреЛрд░реНрдб рдкрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде 16 рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА, рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрдЯрдмреНрд╕, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ;
рдЕрд╕реЗрдВрдмрд▓реА рдкреИрд░рд╛рдореАрдЯрд░ -O0 -g3 рдХреЗ рд╕рд╛рде, рдпреВрдирд┐рдХреЛрдб, рд╕рд┐рд░рд┐рд▓рд┐рдХ рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреЛрдб рд▓рдЧрднрдЧ 700 KB рд▓реЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд░реНрддрдорд╛рди рдЪрд░рдг рдореЗрдВ, рдЬрдм рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рд╕реНрдерд┐рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдорд╛рддреНрд░рд╛ рд▓рдЧрднрдЧ 20 KB рд╣реИред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рд╣реИ (рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕рд┐рдореБрд▓реЗрд╢рди рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рд╕реВрдЪреА
рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
- рд╕рднреА рд╕рдмрдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рд╕реНрдерд┐рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ (рдЗрд╕ рдЖрдЗрдЯрдо рдХрд╛ рд╡рд┐рд╡рд░рдг рдЗрд╕ рд▓реЗрдЦ рдХреА рдкрд╛рд░реНрд╕ рдХреА рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ);
- рдкреБрдирдГ рд▓рд┐рдЦрдирд╛ mem.ld;
- rewrite section.ld;
- рдЕрдВрддрд┐рдо рдмрд┐рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЕрдиреБрднрд╛рдЧ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬреЛрдбрд╝реЗрдВ;
- рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдореЗрдореЛрд░рд┐рдпрд▓ рдХреЛ рдкреБрд░рд╕реНрдХреГрдд рдХрд░рдирд╛
рдкрд╣рд▓рд╛ рдХрджрдо рд╡рд░реНрддрдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд▓рд┐рдП "рдорд╛рдирдХ" рдореЗрдо.рд▓реНрдб рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдирд╛ рд╣реИред рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрддреЗ рд╕рдордп, рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдХреЛ рд╕реЗрдХреНрдЯрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рд╕реЗрдХреНрдЯрд░ рдХреИрд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ (stm32 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ - рд╕рдВрджрд░реНрдн рдореИрдиреБрдЕрд▓ рдореЗрдВ) рдкрдврд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрднрд╛рдЧ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕реЗрдХреНрдЯрд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рдЕрдиреНрдпрдерд╛ рдПрдХ рдЦрдВрдб рджреВрд╕рд░реЗ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджреЗрдЧрд╛ред
рдпрд╣ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрджрд┐ рдХреЛрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд▓рд┐рдВрдХрд┐рдВрдЧ рд╕реНрдЯреЗрдЬ рдкрд░ рд░реИрдо рдореЗрдВ рдЬрдЧрд╣ рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдЖрдк рдЕрдкреНрд░рд┐рдп рдХреАрдбрд╝реЗ рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдкрдХрдбрд╝рдирд╛ рдмреЗрд╣рдж рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, FatFS рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдХреЛрдб ROM_EXTERNAL_LIBRARIES рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдЬ рдкрд░ RAM рдореЗрдВ 4 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП RAM рдореЗрдВ рдПрдХ рдЦрдВрдб рд╣реИ рдЬреЛ ROM_EXTERNAL_LIBRARIES рдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ RAM_EXTERNAL_LIBRARIES рд╣реИред
рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдореЗрдВ рдЕрдВрддрд┐рдо рдЦрдВрдб рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд╕рдм рдХреБрдЫ рдЬреЛ рдкрд╣рд▓реЗ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рдерд╛, рд╕реЗрдХреНрд╢рди.рд▓реНрдб (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ) рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕рдореЗрдВ рдЬрд╛рдПрдЧрд╛ред
рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, mem.ld рдРрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ред /* stm32f405rgt6 ChiptunePlayer-2.22-MainBoard-v2-Firmware. */ MEMORY { /*-----------------------------FLASH-------------------------------*/ /* 0-1 . */ ROM_BOOTLOADER (RX) : ORIGIN = 0x08000000, LENGTH = 32K /* 2 . */ ROM_SYSCFG_PAGE_1 (R) : ORIGIN = 0x08008000, LENGTH = 16K /* 3 . */ ROM_SYSCFG_PAGE_2 (R) : ORIGIN = 0x0800C000, LENGTH = 16K /* 4 . */ ROM_RESERVE (R) : ORIGIN = 0x08010000, LENGTH = 16K /* 5, 6, 7 (FATFS, FREERTOS...). */ ROM_EXTERNAL_LIBRARIES (RX) : ORIGIN = 0x08020000, LENGTH = 384K /* 8, 9 ( , ...). */ ROM_USER_LIBRARIES (RX) : ORIGIN = 0x08080000, LENGTH = 384K /* 5, 6 . */ ROM_MAIN_PROGRAMM (RX) : ORIGIN = 0x080E0000, LENGTH = 128K /*-----------------------------RAM---------------------------------*/ /* RAM . */ RAM_PAGE_1 (RW) : ORIGIN = 0x20000000, LENGTH = 112K RAM_PAGE_2 (RW) : ORIGIN = 0x2001C000, LENGTH = 16K /* FATFS FreeRTOS. */ RAM_EXTERNAL_LIBRARIES (RW) : ORIGIN = 0x20000000, LENGTH = 10K /* . */ RAM_USER_LIBRARIES (RW) : ORIGIN = 0x20002800, LENGTH = 90K /* RAM . */ RAM_MAIN_PROGRAMM (RW) : ORIGIN = 0x20019000, LENGTH = 27K /* RAM . FreeRTOS. */ RAM_MAIN_PROGRAMM_STACK (RW) : ORIGIN = 0x2001FC00, LENGTH = 1K }
рдЦрдВрдб рдЦрдВрдб
рдореМрдЬреВрджрд╛ рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб рдХреЛ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд┐рднрд╛рдЬрди рдХреНрдпрд╛ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП (рдпрджрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдЦрдВрдб рд╣реИ), рддреЛ .text, .rodata, .data, .bs рдФрд░ рдЕрдиреНрдп рдЕрдиреБрднрд╛рдЧ рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИрдВ, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ objdump рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, libstdc ++ _ nano.a рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЯреЗрдХреНрд╕реНрдЯ, ARM.attributes, rodata, data, bss, COMMON рд╕реЗрдХреНрд╢рди рдХрд╣рд╛рдВ рд░рдЦреЗрдВред
рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЕрдиреБрднрд╛рдЧ.рд▓реНрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛ред /* RAM. */ __estack = ORIGIN(RAM_MAIN_PROGRAMM_STACK) + LENGTH(RAM_MAIN_PROGRAMM_STACK); /* . */ __stack_size = LENGTH(RAM_MAIN_PROGRAMM_STACK); /* Reset_Handler. */ ENTRY(Reset_Handler) /* . */ SECTIONS { /*---------------------ROM ------------------------*/ .section_bootloader : ALIGN(4) { /* . . .o , .*/ . = ALIGN(4); KEEP(*(.user_code_isr_vector .user_code_isr_vector*)) . = ALIGN(4); } >ROM_BOOTLOADER /*----------------ROM -----------------*/ /* . */ .section_external_libraries_text : ALIGN(4) { /* . */ . = ALIGN(4); *libstdc++_nano.a:*(.text .text*); . = ALIGN(4); *libgcc.a:*(.text .text*); . = ALIGN(4); *libg_nano.a:*(.text .text*); /* */ . = ALIGN(4); *libSTM32F4_LOW_LEVEL_BY_ST.a:*(.text .text*); . = ALIGN(4); *libFATFS.a:*(.text .text*); . = ALIGN(4); *libFREERTOS.a:*(.text .text*); . = ALIGN(4); *libMAKISE_GUI.a:*(.text .text*); . = ALIGN(4); } >ROM_EXTERNAL_LIBRARIES /* , */ .section_external_libraries_required_by_the_compiler : ALIGN(4) { /* . */ . = ALIGN(4); *libgcc.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libstdc++_nano.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libg_nano.a:*(.ARM.attributes .ARM.attributes*); /* */ . = ALIGN(4); *libSTM32F4_LOW_LEVEL_BY_ST.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libFATFS.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libFREERTOS.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libMAKISE_GUI.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); } >ROM_EXTERNAL_LIBRARIES /* . */ .section_external_libraries_rodata : ALIGN(4) { /* . */ . = ALIGN(4); *libgcc.a:*(.rodata .rodata*); . = ALIGN(4); *libstdc++_nano.a:*(.rodata .rodata*); . = ALIGN(4); *libg_nano.a:*(.rodata .rodata*); /* */ . = ALIGN(4); *libSTM32F4_LOW_LEVEL_BY_ST.a:*(.rodata .rodata*); . = ALIGN(4); *libFATFS.a:*(.rodata .rodata*); . = ALIGN(4); *libFREERTOS.a:*(.rodata .rodata*); . = ALIGN(4); *libMAKISE_GUI.a:*(.rodata .rodata*); . = ALIGN(4); } >ROM_EXTERNAL_LIBRARIES /*----------------------- ---------------------*/ /* . */ .section_user_libraries_text : ALIGN(4) { . = ALIGN(4); *libUSER_FREERTOS_LEVEL.a:*(.text .text*); . = ALIGN(4); *libUSER_BSP_LEVEL.a:*(.text .text*); . = ALIGN(4); *libMC_INTERRUPT.a:*(.text .text*); . = ALIGN(4); *libMC_HARDWARE.a:*(.text .text*); . = ALIGN(4); *libPCB_HARDWARE.a:*(.text .text*); . = ALIGN(4); *libUSER_STARTUP.a:*(.text .text*); . = ALIGN(4); *libBUTTONS.a:*(.text .text*); . = ALIGN(4); *libCHIPTUNE.a:*(.text .text*); . = ALIGN(4); *libDIGITAL_POTENTIOMETER.a:*(.text .text*); . = ALIGN(4); *libLCD_DRIVER.a:*(.text .text*); . = ALIGN(4); *libMAKISE_GUI_ELEMENTS_BY_VADIMATORIK_ELEMENTS_BY_VADIMATORIK.a:*(.text .text*); . = ALIGN(4); *libMC_HARDWARE_INTERFACES_IMPLEMENTATION_FOR_STM32.a:*(.text .text*); . = ALIGN(4); *libMICROSD_LOW_LEVEL_DRIVER.a:*(.text .text*); . = ALIGN(4); *libSHIFT_REGISTER.a:*(.text .text*); . = ALIGN(4); *libWAVE_GENERATORS.a:*(.text .text*); . = ALIGN(4); *libRUN_TIME_LOGGER.a:*(.text .text*); . = ALIGN(4); } >ROM_USER_LIBRARIES /* , */ .section_user_libraries_required_by_the_compiler : ALIGN(4) { . = ALIGN(4); *libUSER_FREERTOS_LEVEL.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libUSER_BSP_LEVEL.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libMC_INTERRUPT.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libMC_HARDWARE.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libPCB_HARDWARE.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libUSER_STARTUP.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libUSER_CODE.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libBUTTONS.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libCHIPTUNE.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libDIGITAL_POTENTIOMETER.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libLCD_DRIVER.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libMAKISE_GUI_ELEMENTS_BY_VADIMATORIK_ELEMENTS_BY_VADIMATORIK.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libMC_HARDWARE_INTERFACES_IMPLEMENTATION_FOR_STM32.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libMICROSD_LOW_LEVEL_DRIVER.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libSHIFT_REGISTER.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libWAVE_GENERATORS.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); *libRUN_TIME_LOGGER.a:*(.ARM.attributes .ARM.attributes*); . = ALIGN(4); } >ROM_EXTERNAL_LIBRARIES /* . */ .section_user_libraries_rodata : ALIGN(4) { . = ALIGN(4); *libUSER_FREERTOS_LEVEL.a:*(.rodata .rodata*); . = ALIGN(4); *libUSER_BSP_LEVEL.a:*(.rodata .rodata*); . = ALIGN(4); *libMC_INTERRUPT.a:*(.rodata .rodata*); . = ALIGN(4); *libMC_HARDWARE.a:*(.rodata .rodata*); . = ALIGN(4); *libPCB_HARDWARE.a:*(.rodata .rodata*); . = ALIGN(4); *libUSER_STARTUP.a:*(.rodata .rodata*); . = ALIGN(4); *libBUTTONS.a:*(.rodata .rodata*); . = ALIGN(4); *libCHIPTUNE.a:*(.rodata .rodata*); . = ALIGN(4); *libDIGITAL_POTENTIOMETER.a:*(.rodata .rodata*); . = ALIGN(4); *libLCD_DRIVER.a:*(.rodata .rodata*); . = ALIGN(4); *libMAKISE_GUI_ELEMENTS_BY_VADIMATORIK_ELEMENTS_BY_VADIMATORIK.a:*(.rodata .rodata*); . = ALIGN(4); *libMC_HARDWARE_INTERFACES_IMPLEMENTATION_FOR_STM32.a:*(.rodata .rodata*); . = ALIGN(4); *libMICROSD_LOW_LEVEL_DRIVER.a:*(.rodata .rodata*); . = ALIGN(4); *libSHIFT_REGISTER.a:*(.rodata .rodata*); . = ALIGN(4); *libWAVE_GENERATORS.a:*(.rodata .rodata*); . = ALIGN(4); *libRUN_TIME_LOGGER.a:*(.rodata .rodata*); . = ALIGN(4); } >ROM_USER_LIBRARIES /*------------------------- ------------------------*/ /* . */ .section_user_code_text : ALIGN(4) { . = ALIGN(4); *(.text .text.*) . = ALIGN(4); } >ROM_MAIN_PROGRAMM /* , */ .sections_user_code_required_by_the_compiler : ALIGN(4) { . = ALIGN(4); *(.glue_7 .glue_7*) /* - ARMv7 */ . = ALIGN(4); *(.glue_7t .glue_7t*) . = ALIGN(4); *(.vfp11_veneer .vfp11_veneer*) /* . */ . = ALIGN(4); *(.v4_bx .v4_bx*) . = ALIGN(4); *(.iplt .iplt*) . = ALIGN(4); *(.rel.dyn .rel.dyn*) . = ALIGN(4); KEEP(*(.eh_frame .eh_frame*)) /* CPP. */ . = ALIGN(4); *(.eh_framehdr .eh_framehdr*) . = ALIGN(4); *(.ARM.attributes .ARM.attributes.*) /* , . */ . = ALIGN(4); *(vtable) /* C++ virtual tables */ PROVIDE_HIDDEN (__preinit_array_start = .); /* , . */ . = ALIGN(4); KEEP(*(.preinit_array_sysinit .preinit_array_sysinit*)) . = ALIGN(4); KEEP(*(.preinit_array_platform .preinit_array_platform.*)) . = ALIGN(4); KEEP(*(.preinit_array .preinit_array.*)) PROVIDE_HIDDEN (__preinit_array_end = .); PROVIDE_HIDDEN (__init_array_start = .); /* . */ . = ALIGN(4); KEEP(*(SORT(.init_array.*))) . = ALIGN(4); KEEP(*(.init_array)) . = ALIGN(4); PROVIDE_HIDDEN (__init_array_end = .); PROVIDE_HIDDEN (__fini_array_start = .); /* . */ . = ALIGN(4); KEEP(*(SORT(.fini_array.*))) . = ALIGN(4); KEEP(*(.fini_array)) . = ALIGN(4); PROVIDE_HIDDEN (__fini_array_end = .); . = ALIGN(4); KEEP(*(.cfmconfig)) . = ALIGN(4); *(.after_vectors .after_vectors.*) . = ALIGN(4); } >ROM_MAIN_PROGRAMM /* . */ .section_user_code_rodata : ALIGN(4) { . = ALIGN(4); *(.rodata .rodata.*) . = ALIGN(4); } >ROM_MAIN_PROGRAMM /* stack trace. */ .ARM.exidx : { . = ALIGN(4); *(.ARM.extab* .gnu.linkonce.armextab.*) . = ALIGN(4); *(.ARM.exidx* .gnu.linkonce.armexidx.*) . = ALIGN(4); } > ROM_MAIN_PROGRAMM /*-------------------------------RAM-----------------------------*/ /* . */ .section_external_libraries_data : ALIGN(4) { . = ALIGN(4); __external_lib_data_start = . ; /* . */ . = ALIGN(4); *libgcc.a:*(.data .data*); . = ALIGN(4); *libstdc++_nano.a:*(.data .data*); . = ALIGN(4); *libg_nano.a:*(.data .data*); /* */ . = ALIGN(4); *libSTM32F4_LOW_LEVEL_BY_ST.a:*(.data .data*); . = ALIGN(4); *libFATFS.a:*(.data .data*); . = ALIGN(4); *libFREERTOS.a:*(.data .data*); . = ALIGN(4); *libMAKISE_GUI.a:*(.data .data*); . = ALIGN(4); __external_lib_data_end = . ; } >RAM_EXTERNAL_LIBRARIES AT> ROM_EXTERNAL_LIBRARIES /* RAM */ .section_external_libraries_bss : ALIGN(4) { . = ALIGN(4); __external_lib_bss_start = .; /* . */ . = ALIGN(4); *libgcc.a:*(.bss .bss*); . = ALIGN(4); *libstdc++_nano.a:*(.bss .bss*); . = ALIGN(4); *libg_nano.a:*(*COMMON); . = ALIGN(4); *libgcc.a:*(*COMMON); . = ALIGN(4); *libstdc++_nano.a:*(*COMMON); . = ALIGN(4); *libg_nano.a:*(*COMMON); /* */ . = ALIGN(4); *libSTM32F4_LOW_LEVEL_BY_ST.a:*(.bss .bss*); . = ALIGN(4); *libFATFS.a:*(.bss .bss*); . = ALIGN(4); *libFREERTOS.a:*(.bss .bss*); . = ALIGN(4); *libMAKISE_GUI.a:*(.bss .bss*); . = ALIGN(4); *libSTM32F4_LOW_LEVEL_BY_ST.a:*(*COMMON); . = ALIGN(4); *libFATFS.a:*(*COMMON); . = ALIGN(4); *libFREERTOS.a:*(*COMMON); . = ALIGN(4); *libMAKISE_GUI.a:*(*COMMON); . = ALIGN(4); __external_lib_bss_end = .; } >RAM_EXTERNAL_LIBRARIES /* . */ .section_user_libraries_data : ALIGN(4) { . = ALIGN(4); __user_lib_data_start = . ; . = ALIGN(4); *libUSER_FREERTOS_LEVEL.a:*(.data .data*); . = ALIGN(4); *libUSER_BSP_LEVEL.a:*(.data .data*); . = ALIGN(4); *libMC_INTERRUPT.a:*(.data .data*); . = ALIGN(4); *libMC_HARDWARE.a:*(.data .data*); . = ALIGN(4); *libPCB_HARDWARE.a:*(.data .data*); . = ALIGN(4); *libUSER_STARTUP.a:*(.data .data*); . = ALIGN(4); *libBUTTONS.a:*(.data .data*); . = ALIGN(4); *libCHIPTUNE.a:*(.data .data*); . = ALIGN(4); *libDIGITAL_POTENTIOMETER.a:*(.data .data*); . = ALIGN(4); *libLCD_DRIVER.a:*(.data .data*); . = ALIGN(4); *libMAKISE_GUI_ELEMENTS_BY_VADIMATORIK_ELEMENTS_BY_VADIMATORIK.a:*(.data .data*); . = ALIGN(4); *libMC_HARDWARE_INTERFACES_IMPLEMENTATION_FOR_STM32.a:*(.data .data*); . = ALIGN(4); *libMICROSD_LOW_LEVEL_DRIVER.a:*(.data .data*); . = ALIGN(4); *libSHIFT_REGISTER.a:*(.data .data*); . = ALIGN(4); *libWAVE_GENERATORS.a:*(.data .data*); . = ALIGN(4); *libRUN_TIME_LOGGER.a:*(.data .data*); . = ALIGN(4); __user_lib_data_end = . ; } >RAM_USER_LIBRARIES AT> ROM_USER_LIBRARIES .section_user_libraries_bss : ALIGN(4) { . = ALIGN(4); __user_lib_bss_start = .; . = ALIGN(4); *libUSER_FREERTOS_LEVEL.a:*(.bss .bss*); . = ALIGN(4); *libUSER_BSP_LEVEL.a:*(.bss .bss*); . = ALIGN(4); *libMC_INTERRUPT.a:*(.bss .bss*); . = ALIGN(4); *libMC_HARDWARE.a:*(.bss .bss*); . = ALIGN(4); *libPCB_HARDWARE.a:*(.bss .bss*); . = ALIGN(4); *libUSER_CODE.a:*(.bss .bss*); . = ALIGN(4); *libBUTTONS.a:*(.bss .bss*); . = ALIGN(4); *libCHIPTUNE.a:*(.bss .bss*); . = ALIGN(4); *libDIGITAL_POTENTIOMETER.a:*(.bss .bss*); . = ALIGN(4); *libLCD_DRIVER.a:*(.bss .bss*); . = ALIGN(4); *libMAKISE_GUI_ELEMENTS_BY_VADIMATORIK_ELEMENTS_BY_VADIMATORIK.a:*(.bss .bss*); . = ALIGN(4); *libMC_HARDWARE_INTERFACES_IMPLEMENTATION_FOR_STM32.a:*(.bss .bss*); . = ALIGN(4); *libMICROSD_LOW_LEVEL_DRIVER.a:*(.bss .bss*); . = ALIGN(4); *libSHIFT_REGISTER.a:*(.bss .bss*); . = ALIGN(4); *libWAVE_GENERATORS.a:*(.bss .bss*); . = ALIGN(4); *libUSER_FREERTOS_LEVEL.a:*(.bss .bss*); . = ALIGN(4); *libRUN_TIME_LOGGER.a:*(.bss .bss*); . = ALIGN(4); *libUSER_BSP_LEVEL.a:*(*COMMON); . = ALIGN(4); *libMC_INTERRUPT.a:*(*COMMON); . = ALIGN(4); *libMC_HARDWARE.a:*(*COMMON); . = ALIGN(4); *libPCB_HARDWARE.a:*(*COMMON); . = ALIGN(4); *libUSER_CODE.a:*(*COMMON); . = ALIGN(4); *libBUTTONS.a:*(*COMMON); . = ALIGN(4); *libCHIPTUNE.a:*(*COMMON); . = ALIGN(4); *libDIGITAL_POTENTIOMETER.a:*(*COMMON); . = ALIGN(4); *libLCD_DRIVER.a:*(*COMMON); . = ALIGN(4); *libMAKISE_GUI_ELEMENTS_BY_VADIMATORIK_ELEMENTS_BY_VADIMATORIK.a:*(*COMMON); . = ALIGN(4); *libMC_HARDWARE_INTERFACES_IMPLEMENTATION_FOR_STM32.a:*(*COMMON); . = ALIGN(4); *libMICROSD_LOW_LEVEL_DRIVER.a:*(*COMMON); . = ALIGN(4); *libSHIFT_REGISTER.a:*(*COMMON); . = ALIGN(4); *libWAVE_GENERATORS.a:*(*COMMON); . = ALIGN(4); *libRUN_TIME_LOGGER.a:*(.COMMON*); . = ALIGN(4); __user_lib_bss_end = .; } >RAM_USER_LIBRARIES /* . */ .section_user_code_data : ALIGN(4) { . = ALIGN(4); __user_code_data_start = . ; . = ALIGN(4); *(.data .data.*) . = ALIGN(4); __user_code_data_end = . ; } >RAM_MAIN_PROGRAMM AT> ROM_MAIN_PROGRAMM .section_user_code_bss : ALIGN(4) { . = ALIGN(4); __bss_start__ = .; __user_code_bss_start = .; *(.bss .bss.*) *(COMMON) . = ALIGN(4); __bss_end__ = .; __user_code_bss_end = .; } >RAM_MAIN_PROGRAMM __external_lib_data_in_rom_start = LOADADDR(.section_external_libraries_data); __user_lib_data_in_rom_start = LOADADDR(.section_user_libraries_data); __user_code_data_in_rom_start = LOADADDR(.section_user_code_data); /*------------------------- -----------------*/ /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* * DWARF debug sections. * Symbols in the DWARF debugging sections are relative to the beginning * of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } .debug_macro 0 : { *(.debug_macro) } .debug_ranges 0 : { *(.debug_ranges) } }
рдЕрдВрддрд┐рдо рдмрд┐рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЕрдиреБрднрд╛рдЧ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬреЛрдбрд╝реЗрдВ
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрд▓реНрдл рдлрд╛рдЗрд▓ рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрддреЛрдВ рдХреЗ рдмреАрдЪ рдХреЛрдб рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП objcopy рдпрд╛ objdump рдореЗрдВ рдЭрдВрдбреЗ рдвреВрдВрдврдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред рдПрдХ рдзреНрд╡рдЬ рд╣реИ -
рдЕрдХреЗрд▓рд╛-рдЦрдВрдб , рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕рднреА рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЗ рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдЕрднреА рднреА рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдореЗрдВ рд░рдЦреА рдЧрдИ рд╣реИред рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдЯреБрдХрдбрд╝реЛрдВ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрдВрддрд┐рдо рдлрд░реНрдорд╡реЗрдпрд░, (рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП) рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд┐рдЦрдиреА рдереА рдЬреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рди рдлрд╝рд╛рдЗрд▓ рд▓реЗрддреА рд╣реИ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрднрд╛рдЧ рдирд┐рдХрд╛рд▓рддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рдпрд╣рд╛рдВ рдЙрдарддреА рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, objcopy 0s рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рдЬрдЧрд╣ рдХреЛ рднрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдлрд╝реНрд▓реИрд╢ рдореЗрдореЛрд░реА рдореЗрдВ рдЦрд╛рд▓реА рдЬрдЧрд╣ 0xFF рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдмрд┐рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлреНрд▓реИрдЧ
--gap-fill = 0xff рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
рдПрд▓реНрдл рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╕рддреНрдпрд╛рдкрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдПрд▓реНрдл рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЕрдВрддрд┐рдо рдмрд┐рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рдХрд╛рд▓реЗрдЧреА, рдЗрд╕рдореЗрдВ рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдЕрдиреБрднрд╛рдЧ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдкрд╣рд▓реЗ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдПрдХ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдФрд░ рдпрджрд┐ рдХреЛрдИ рднреА рдлрд╝рд╛рдЗрд▓ рдЖрддреА рд╣реИ, рддреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдореЗрдореЛрд░реА рдореЗрдВ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред
рддреБрд▓рдирд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реА, рдЖрдк cmake рдлрдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рд░ рдЬрд░реВрд░реА рдХрд╛рдо рдХрд░реЗрдЧрд╛:Cmake рдЕрджреНрдпрддрди рд╕рдорд╛рд░реЛрд╣ function(write_sector SECTOR ADDR_BASE ADDR_START ADDR_END) add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD COMMAND ${ARM_OBJCOPY} --output-target=binary --gap-fill=0xff ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.elf ${PROJECT_BINARY_DIR}/${PROJECT_NAME}_all.bin COMMENT "Creating a binary file of the <<${SECTOR}>> sector" COMMAND ${BIN_EXTRACTOR} -p ${PROJECT_BINARY_DIR}/${PROJECT_NAME}_all.bin -o ${PROJECT_BINARY_DIR}/${PROJECT_NAME}_section_${SECTOR}_new.bin -b ${ADDR_BASE} -s ${ADDR_START} -e ${ADDR_END} COMMAND cd ${CMAKE_SOURCE_DIR} && ./cmp.sh ${PROJECT_BINARY_DIR}/${PROJECT_NAME}_section_${SECTOR}.bin ${PROJECT_BINARY_DIR}/${PROJECT_NAME}_section_${SECTOR}_new.bin "${STM32PROG} -c port=${STM32PROG_PORT} freq=${STM32PROG_FREQ} -w ${PROJECT_BINARY_DIR}/${PROJECT_NAME}_section_${SECTOR}.bin ${ADDR_START}") endfunction(write_sector)
рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди stm32programmer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИредрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг if (STM32PROG_USE STREQUAL "ON") write_sector("bootloader" ${SECTION_BOOTLOADER_ADDRESS} ${SECTION_BOOTLOADER_ADDRESS} ${SECTION_SYSCFG_PAGE_1_ADDRESS}) write_sector("external_libraries" ${SECTION_BOOTLOADER_ADDRESS} ${SECTION_EXTERNAL_LIB_ADDRESS} ${SECTION_USER_LIBRARIES_ADDRESS}) write_sector("user_libraries" ${SECTION_BOOTLOADER_ADDRESS} ${SECTION_USER_LIBRARIES_ADDRESS} ${SECTION_USER_CODE_ADDRESS}) write_sector("main_programm" ${SECTION_BOOTLOADER_ADDRESS} ${SECTION_USER_CODE_ADDRESS} ${ADDR_END_FLASH}) endif ()
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд╛рдн:- 95% рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рд╡рд╣ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╡рд┐рдкрдХреНрд╖:- рдЧрддрд┐ рдореЗрдВ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдлрд░реНрдорд╡реЗрдпрд░ рд╕реЗ рдкрд╣рд▓реЗ рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдХреЛ рдЪрдордХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдмреВрдЯрд▓реЛрдбрд░ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ (рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ stm32programmer рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрд╢реНрд╡рд╕реНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдХреНрд╕рд░ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реАрд╡реЗ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ;
- section.ld рдХрд╛ рдЖрдХрд╛рд░ рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рдмрджрд▓рдиреЗ рдХреА рдХрд┐рд╕реА рднреА рдЗрдЪреНрдЫрд╛ рдХреЛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ GUI рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛;
- , , , ( , ) :).
. CLion-, bin .