Thread 中讨论的其他器件:SYSBIOS
我正在尝试更新从自定义引导加载程序跳转到 TI-RTOS 的代码。 代码进入重新映射的矢量表并开始执行代码、但在启动任务时失败。 我已经了解到有人在 FreeRTOS 上遇到堆栈指针问题、但跳转到 TI-RTOS 时却找不到太多问题。
我已添加到.cfg 中
m3Hwi.resetVectorAddress = 0x2800;
m3HwI.vectorTableAddress = 0x2800;
并为此调整了.cmd 文件、并添加了一个 startup.c 文件以进行跳转。
我尝试跳过这个
#pragma CODE_SECTION (ResetISR、".blcode")
无效
ResetISR (空)
{
#if 0
//将矢量表设置为闪存中应用程序的开头。
HWREG (NVIC_vtable)= APP_START_ADDRESS;
//从应用程序的矢量表加载栈指针。
//
_asm (" LDR R1、[r0]\n"
" mov sp、r1");
//从应用程序的矢量表加载初始 PC 并分支到
//应用程序的入口点。
//
_asm (" LDR r0、[r0、#4]\n"
" bx r0\n");
其他
//
//跳转到 CCS C 初始化例程。 这将启用
//浮点单元,因此不需要在此处执行此操作。
//
_asm (".global _c_int00\n"
" b.w _c_int00");
#endif
}
--retain=g_pfnVectors
#define has 引导加载1
//#define APP_BASE 0x00000000
存储器
{
#if 具有 bootload
#define APP_BASE 0x00002800
#define FLASH_SIZE 0x00040000
#define RAM_base 0x20000000
#define CODE_HEADER_BASE 0x0003FFA0
#define CODE_HEADER_SIZE (FLASH_SIZE - CODE_HEADER_BASE)
#define APP_LENGTH (CODE_HEADER_BASE - APP_BASE)
Flash_BL (RX):origin = 0,length = app_BASE
闪存(RX):origin = app_BASE,length = app_length
CODE_HDR (RX):origin = CODE_HEADER_base,length = CODE_HEADER_SIZE
SRAM (rwx):origin = 0x20000000,length = 0x00008000
其他
闪存(RX):origin = 0x00000000,length = 0x00040000
SRAM (rwx):origin = 0x20000000,length = 0x00008000
#endif
}
/*以下命令行选项作为 CCS 项目的一部分进行设置。 *
/*如果您使用命令行构建,或者出于某种原因想要*/
/*在此处定义它们,您可以根据需要取消注释并修改这些行。 *
/*如果您使用 CCS 进行构建、最好进行任何这样的构建*/
/*对 CCS 项目进行修改并将此文件保留为单独文件。 *
/**//
/*--heap_size=0 */
/*--stack_size=256 */
/*--library=rtsv7M4_T_le_eabi.lib */
/*内存中的段分配*/
部分
{
#if 具有 bootload
.bvecs:> flash_bl
.bblcode:> flash_bl
.intvecs:> app_base
.text:> FLASH
.const:> FLASH
.cinit:>闪存
.pinit:> FLASH
init_array:> FLASH
codedHdr :> CODE_HDR
.vtable:>0x20000000
.data :> SRAM
.bss:> SRAM
.sysmem:> SRAM
.stack:> SRAM
其他
.intvecs:> 0x00000000
.text:> FLASH
.const:> FLASH
.cinit:>闪存
.pinit:> FLASH
init_array:> FLASH
.vtable:>0x20000000
.data :> SRAM
.bss:> SRAM
.sysmem:> SRAM
.stack:> SRAM
#endif
}
__STACK_TOP =__STACK + 1024;
任何