Thread 中讨论的其他器件:SYSBIOS、
工具/软件:TI-RTOS
您好!
我正在使用 SYS/BIOS 开发应用。
----架构----
我的软件架构分为两部分:
1)引导
当系统上电时、程序计数器使用以下指令从_c_intBOOT 地址开始执行(文件 boot28.asm):
_c_intBOOT: .asmfunc
秘书长的报告
* 初始化堆栈指针。 *
秘书长的报告
MOV SP、#_stackBOOT ;设置为栈空间的开头
秘书长的报告
*初始化状态位字段*在复位时未*初始化 *
秘书长的报告
SPM 0 ;将产品移位设置为0
秘书长的报告
*设置 C28x 模式 *
秘书长的报告
C28OBJ ;选择 C28x 对象模式
C28ADDR ;清除寻址模式
C28MAP ;设置块 M0和 M1模式
。
。
。
。
等等
换句话说、我已经用_c_intBOOT 标签替换了_c_int00标签、因为我想在不支持 SYS/BIOS 的情况下管理引导变量和函数。
在一些初始化和检查之后、引导代码跳转到_c_int00地址、从而启动 SYS/BIOS 引导序列。
2)固件
当程序计数器跳转到_c_int00地址时、固件代码开始。 在这个跳转之后、执行流程遵循 SYS/BIOS 标准序列。
--序列和问题----
引导变量位于与固件不同的部分、并且针对指令代码实现了相同的分离。
启动时、.ebss 和.cinit 启动变量被初始化、我看到它们的值正确。
跳转至_c_int00地址后、一些 SYS/BIOS 初始化函数(哪些函数?!?!!! 我不知道...) 然后调用 MyStartup_resetFunction。
我的问题是、在 MyStartup_resetFunction 中、我看到引导变量全部重置为零。
例如、在跳转至_c_int00 MyVariable 之前的值等于0x12345678、在 MyStartup_resetFunction 中、MyVariable 的值等于0。 同一问题会影响所有变量。
似乎有任何从_c_int00到 MyStartup_resetFunction 的指令可复位 RAM。
我的问题是:如何在不丢失引导变量值的情况下启动 SYS/BIOS 引导序列?
----补充资料----
如果我通过 JTAG 仿真器下载引导和固件代码并监控变量、我会看到在调用 MyStartup_resetFunction 时引导变量未复位。
在这种情况下、如果我拔下 JTAG 仿真器并为系统通电、我会看到在调用 MyStartup_resetFunction 时引导变量会复位。
谢谢。
此致、
Demis Biscaro