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/CC2640:结构的 memset()问题

Guru**** 2589300 points
Other Parts Discussed in Thread: CC2640

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/605999/rtos-cc2640-memset-issue-for-a-struct

器件型号:CC2640

工具/软件:TI-RTOS

您好!

  我是 CC2640开发人员的新手。

  当我对结构使用 memset()时遇到问题。 当我在 IAR 调试模式下单步执行 memset()时,断点将移动到

 __attributes void * memset (void *_D、int _C、size_t _N)

 {

   _aeabi_memset (_D、_N、_C);

   返回_D;

 }

DLib_Product_string.h 内

当我步出 memset()时,断点将不在 memset()的下一行。

我可以将 memset()与 int 或 char 变量一起使用,但可以将其用于 struct。

我的结构定义是

 

typedef 结构

   uint8_t PPG;

   uint8_t GSR;

   uint8_t NTC;

   uint8_t prv;

}第二计数器_t;

我的开发环境是

IAR V7.4

2.我的应用程序基于  C:\ti\simplelink\ble_cc26xx_2_01_01_44627

3.我已将 应用节点 FlashROM 的优化设置为“无”

如何解决此问题?

感谢你的善意帮助。

艾伦

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

    您是将断点放在主调试视图中还是放在反汇编窗口中? 反汇编窗口将为您提供最准确的断点放置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Rachel、
    我还尝试使用反汇编窗口来设置断点、但它与调试视图相同。
    实际上、我在第102行和第103行设置了两个断点。 它将首先停在第102行。

    我的代码:

    10 init();
    11 start();

    100 void init()
    101{
    102 COUNT.PPG = 0x11;
    103 memset (&counts、0、sizeof (SecondCounter_t));
    104 sensorPeriod = sensor_default_period;

    130


    然后我执行 Step Over、它将在下面的第75行断开。 在我执行两个步进以退出 memset()后,它将在第11行的上方中断。

    DLib_Product_string.h 代码:

    73 __attributes void * memset (void *_D、int _C、size_t _N)
    74{
    75 __aeabi_memset (_D、_N、_C);
    76 return _D;
    77}


    同时、我检查 sensorPeriod 值、它是正确的。 似乎该方案已运行了104条线。 这是否意味着我可以使用 memset(),但我在调试时会遇到一些问题? 您对此问题有什么想法吗?

    此致、
    艾伦