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.

[参考译文] CC1310:CC1310F32RHBR 存储器大小不足

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1474970/cc1310-cc1310f32rhbr-memory-size-insufficient

器件型号:CC1310

工具与软件:

大家好、团队成员:

"在尝试启用并包括看门狗计时器时、我遇到了这样的问题。"

 错误#10099-D:程序无法放入可用内存中、或者该段包含的调用站点需要无法为此段生成 trampoline。 针对段".cinit"大小0x196进行对齐放置失败。 可用存储器范围:
闪存大小:0x8000未使用:0xf9最大空洞:0xf8
错误#10010:链接过程中遇到错误;未生成"GM1040_2.OUT"

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

    尊敬的 Elavarasan:

    您能告诉我、您正在使用的是我们的哪些示例项目吗?

    此外、您还可以在 CCS Studio View -> Memory Allocation 中查看已使用了多少存储器。  
    能否也和我分享一下这方面的屏幕截图?

    此致、
    等等

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

    尊敬的 Theo:

    提前感谢

    "我开发了汽车钥匙扣代码、并一直专注于关断和唤醒模式。 但是、它未按预期工作。 唤醒仅在按下按钮后发生一次、之后既不进入 SHUTDOWN 模式、也不响应按钮按下。

    因此、我计划实施看门狗计时器来解决该问题。 但当我尝试执行看门狗计时器时、遇到了存储器空间错误。"

    另附上存储器分配屏幕截图供您参考

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

    尊敬的 Elavarasan:

    这实际上表明您的闪存几乎已满。 在这种情况下、您需要减小代码大小以添加更多功能。

    但我认为这不是解决您最初的问题所必需的。 我想您的按钮按下操作是由硬件中断处理的吗? 您能解释一下您的软件在按下按钮后正在执行什么操作吗?

    在理想情况下、中断将为主进程设置事件。 这比您需要的所有操作都要执行。  
    如果中断和事件被清除、器件将重新进入睡眠状态。

    如果我们能够解决此问题、则无需使用看门狗。

    此致、
    等等

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

    尊敬的 Theo:

    "按下按钮后、应发送3个射频数据包、然后系统应返回到关断模式。 但在本例中、它只发送一次数据、之后既不会进入关断模式、也不会检测到进一步的按钮按压操作。"

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

    尊敬的 Elavarasan:

    这听起来您的实现会锁定。 这可能是由一个未清除的中断或事件引起的。

    您能解释一下如何处理按钮按压操作吗? 该中断是否设置了标志来触发射频操作?您是否清除它以便器件可以接收下一个中断?

    此致、
    等等

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

    尊敬的 Theo:

    按钮按压处理

    • 目前、通过该ScanButton()功能使用基于轮询的方法来检测按钮按压操作。 检测到按钮按压操作后、buttonPress会设置标志、并以循环方式传输射频数据包(每次按压3个数据包)。

    • #ifdef POWER_SHUTDOWN_EN
      CPUdelay (8000 * 50);

      ScanButton ();
      如果(buttonPress){
      if (batVal>BATT_LOW_THRESHOLD)

      minPKT = 3;
      }
      设计
      buttonPress = 0;
      }
      设计
      buttonPress = 0;
      #endif

    触发射频运行

    检测到按下按钮操作后、我会通过调用RF_runCmd()每个数据包来发送3个数据包。 buttonPress操作完成后、该标志将被清除、为系统下一次按下按钮做好准备。

    while (buttonPress || minPkt)

    if (minPKt)
    minPKT---;

    rf_cmdPropTx.pktLen = FormPkt (pj);

    RF_EventMask terminationReason = RF_runCmd (rfHandle、(RF_Op*)&RF_cmdPropTx、
    RF_PriorityNormal、NULL、0);

     buttonPress = 0;

    rf_yield (rfHandle);

    for (timCnt=22;timCnt<扰频数据[41];timCnt++)

    usleep (packet_interval);
    ScanButton ();
    }

    }
    Pj = 0;

    #ifdef POWER_SHUTDOWN_EN
    /*配置 DIO 以从 SHUTDOWN 模式唤醒*/
    PINCC26XX_setWakeup (ButtonTableWakeUp);

    /*转至关机*/
    POWER_SHUTDOWN (0、0);
    while (1);

    #else
    while (!buttonPress){
    power_idleFunc();
    }
    #endif

    }
    }

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

    尊敬的 Elavarasan:

    我建议您使用该按钮作为硬件中断。 您可以在中断服务例程中设置一个标志并清除该中断。 在应用程序线程中、可以在设置标志并清除标志时发送无线电消息。  

    您能告诉我您是从哪个示例项目启动了您的项目吗?  

    此致、
    等等