Я столкнулся с некоторыми проблемами при работе с ELF-загрузчиком contiki и надеюсь, что кто-то будет так любезен, чтобы дать мне больше информации или несколько советов по решению этих проблем. Далее я постараюсь сделать описание проблемы кратким.
Моя цель:
Запустите файл ELF на T-Mote-Sky.
Этот файл 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, и доступ к ним осуществляется через внешнее определение.
это работает, если я использую константы для вычисления
Проблемы:
если я попытаюсь использовать умножение с "*", это приведет к сообщению об ошибке:
Symbol not found: __MPY
если я попытаюсь использовать деление с "/", это приведет к аналогичному сообщению об ошибке
- so my workaround is that the multiplications and divisions are based upon additions, and it works (in most cases)
Тем не менее, я получаю сообщение об ошибке: «Сегмент не найден:», как только я пытаюсь вычислить наклон.
- I deduce its an issue with the memory size or trying to get data from the main process via extern, because calculating the slope works if I use constants only.
Заранее большое спасибо за помощь и с наилучшими пожеланиями,
Ка Вэй Ле