Оценка объема встроенной памяти числовых процедур - PullRequest
0 голосов
/ 01 июля 2018

Есть только один подобный вопрос здесь , но я пытаюсь использовать другой способ оценки требований к размеру.

Я пытаюсь сравнить, как две числовые процедуры будут выполняться на 68k. Внедренный размер и скорость выполнения - это метрики, которые мне нужны для количественной оценки.

Подробности о подпрограммах: одна содержит множество сложных математических операций, таких как возведение в степень. Другая является приблизительной версией и имеет только дополнения и умножения.

Для сравнения времени выполнения я просто использую время настенных часов для обеих подпрограмм на моем компьютере.

Для сравнения объема памяти я создал кросс-компилятор и сгенерировал двоичный код со статическим связыванием математической библиотеки. Размер двоичных файлов будет хорошей мерой требований к памяти во встроенной системе, верно?

РЕДАКТИРОВАТЬ Я использую crosstool-NG для сборки компилятора. Когда я использую m68k-unknown-uclinux-uclibc-gcc, коды компилируются. Однако, когда я использую m68k-unknown-elf-gcc, я получаю ошибку fatal error: math.h: No such file or directory. Я думал, что библиотечная часть относится к цели, и компиляция выполняется с использованием библиотек на хост-машине.

1 Ответ

0 голосов
/ 02 июля 2018

Одна из возможностей может быть:

  • Размер: используйте objdump для получения информации о вашем объектном файле, он предоставляет много полезной информации, такой как символы и их адрес. Другим способом является создание файла карты, он содержит место, где объекты и символы отображаются в памяти (ОЗУ и ПЗУ, но не динамические выделения). Эти ссылки могут помочь вам: objdump map
  • Время выполнения: учитывая, что оно должно быть рассчитано во время выполнения, IMO у вас есть два варианта: внутренний таймер UC или тумблер (и осциллограф). Я предпочитаю второй вариант, он проще с точки зрения реализации, а точность лучше, чем таймер (более того, он требует меньше инструкций)

Edit: в отношении вашего редактирования попробуйте добавить путь к команде компиляции (или makefile), например -I[yourPath]

...