主题中讨论的其他器件:CC2640、 CC2640R2L
您好!
这一职位是我在2个月前发布的相关职位的延续。 当时、我通过禁用项目零示例代码中的开箱即用 UART 日志实现并实施自己的已拆分版本的代码、能够节省一些内存。 但是、似乎我再次面临类似的问题、因为从那时起、我在我的固件中又添加了一些内容。
目前、我的 SRAM 使用率为~12、900 KB、我观察到以下异常情况:
1.无法一次发送大小为100字节的数据包。 我必须将数据包拆分为最大60字节的部分
2.蓝牙连接在立即随机发送数据包时断开。
3.设备蓝牙无线电停止响应,移动设备由于超时而断开连接。
我不确定如何调试这些问题、因为它们不一致且不可重现。
下面是我们使用的软件驱动程序列表:
UART
2. ADC
用于 RTC 的秒模块
4.蜂鸣器的 PWM
5.看门狗
6. SPI
今天、我添加了固件代码、以使用 SDK 提供的 PWM 驱动器来控制蜂鸣器。 当我添加 PWM_init()和 PWM_open()函数时,RAM 的使用增加了600字节。 我目前的 RAM 使用率为12、900字节。 只要我在~12、300字节上、我就看不到上述问题。 只是在为蜂鸣器添加 PWM 驱动器之后。
除此之外,对于我们使用的每个软件驱动程序,其各自的*_init()和*_open()函数会占用大量 RAM。 我假设这是因为他们的单个软件实例占用了大部分内存。
例如,我没有使用 PIN_Init()和 PIN_open() API 来使用 GPIO。 我直接使用 PINCC26XX_setOutputValue()和 PINCC26XX_getInputValue() API。 我认为这会将内存保存在 RAM 中、因为我不必为 PIN_Handle 或 PIN_TABLE 保存实例。 是否可以使用 SPI、ADC、UART、看门狗、PWM、 秒模块?
我的问题是:是否有任何方法可以直接连接这些驱动程序而不为它们创建一个保存内存的软件实例?
我们可以找到与此相关的任何文档吗?
如果是、则我们可能能够减少 RAM 使用并确认是否是 RAM 问题。