工具/软件:TI-RTOS
您好!
在了解 TI-RTOS 应用程序的链接器配置时遇到问题。
使用示例 Tiva c 中的自定义引导加载程序
引导加载程序的配置命令、
--retain=矢量
内存
{
闪存(RX):origin = 0x00000000,length = 0x00004000
SRAM (rwx):origin = 0x20000000,length = 0x00010000
}/*
在内存中的段分配*/
SECTIONS
{
组
{
.intvecs
.text
.const
.data
} load = flash、run = 0x20000000、load_start (init_load)、run_start (init_run)、size (init_size)
组
{
.bss
.stack
} run = SRAM、run_start (bss_run)、run_end (bss_end)、size (bss_size)、run_end (__stack_top)
}
引导加载程序的分配映射、
入口点符号:"_c_int00"地址:200003fb 存储器配置 名称 原点长度 已使用 未使用的属性填充 --- ---- ------ ---- ---- -------- 闪存 00000000 00004000 00000618 000039e8 R X SRAM 20000000 00010000 00000778 0000f888 RW X 段分配映射 运行原点 加载原点长度 init 长度 吸引成员 --- ------ ------ ------ ---- ---- 20000000 00000000 00000618 00000618 r-x 20000000 00000000 00000044 00000044 r-.intvecs 20000044 00000044 000005d0 000005d0 r-x .text 20000614 000004 00000004 r-.const 20000618 00618 00000160 00000000 0000000000 r- 20000000614 000004 00000004 r- 200000006 00000006 00000006 00000006 0000000600 0000.rw 堆栈
TI-RTOS 应用程序的配置命令
--retain=g_pfnVectors
#define BL_BASE 0x00000000
#define APP_BASE 0x00004000
#define RAM_BASE 0x20000000
MEMORY
{
Flash_BL (RX):origin = BL_BASE,length = APP_BASE
闪存(RX):origin = APP_BASE,length = 0x00100000
SRAM (rwx):origin = RAM_base,length = 0x00040000
}//
内存
中的段分配*/ SECTIONS
{
.intvecs:> app_base
.text:> FLASH
.const:> FLASH
.cinit:>闪存
.pinit:> FLASH
init_array:> FLASH
.vtable:> RAM_base
.data :> SRAM
.bss:> SRAM
.sysmem:> SRAM
.stack:> SRAM
}
__stack_top =__stack + 512;
TI-RTOS 应用程序的分配映射
入口点符号:"_c_int00"地址:0000a199 存储器配置 名称 起点 长度 已使用 未使用 属性填充 --- ---- ------ ---- ---- -------- FLASH_BL 00000000 00004000 0000003c 00003fc4 R x 闪存 00004000 00100000 0000af32 000f50ce R x SRAM 20000000 00040000 0000394d 0003c6b3 RW X 段分配映射 运行原点 加载原点 长度 初始长度吸引成员 --- ------ ------ ------ ---- ---- 00000000 00000000 0000003c 0000003c r- 00000000 00000000 0000003c 0000003c r-.resetVecs 00004000 00004000 0000af3c 0000af3c R-x 00004000 000087b2 000087b2 r-x .text 0000c7b8 0000c7b8 000023e4 000023e4 r-.const 0000eba0 000000039c 0000039c r-.cinit 20000000 00000 00000360 0000000400 00000008 00000008 00000008 00000008 00000008 00000008 00000008 00000008 00000008 00000008 00000008 00000008 00000008 00000008 00000008 00000008 200036f0 00000300 00000000 rw-.stack
问题:
- 我的配置错误了吗?
- 下载程序需要在哪个地址?
- 要寻址(或段分配映射)、是否需要调用 bootlader run_cmd 来启动应用程序?
另一个问题: 在应用程序中如何重新进入引导加载程序以更新固件?
引导加载程序适用于非 TI-RTOS 应用程序
非常感谢!