主题中讨论的其他器件: Z-stack
大家好、
我还使用了 sb-boot.xcl 和 CC2530-sb.xcl 配置文件。 我阅读了两篇文章、但仍然无法成功跳转。 我希望 您能提供一些建议。




此致、
Katherine
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好、Katherine、
请确保遵循 CC2530.pdf 串行引导加载程序指南中的所有步骤。 CC2530-sb.xcl 应该包括-Z (code) intvec=_code_start、并且需要从链接器命令文件 Project Options 中引用。 它们应引用输出映射文件和二进制映像以确认存储器放置正确、并使用调试器逐步执行代码并确定根本问题。
此致、
Ryan
我并不是要求使用协议栈、但其资源就如何使用引导加载程序提供了充分的演示。 启动代码不使用中断、应用程序的*。s51偏移量应等于0x2000、与应用程序的*。xcl 代码启动相同。 诚然、很难用不正确的中断矢量表来调试 HWI。 您能否确认 ISR 函数正确放置在输出映射文件的 INTVEC 位置中? 例如、RESET_VECTOR 应为0x2000、halDmaISR 应为0x2043、halSleepTimerIsr 应为0x202B、等等 如果 一切看起来都正确、或者其他硬件中断(例如计时器或端口)按预期运行、这表明 UART 功能未正确建立。
此致、
Ryan
您好、Ryan、
现在的问题是、我通过映射文件发现、启动的中断地址和应用程序的中断地址 是不同的。 理论上、 应该可以正常在应用中使用中断。 但是、如果我现在在应用程序中使用中断、它仍将跳到引导 、我不明白为什么。 此外、在我修改 interrupt_subs.s51文件后仍然得到相同的结果、包括修改偏移 EQU 的地址、但仍然不起作用。 我想知道是不是因为我在项目中没有链接这个 interrupt_subs.s51 、导致无法工作。 但我项目的配置选项与 TI 提供的标准文件完全相同、我无法弄清其中的缘由。 如果您能说明问题的原因、我将不胜感激。
此致、
Katherine
引导和应用程序之间的中断地址不同意味着什么? 如果可能、请提供*。map 文件。 您无需修改从引导项目中获得的 interrupt_studs.s51。 引导加载程序配置中断映射。 确认 Project Options -> Linker -> Config 为您的应用程序引用了 CC2530-sb.xcl、并 将 sb-boot.xcl 用于引导。
此致、
Ryan
CC2530不一定要使用 Z-Stack 进行串行引导操作、但 Zigbee 示例针对串行引导的使用进行了优化。 您可以参考 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 中的应用文件相对应。
此致、
Ryan