|
|
  |
VisualDSP - уменьшение размера загружаемого кода |
|
|
|
Sep 22 2007, 06:09
|

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

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

Эксперт
    
Группа: Свой
Сообщений: 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 декомпрессором то эффект будет решающим
|
|
|
|
|
Sep 22 2007, 08:25
|

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

|
Цитата(SALOME @ Sep 22 2007, 09:09)  Может кто подскажет, на что линковщик "без моего спроса" тратит драгоценные ресурсы. Вообще-то для этого смотрят в MAP файл, а не спрашивают на форуме  Цитата Ну там то, сё, хидеры всякие, инициализированые данныe, код инициализации платформы init_code.dxe Но не 16 же килобайт на моргание светодиодом...
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 22 2007, 08:58
|

Гуру
     
Группа: Свой
Сообщений: 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 для программ на С; для асма и её нужно снять. Если поможет не до конца, продолжим.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Sep 24 2007, 03:53
|

Местный
  
Группа: Свой
Сообщений: 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 файл, а не спрашивают на форуме  Посмотрела в МАР файл (расширение *.xml). Разобраться в этих 40К текстовой информации могут наверное только небожители  Так что отпардонитьте меня за мою беспомощность... Цитата(aaarrr @ Sep 22 2007, 15:50)  В опциях линкера есть галочка "Eliminate unused objects" - м.б. поможет. Снятие галочки уменьшило еше на 1К. Спасибо за совет.
--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
|
|
|
|
|
Oct 1 2007, 03:45
|

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

|
Цитата(Stanislav @ Sep 22 2007, 15:58)  Если поможет не до конца, продолжим. А можно все-таки продолджить?  До какого минимального размера можно довести загружаемый в SRAM код? Ну например в ADSP2185 достаточно было заполнить поле векторов прерывания и в конце загрузить стартовый адрес. Ну а сама прога могла состоять из одной команды. Например: IDLE. Загружаешь в память любым загрузчиком и процессор засыпает. Хотя в исходниках, представляемых в примерах, тоже было очень много чего наворочено... Хотелась бы тоже сделать загрузку BF осмысленной...
--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|