本帖最后由 aozima 于 2017-9-18 16:20 编辑
学会写链接脚本,所有芯片通用。
特别是针对GD32这种,后面有1片慢速FLASH的情况。
都把静态资源放后面去。
比如我这个 130G8的 bootloader,使用最前面1K,和后末尾的慢速7K。慢速7K的执行速度慢,所以又加载到RAM中支持。
下面是KEIL MDK 的链接脚本 GD32F130_bootloader.sct
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
; GD32F130x8: FLASH 32KB + 32KB(慢速,且不能用于ISR入口地址)
; bootloader 使用最开头的1KB和最后面的11KB。
; load region size_region
LR_IROM1 0x08000000 (1024 * 1)
{
; load address = execution address
ER_IROM1 0x08000000 (1024 * 1)
{
*.o (RESET, +First)
*(InRoot$Sections)
stm32f0xx_it.o(+RO)
flash_if.o(+RO)
stm32f0xx_hal_flash.o(+RO)
}
}
; load region size_region
LR_IROM2 (0x08000000 + 1024 * 64 - 1024 * 7) (1024 * 7)
{
; load address = execution address
ER_IROM2 (0x08000000 + 1024 * 64 - 1024 * 7) (1024 * 7)
{
.ANY (+RO)
}
; RW data
RW_IRAM1 0x20000000 (1024 * 8 - 32)
{
crc32.o(*)
usart.o(*)
common.o(*)
ymodem.o(*)
fw.o(*)
stm32f0xx_hal_uart.o(*)
stm32f0xx_hal_flash_ex.o(*)
.ANY (+RW +ZI)
}
}
|