реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> VisualDSP - уменьшение размера загружаемого кода
SALOME
сообщение Sep 22 2007, 06:09
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



При создании программ для BF537 использую отладочную плату BF537EZ-KIT Lite и VisualDSP 4.5.
Написанные программы работают, однако при компиляции генерируется слишком большой размер загружаемого кода. Например, программа на ассемблере мигающая светодиодом занимает 74 байта, а компилятор генерирует загрузочный файл *.ldr аж 16К! Пока игралась с отладочной платой это не беспокоило. Теперь перешла к реальной плате и это напрягает. Может кто подскажет, на что линковщик "без моего спроса" тратит драгоценные ресурсы. Какие затраты неизбежны, и без чего
можно обойтись? Короче, как уменьшить размер загружаемого в процессор кода?


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post
fontp
сообщение Sep 22 2007, 06:37
Сообщение #2


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(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 декомпрессором то эффект будет решающим
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 22 2007, 08:25
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SALOME @ Sep 22 2007, 09:09) *
Может кто подскажет, на что линковщик "без моего спроса" тратит драгоценные ресурсы.

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

Но не 16 же килобайт на моргание светодиодом...


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 22 2007, 08:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



В опциях линкера есть галочка "Eliminate unused objects" - м.б. поможет.
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Sep 22 2007, 08:58
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(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 для программ на С; для асма и её нужно снять.
Если поможет не до конца, продолжим.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
SALOME
сообщение Sep 24 2007, 03:53
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



Цитата(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К. Спасибо за совет.


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post
dxp
сообщение Sep 24 2007, 04:50
Сообщение #7


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



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

В составе VDSP есть утилита xmlmap2html.exe, которая этот xml переконвертит в обычный html. Откройте полученный html вашим любимым браузером.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Itch
сообщение Sep 24 2007, 10:03
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



кстати сжатие с zLib будет работать только из параллельной флеши, если грузите через SPI, то ничего не выйдет
Go to the top of the page
 
+Quote Post
SALOME
сообщение Oct 1 2007, 03:45
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349



Цитата(Stanislav @ Sep 22 2007, 15:58) *
Если поможет не до конца, продолжим.

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


--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 12:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01454 секунд с 7
ELECTRONIX ©2004-2016