在GCC环境下编译STM32的makefile解读

在GCC环境下编译STM32的makefile解读

以下是comple.mk
在这里插入图片描述

以下是makefile
在这里插入图片描述

`

以下是链接脚本``
/*


**

** File : LinkerScript.ld
**
** Abstract : Linker script for STM32F105RBTx Device with
** 128KByte FLASH, 64KByte RAM
**
** Set heap size, stack size and stack location according
** to application requirements.
**
** Set memory bank area and size if external memory is used.
**
** Target : STMicroelectronics STM32
**
**
** Distribution: The file is distributed as is, without any warranty
** of any kind.
**
** ©Copyright Ac6.
** You may use this file as-is or modify it according to the needs of your
** project. Distribution of this file (unmodified or modified) is not
** permitted. Ac6 permit registered System Workbench for MCU users the
** rights to distribute the assembled, compiled & linked contents of this
** file as part of an application binary file, provided that it is built
** using the System Workbench for MCU toolchain.
**


*/

/* Entry Point */
ENTRY(Reset_Handler)

/* Highest address of the user mode stack /
_estack = 0x20010000; /
end of RAM /
/
Generate a link error if heap and stack don’t fit into RAM /
_Min_Heap_Size = 0x200; /
required amount of heap /
_Min_Stack_Size = 0x400; /
required amount of stack */

/* Specify the memory areas /
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K
/
FLASH (rx) : ORIGIN = 0x8008000, LENGTH = 96K */
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K
}

/* Define output sections /
SECTIONS
{
/
The startup code goes first into FLASH /
.isr_vector :
{
. = ALIGN(4);
KEEP(
(.isr_vector)) /* Startup code */
. = ALIGN(4);
} >FLASH

/* The program code and other data goes into FLASH /
.text :
{
. = ALIGN(4);
(.text) / .text sections (code) /
(.text) /
.text
sections (code) */
(.glue_7) / glue arm to thumb code */
(.glue_7t) / glue thumb to arm code */
*(.eh_frame)

KEEP (*(.init))
KEEP (*(.fini))

. = ALIGN(4);
_etext = .;        /* define a global symbols at end of code */

} >FLASH

/* Constant data goes into FLASH /
.rodata :
{
. = ALIGN(4);
(.rodata) / .rodata sections (constants, strings, etc.) /
(.rodata) /
.rodata
sections (constants, strings, etc.) */
. = ALIGN(4);
} >FLASH

.ARM.extab : { (.ARM.extab .gnu.linkonce.armextab.*) } >FLASH
.ARM : {
__exidx_start = .;
(.ARM.exidx)
__exidx_end = .;
} >FLASH

.preinit_array :
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP ((.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
.init_array :
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP ((SORT(.init_array.)))
KEEP ((.init_array))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
.fini_array :
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP ((SORT(.fini_array.)))
KEEP ((.fini_array))
PROVIDE_HIDDEN (__fini_array_end = .);
} >FLASH

/* used by the startup to initialize data */
_sidata = LOADADDR(.data);

/* Initialized data sections goes into RAM, load LMA copy after code /
.data :
{
. = ALIGN(4);
_sdata = .; /
create a global symbol at data start /
(.data) / .data sections /
(.data) /
.data
sections */

. = ALIGN(4);
_edata = .;        /* define a global symbol at data end */

} >RAM AT> FLASH

/* Uninitialized data section /
. = ALIGN(4);
.bss :
{
/
This is used by the startup in order to initialize the .bss secion /
_sbss = .; /
define a global symbol at bss start */
bss_start = _sbss;
*(.bss)
(.bss)
*(COMMON)

. = ALIGN(4);
_ebss = .;         /* define a global symbol at bss end */
__bss_end__ = _ebss;

} >RAM

/* User_heap_stack section, used to check that there is enough RAM left */
._user_heap_stack :
{
. = ALIGN(8);
PROVIDE ( end = . );
PROVIDE ( _end = . );
. = . + _Min_Heap_Size;
. = . + _Min_Stack_Size;
. = ALIGN(8);
} >RAM

/* Remove information from the standard libraries */
/DISCARD/ :
{
libc.a ( * )
libm.a ( * )
libgcc.a ( * )
}

.ARM.attributes 0 : { *(.ARM.attributes) }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xxgui1992

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值