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.

[参考译文] RTOS/CC2538:Z-Stack 3.0 错误报告(未在CC2538 OTA项目上启用所有32 KB SRAM)

Guru**** 2943400 points

Other Parts Discussed in Thread: Z-STACK, CC2538

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/662748/rtos-cc2538-z-stack-3-0-bugs-report-not-enable-all-32kb-sram-on-cc2538-ota-project

部件号:CC2538
主题中讨论的其他部件:Z-stack

工具/软件:TI-RTOS

目的:

  在基于Z-Stack 3.0 的CC2538SF53 OTA客户端项目上启用所有32 KB SRAM,众所周知,CC2538SF53包括32 KB SRAM,但Z-Stack仅在所有样例项目上启用16 KB。

错误测试步骤:

1.使用 默认目录安装Z-Stack 3.0.0.exe

2.  使用3.0 IAR EWARM应用程序打开C:\Texas Instruments \Z-Stack EWARM.0\Projects\ZStack\HomeAutomation\SampleSwitch\CC2538\SampleSwitch.eww

3.  修改 CC2538-OTA-Image-A. ICF配置文件中的以下数据段(0x2000.4万至0x2000万) 以启用32 KB SRAM

//
//定义片上SRAM的区域。
//
定义区域SRAM = mem:[从0x2000万到0x2.0007万FFF];

4.使用 Router-OTAClient-ImageA-withBootloader选项构建SampleSwitch项目

 

5.下载最终输出文件C:\Texas Instruments \Z-Stack 3.0 SmartRF Program.0\projects\ZStack\HomeAutomation\SampleSwitch\CC2538\Router - OTAClient - ImageA - with Bootloader\EXE\SampleSwitch.hexn with SmartRF Programr2

 

6. final,SampleSwitch不在CC2538 SOC上运行。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Z-Stack 3.0 1错误报告(未在CC2538ZNP项目上获取正确的扩展地址)

    错误测试步骤:

    1.开放源代码文件 C:\Texas Instruments \Z-Stack 3.0 .1\projects\ZStack \ZMain\TI2538ZNp\ZMain.c

    2.找到函数 zmain_ext_addr

    3. 分析此函数中的所有机具,我们没有找到4字节LSB和4字节MSB的交换(大家都知道,TI无线SOC[CC253x]内置IEEE地址 前缀以00:12:4B:00:xx:xx:xx:xx开头,4字节MSB[00:12:4B:00]是供应商代码, 但从信息页读取时,MSB和LSB需要交换,如果不交换,结果 aExtendedAddress 为xx:xx:xx:00:12:4B:00,显然不正确)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Z-Stack 3.0 1错误报告(UART0和UART1不能同时工作)

    目的:

    CC2538SF53有两个UART端口(包括UART0和UART1),示例项目 演示 如何利用UART1,但在__vector_table中未添加UART0中断服务功能),因此甚至修改ISR源代码,但UART0无法正常工作。

    错误测试步骤:

    1.开放源代码文件C:\Texas Instruments \Z-Stack 3.0 .1\Components\hal \TARGET\CC2538\START_ewarm.c

    2.检查 __vector_table的数组  

    __root const uVectorEntry __vector_table[]@".intvec"=
    {
    {.ulPtr =(unsigned Long)pulStack + sizeof(pulStack)},
    // 0初始堆栈指针
    ResetIsr, // 1重置处理程序
    NmiSR, // 2 NMI处理程序
    FaultISR, // 3硬故障处理程序
    IntDefaultHandler, // 4 MPU故障处理程序
    IntDefaultHandler, // 5总线故障处理程序
    IntDefaultHandler, // 6使用错误处理程序
    0, // 7保留
    0, //8保留
    0, // 9保留
    0, //10保留
    IntDefaultHandler, // 11 SVCall处理程序
    IntDefaultHandler, // 12调试监视器处理程序
    0, // 13保留
    IntDefaultHandler, // 14 PendSV处理程序
    SysTickIntHandler, // 15 Systick句柄
    PortCPortAIsr, // 16 GPIO端口A
    IntDefaultHandler, // 17 GPIO端口B
    PortCPortAIsr, // 18 GPIO端口C
    IntDefaultHandler, // 19 GPIO端口D
    0, // 20无
    IntDefaultHandler, // 21 UART0 Rx和Tx
    #ifdef HAL_UART_USB
    IntDefaultHandler, // 22 UART1 Rx和Tx
    #else
    interrupT_uart1, // 22 UART1 Rx和Tx
    #endif 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    1.默认情况下,CC2538项目中有意禁用16K RAM。 这是因为RAM的前16k不会保留其在PM2中的内容,而第二个16k会保留其内容。 但是,如果您不想将设备放入PM2,则可以重新启用此RAM。

    2.aExtendedAddress实际上是反向格式(再次有意地),而不是LSB:MSB,请参阅以下内容:

    3.在这里不确定我是否理解您的顾虑。 请您详细说明一下吗? 如果要添加自己的UART0处理程序,则需要将"// 21 UART0 Rx and Tx"的"IntDefaultHandler"替换为自己的函数。 您可以参考“interrupT_uart1”的实现来了解如何执行此操作(在 代码中搜索HalUartISR,interrupT_uart1被重新定义为此代码)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在这里回复我自己的帖子:1。 我没有正确阅读您的帖子,我错过了表示您尝试更改它的部分,但它不起作用。 我来看看这个。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Jason:

    请比较Z-Stack 3.0 中的源文件TI2538DB\ZMain.c和TI2538ZNP\ZMain.c。1,您必须在zmain_ext_addr函数中找到区别...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哎呀,您对ZNP与DB中的zmain_ext_addr完全正确,感谢您找到这个。

    我测试了CC2538DB ZMain.c CC2538ZNP的修补程序,它修复了该问题,我更新了错误修补程序wiki页面以包括以下内容:

    http://processors.wiki.ti.com/index.php/Zigbee_Known_Issues_and_Proposed_Fixes

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    关于您的第一个问题(32k RAM),显然不能将运行时堆栈放置在RAM的前16k中。 要解决此问题,我们只需对链接程序文件进行一行更改:

    ////
    表示noinit值应保留为单独值。 这包括
    //堆栈,如果初始化,它将破坏
    //初始化代码的返回地址,导致处理器分支为零并出现故障。
    //
    不初始化{ SECTION .NOINIT };
    放置在SRAM的结尾{ SECTION .NOINIT };//++++++++++ 添加此行++++++++++ 

    感谢您报告此问题,我一定会将其添加到Wiki网页。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Jason:
    我已经检查了您的Wiki网页,发现"错误地报告了IEEE地址CC2538ZNP "项的拼写错误,
    “CC5238ZNP”项目,正确的是CC2538ZNP项目。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哈哈,好的捕获。 至少这是一个容易的解决办法。

    您是否仍有任何开放式问题(即项目3),或者我是否可以将此主题标记为"已关闭"?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    JasonB:

    非常感谢,请关闭此线程,我认为TI官方需要发布Z-Stack 3.0 .................2以在将来修复如此多的小错误(例如内存泄漏,基本功能故障等)。