我在使用 contiki ELF-loader 时遇到了一些问题,希望有人能提供更多的见解或一些提示来解决这些问题。在下文中,我尽量保持问题描述简短。
我的目标是:
在 T-Mote-Sky 上执行 ELF 文件。
此 ELF 文件包含一个带有计算的 contiki 过程(数据样本随时间的线性回归)。
使用“cooja”进行模拟
代码具体信息:
ELF 文件大小约 2000 字节
几个 unsigned-int-16 数字的相当大的计算:
for (i = 0; i < 10; i++) {
sum_x += records[i].index;
sum_y += records[i].energy;
sum_xx += ((uint16_t) records[i].index) * ((uint16_t) records[i].index);
sum_xy += ((uint16_t) records[i].index) * ((uint16_t) records[i].energy);
}
slope = ((size * sum_xy) - (sum_x * sum_y)) / ((size * sum_xx) - (sum_x * sum_x));
“记录”在调用elfloader的主进程中初始化和定义,并通过extern定义访问
如果我使用常量进行计算,它会起作用
问题:
如果我尝试将乘法与“*”一起使用,则会导致错误消息:
Symbol not found: __MPY
如果我尝试将除法与“/”一起使用,则会导致类似的错误消息
- 所以我的解决方法是乘法和除法基于加法,并且它有效(在大多数情况下)
尽管如此,当我尝试计算斜率时,我仍然收到错误:“未找到段:”。
- 我推断这是内存大小的问题或试图通过 extern 从主进程获取数据,因为如果我只使用常量,计算斜率是有效的。
非常感谢您的帮助和问候,
卡威乐