Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: VisualDSP - уменьшение размера загружаемого кода
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
SALOME
При создании программ для BF537 использую отладочную плату BF537EZ-KIT Lite и VisualDSP 4.5.
Написанные программы работают, однако при компиляции генерируется слишком большой размер загружаемого кода. Например, программа на ассемблере мигающая светодиодом занимает 74 байта, а компилятор генерирует загрузочный файл *.ldr аж 16К! Пока игралась с отладочной платой это не беспокоило. Теперь перешла к реальной плате и это напрягает. Может кто подскажет, на что линковщик "без моего спроса" тратит драгоценные ресурсы. Какие затраты неизбежны, и без чего
можно обойтись? Короче, как уменьшить размер загружаемого в процессор кода?
fontp
Цитата(SALOME @ Sep 22 2007, 10:09) *
При создании программ для BF537 использую отладочную плату BF537EZ-KIT Lite и VisualDSP 4.5.
Написанные программы работают, однако при компиляции генерируется слишком большой размер загружаемого кода. Например, программа на ассемблере мигающая светодиодом занимает 74 байта, а компилятор генерирует загрузочный файл *.ldr аж 16К! Пока игралась с отладочной платой это не беспокоило. Теперь перешла к реальной плате и это напрягает. Может кто подскажет, на что линковщик "без моего спроса" тратит драгоценные ресурсы. Какие затраты неизбежны, и без чего
можно обойтись? Короче, как уменьшить размер загружаемого в процессор кода?



Ну там то, сё, хидеры всякие, инициализированые данныe, код инициализации платформы init_code.dxe - описано всё в АN ЕЕ-240.


Но существует же радикальная возможность ужать код раза в 4 во флешке. В окне ProjectOptions/Load/Compression включается zLib архиватор для сжатия ldr-файла
(LZ77 zLib 1.2.3)
Если этот файл большой по сравнению с zLib декомпрессором то эффект будет решающим
zltigo
Цитата(SALOME @ Sep 22 2007, 09:09) *
Может кто подскажет, на что линковщик "без моего спроса" тратит драгоценные ресурсы.

Вообще-то для этого смотрят в MAP файл, а не спрашивают на форуме smile.gif
Цитата
Ну там то, сё, хидеры всякие, инициализированые данныe, код инициализации платформы init_code.dxe

Но не 16 же килобайт на моргание светодиодом...
aaarrr
В опциях линкера есть галочка "Eliminate unused objects" - м.б. поможет.
Stanislav
Цитата(SALOME @ Sep 22 2007, 10:09) *
При создании программ для BF537 использую отладочную плату BF537EZ-KIT Lite и VisualDSP 4.5.
Написанные программы работают, однако при компиляции генерируется слишком большой размер загружаемого кода. Например, программа на ассемблере мигающая светодиодом занимает 74 байта, а компилятор генерирует загрузочный файл *.ldr аж 16К! Пока игралась с отладочной платой это не беспокоило. Теперь перешла к реальной плате и это напрягает. Может кто подскажет, на что линковщик "без моего спроса" тратит драгоценные ресурсы. Какие затраты неизбежны, и без чего
можно обойтись? Короче, как уменьшить размер загружаемого в процессор кода?
Project->Project Options->Add Startup Code/LDF.
Жмёте пимпку Add Startup code only и OK. Сгенетится стартаповый файл.
В Project->Project Options появится закладка Startup Code Settings с подзакладками. Отключаете там все галочки, кроме С/C++ IO and IO device support для программ на С; для асма и её нужно снять.
Если поможет не до конца, продолжим.
SALOME
Цитата(Stanislav @ Sep 22 2007, 15:58) *
Project->Project Options->Add Startup Code/LDF.
Жмёте пимпку Add Startup code only и OK. Сгенетится стартаповый файл.
В Project->Project Options появится закладка Startup Code Settings с подзакладками. Отключаете там все галочки, кроме С/C++ IO and IO device support для программ на С; для асма и её нужно снять.
Если поможет не до конца, продолжим.

Ваш совет уменьшил код до 4,2К. Неплохо для начала!!! В моем первоначальном случае при создании нового проекта я отказывалась генерить LDF файл и по умолчанию использовался встроенный файл, что и давало 16K. Однако хотелось бы продолжить дальше...

Цитата(fontp @ Sep 22 2007, 13:37) *
Но существует же радикальная возможность ужать код раза в 4 во флешке. В окне ProjectOptions/Load/Compression включается zLib архиватор для сжатия ldr-файла
(LZ77 zLib 1.2.3)

Если я правильно поняла, то это ухищрение поможет сократить память внешней загрузочной флэшки. А в SRAM BF все обратно развернется. В моем случае загрузка идет через UART и меня пока интересует сокращение памяти в BF...

Цитата(zltigo @ Sep 22 2007, 15:25) *
Вообще-то для этого смотрят в MAP файл, а не спрашивают на форуме smile.gif

Посмотрела в МАР файл (расширение *.xml). Разобраться в этих 40К текстовой информации могут наверное только небожители crying.gif Так что отпардонитьте меня за мою беспомощность...

Цитата(aaarrr @ Sep 22 2007, 15:50) *
В опциях линкера есть галочка "Eliminate unused objects" - м.б. поможет.

Снятие галочки уменьшило еше на 1К. Спасибо за совет.
dxp
Цитата(SALOME @ Sep 24 2007, 10:53) *
Посмотрела в МАР файл (расширение *.xml). Разобраться в этих 40К текстовой информации могут наверное только небожители crying.gif Так что отпардонитьте меня за мою беспомощность...

В составе VDSP есть утилита xmlmap2html.exe, которая этот xml переконвертит в обычный html. Откройте полученный html вашим любимым браузером.
Itch
кстати сжатие с zLib будет работать только из параллельной флеши, если грузите через SPI, то ничего не выйдет
SALOME
Цитата(Stanislav @ Sep 22 2007, 15:58) *
Если поможет не до конца, продолжим.

А можно все-таки продолджить? 1111493779.gif До какого минимального размера можно довести загружаемый в SRAM код? Ну например в ADSP2185 достаточно было заполнить поле векторов прерывания и в конце загрузить стартовый адрес. Ну а сама прога могла состоять из одной команды. Например: IDLE. Загружаешь в память любым загрузчиком и процессор засыпает. Хотя в исходниках, представляемых в примерах, тоже было очень много чего наворочено...
Хотелась бы тоже сделать загрузку BF осмысленной...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.