174 lines
4.6 KiB
C
174 lines
4.6 KiB
C
// *INDENT-OFF*
|
|
/*
|
|
#-------------------------------------------------------+
|
|
# br35 RAM mapping |
|
|
#-------------------------------------------0x137000 ---| _RAM_LIMIT_H
|
|
# |
|
|
# |
|
|
# ota-loader (194K:0x30A00) |
|
|
# |
|
|
# |
|
|
#-------------------------------------------0x106600 ---|
|
|
# |
|
|
# uboot (16K:0x4000) |
|
|
# |
|
|
#-------------------------------------------0x102600 ---|
|
|
# |
|
|
# | ---------> user_api.bin end (0x10054c + 32K)
|
|
#-------------------------------------------0x10054c ---| ---------> user_api.bin start(0x10054c)
|
|
# Maskrom_export_RAM (0x34c) |
|
|
#-------------------------------------------0x100200 ---|
|
|
# |
|
|
#-------------------------------------------0x100000 ---| _RAM_LIMIT_L
|
|
*/
|
|
|
|
#include "maskrom_stubs.ld"
|
|
|
|
//from mask export
|
|
ISR_BASE = _IRQ_MEM_ADDR;
|
|
|
|
UPDATA_SIZE = 0x200;
|
|
|
|
UPDATE_BEG = _RAM_LIMIT_H - UPDATA_SIZE;
|
|
|
|
UPDATA_BREDR_BASE_BEG = 0x137000 - 0x1000;
|
|
|
|
EX_CODE_BEGIN = 0x10054c; /*用户自定义UI代码的地址,根据不同CPU来配置*/
|
|
EX_CODE_SIZE = 0xc2b4;
|
|
|
|
#if defined(DEV_UPDATE_MINI) && DEV_UPDATE_MINI
|
|
SEC_OTA_CODE_BEGIN = 0x106600; /*第二级loader RAM地址*/
|
|
OTA_CODE_BEGIN = 0x137000 - 0x6000; /*注意不要和uboot重叠*/
|
|
/* OTA_CODE_BEGIN = 0x175000; #<{(|uart 测试盒串口升级开debug时修改|)}># */
|
|
OTA_CODE_SIZE = 24K;
|
|
|
|
#else
|
|
|
|
OTA_CODE_BEGIN = EX_CODE_BEGIN + EX_CODE_SIZE; /*注意不要和uboot重叠*/
|
|
OTA_CODE_SIZE = UPDATA_BREDR_BASE_BEG - OTA_CODE_BEGIN;
|
|
#endif
|
|
|
|
// EX_CODE_BEGIN = 0x104000; /*用户自定义UI代码的地址,根据不同CPU来配置*/
|
|
// EX_CODE_SIZE = 460K;
|
|
|
|
MEMORY
|
|
{
|
|
text_ram : ORIGIN = OTA_CODE_BEGIN, LENGTH = OTA_CODE_SIZE
|
|
#if !defined(DEV_UPDATE_MINI) || (!DEV_UPDATE_MINI)
|
|
bt_ram : ORIGIN = UPDATA_BREDR_BASE_BEG, LENGTH = 0x1000
|
|
/* ex_code : ORIGIN = EX_CODE_BEGIN, LENGTH = EX_CODE_SIZE */
|
|
reserved : ORIGIN = 0x0, LENGTH = 0x100
|
|
version_ram :ORIGIN = 0x8000000, LENGTH = 128
|
|
#endif
|
|
|
|
}
|
|
|
|
ENTRY(_start);
|
|
EXTERN(
|
|
lib_ota_loader_version
|
|
#if (EX_FLASH_UPDATE_SUPPORT_EN)
|
|
device_table
|
|
#endif
|
|
);
|
|
|
|
SECTIONS
|
|
{
|
|
. = ORIGIN(text_ram);
|
|
.text :
|
|
{
|
|
*(.start*)
|
|
*(.text*)
|
|
*(.*.text)
|
|
*(.data*)
|
|
*(.*.data)
|
|
*(.rodata*)
|
|
*(.*.text.const)
|
|
#if !defined(DEV_UPDATE_MINI) || (!DEV_UPDATE_MINI)
|
|
*(.bredr_irq_code)
|
|
*(.frame_irq_code)
|
|
*(.classic_irq_code)
|
|
*(.classic_irq_const)
|
|
*(.volatile_ram_code)
|
|
#endif
|
|
. = ALIGN(32);
|
|
|
|
#if (EX_FLASH_UPDATE_SUPPORT_EN)
|
|
_device_node_begin = .;
|
|
PROVIDE(device_node_begin = .);
|
|
*(.device)
|
|
_device_node_end = .;
|
|
PROVIDE(device_node_end = .);
|
|
. = ALIGN(32);
|
|
#endif
|
|
} > text_ram
|
|
|
|
.bss ALIGN(32) (NOLOAD):
|
|
{
|
|
_cpu0_sstack_begin = .;
|
|
*(.stack*)
|
|
_cpu0_sstack_end = .;
|
|
_cpu0_ustack_begin = .;
|
|
*(.ustack*)
|
|
_cpu0_ustack_end = .;
|
|
|
|
*(.bss)
|
|
*(.*.data.bss)
|
|
*(.usb_ep0)
|
|
*(.usb_config_var)
|
|
*(.update_buf)
|
|
*(.bredr_rxtx_bulk)
|
|
. = ALIGN(32);
|
|
} > text_ram
|
|
|
|
.bss_noinit ALIGN(32) (NOLOAD):
|
|
{
|
|
*(.bss_noinit)
|
|
. = ALIGN(32);
|
|
} > text_ram
|
|
|
|
#if !defined(DEV_UPDATE_MINI) || (!DEV_UPDATE_MINI)
|
|
. = ORIGIN(bt_ram);
|
|
.bt_bss (NOLOAD) :SUBALIGN(4)
|
|
{
|
|
*(.bd_base)
|
|
*(.comm_rf_para)
|
|
*(.bd_base1)
|
|
} > bt_ram
|
|
|
|
// . = ORIGIN(ex_code);
|
|
// .ex_code (NOLOAD) :SUBALIGN(4)
|
|
// {
|
|
// . = LENGTH(ex_code);
|
|
// } > ex_code
|
|
|
|
. = ORIGIN(reserved);
|
|
.ver_tag ALIGN(4):
|
|
{
|
|
KEEP(*(.version_tag1))
|
|
KEEP(*(.version_tag2))
|
|
KEEP(*(.version_tag3))
|
|
. = ALIGN(4);
|
|
} > reserved
|
|
|
|
. = ORIGIN(version_ram);
|
|
.version ALIGN(32):
|
|
{
|
|
*(.ota_loader.version)
|
|
. = ALIGN(32);
|
|
} > version_ram
|
|
|
|
|
|
bt_ram_begin = ADDR(.bt_bss);
|
|
bt_ram_size = SIZEOF(.bt_bss);
|
|
#endif
|
|
}
|
|
|
|
//================== Section Info Export ====================//
|
|
text_begin = ADDR(.text);
|
|
text_size = SIZEOF(.text);
|
|
text_end = text_begin + text_size;
|
|
|
|
bss_begin = ADDR(.bss);
|
|
bss_size = SIZEOF(.bss);
|
|
|