TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2530: 制作串口升级功能,程序可以从boot跳转到app程序,但是中断向量表一直跳不过去,还停留在boot的中断向量,没有使用协议栈

Part Number:CC2530Other Parts Discussed in Thread: Z-STACK

我也都使用了sb-boot.xcl和cc2530-sb.xcl配置文件,参考了两篇文章,依然不能成功跳转,希望TI的工程师给个建议。

Katherine Wang:

已为您联系TI工程师,稍后给您回复

,

李 聪:

有回复么

,

Katherine Wang:

请确保遵循 Serial Boot Loader for CC2530.pdf 中的所有步骤。 cc2530-sb.xcl 应包括Z(CODE)INTVEC=_CODE_START 并且需要从链接器命令文件项目选项中引用。您应参考输出映射文件和二进制图像以确认内存放置正确,并使用调试器逐步执行代码并找出根本问题。

,

李 聪:

您说的是这个EQU地址要等于code_start地址么,我没有用协议栈, Serial Boot Loader for CC2530.pdf 那些checksum也需要配置么,还有就是现在我跳转功能是没问题的,就证明bin文件没问题,只是只有中断向量表跳不过去,您能给解答一下么

,

李 聪:

您刚才说的,参照 Serial Boot Loader for CC2530.pdf 我已经确定完全参照,Z(CODE)INTVEC=_CODE_START也有,用调试器逐步执行什么的代码,app的么?

,

Katherine Wang:

已将您的最新回复发布到E2E英文论坛,您也可以访问https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1202242/cc2530-when-making-the-serial-port-upgrade-function-i-found-the-program-could-jump-from-boot-to-app-program-but-the-interrupt-vector-table-was-unable-to-jump-and-it-still-stayed-at-the-interrupt-vector-of-boot-without-using-t关注最新进展

,

Katherine Wang:

我不是要求使用协议栈,但是它的资源提供了关于如何使用bootloader的充分演示。boot代码不使用中断,应用程序的 *.s51 偏移量应等于 0x2000,与应用程序的 *.xcl 代码开始相同。不可否认,使用不正确的中断向量表来调试 HWI 是很困难的。您能否确认 ISR 函数已正确放置在输出映射文件中的 INTVEC 位置?例如,reset_vector 应为 0x2000,halDmaISR 为 0x2043,halSleepTimerIsr 为 0x202B 等。如果一切正常,或其他硬件中断(如定时器或端口)按预期运行,则表明 UART 功能未正确建立.

,

李 聪:

现在的问题是,我通过map文件发现,boot的中断地址和application的中断地址是不一样的,那按理来说应该是可以正常在app里使用中断的,但是现在在app里使用中断依然会跳转到boot里,我不理解为什么。其次我发现我修改interrupt_subs.s51文件还是一样的结果,包括我修改OFFSET EQU的地址,依然不起作用,我在想,是不是因为我在工程中没有把这个interrupt_subs.s51链接进去导致他不起作用呢,但是我工程的配置选项都跟TI给的标准文件一摸一样,也找不出为什么,求解答

,

李 聪:

现在的问题是,我通过map文件发现,boot的中断地址和application的中断地址是不一样的,那按理来说应该是可以正常在app里使用中断的,但是现在在app里使用中断依然会跳转到boot里,我不理解为什么。其次我发现我修改interrupt_subs.s51文件还是一样的结果,包括我修改OFFSET EQU的地址,依然不起作用,我在想,是不是因为我在工程中没有把这个interrupt_subs.s51链接进去导致他不起作用呢,但是我工程的配置选项都跟TI给的标准文件一摸一样,也找不出为什么,求解答

,

Katherine Wang:

您说的boot和应用程序之间的中断地址不同是什么意思?请尽可能提供 *.map 文件。您不需要修改从boot项目中获取的 interrupt_stubs.s51。bootloader配置中断映射。请确认 cc2530-sb.xcl 被 Project Options -> Linker -> Config for you application 引用并且 sb-boot.xcl 用于启动。

,

李 聪:

cc2530不用协议栈中断向量表是不是从boot跳转到app的,做升级功能好像不太行

,

Katherine Wang:

已为您联系TI工程师,一旦得到回复会立刻回复给您

,

Katherine Wang:

CC2530 不必使用 Z-Stack 进行串行boot操作,但是 Zigbee 示例针对串行boot使用进行了优化。 向量的用法可以参考hal_mcu.h。

//hal_mcu.h#define _PRAGMA(x) _Pragma(#x)
#define HAL_ISR_FUNC_DECLARATION(f,v)_PRAGMA(vector=v) __near_func __interrupt void f(void)
#define HAL_ISR_FUNC_PROTOTYPE(f,v)_PRAGMA(vector=v) __near_func __interrupt void f(void)
#define HAL_ISR_FUNCTION(f,v)HAL_ISR_FUNC_PROTOTYPE(f,v); HAL_ISR_FUNC_DECLARATION(f,v)

并且,请进一步了解Z-Stack源码的Components\hal\target\CC2530EB里面的应用文件是如何对应的。

赞(0)
未经允许不得转载:TI中文支持网 » CC2530: 制作串口升级功能,程序可以从boot跳转到app程序,但是中断向量表一直跳不过去,还停留在boot的中断向量,没有使用协议栈
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1