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

 
 
> Помогите впихнуть невпихуемое, резервы флеш-памяти
alux
сообщение Jun 11 2007, 11:23
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Размер программы превышает на 25 байт допустимой. Выжал из программы все, что смог. Рекомендации из апнота AVR035 прочитал. Можна ли как-то использовать неиспользованные вектора прерываний? В xcl-файле убрал:
/* Fill unused interrupt vector's with RETI */
//-H1895
//-h(CODE)0-_..X_INTVEC_SIZE
Не помогло. Пробовал уменьшить
-D_..X_INTVEC_SIZE=34 /* 26 Interrupt vectors * 2 bytes each */
до 30, если меньше выдает ошибку. Еще в программе используется 20 глобальных переменных. Пробовал объединять в структуры. Дало выигрыш аж в 4 байта. Может еще будут какие предложения? Может где-то в настройках стека или еще что... МК - мега48.

Сообщение отредактировал alux - Jun 11 2007, 11:26
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Jun 11 2007, 17:56
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(alux @ Jun 11 2007, 15:23) *
Еще в программе используется 20 глобальных переменных. Пробовал объединять в структуры. Дало выигрыш аж в 4 байта. Может еще будут какие предложения? Может где-то в настройках стека или еще что... МК - мега48.

Так у вас в каком сегменте памяти не хватает? Во флеше или SRAM, переменные то в SRAM хранятья.
А тут в основном обсуждалось как вектора прерываний освободить, но они во флеше и переменные там не разместить.
Go to the top of the page
 
+Quote Post
alux
сообщение Jun 11 2007, 18:50
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Цитата(KRS @ Jun 11 2007, 20:56) *
Так у вас в каком сегменте памяти не хватает? Во флеше или SRAM, переменные то в SRAM хранятья.
А тут в основном обсуждалось как вектора прерываний освободить, но они во флеше и переменные там не разместить.

Да, флеша не хватает. С переменными я погорячился. Так как мне заполнить пространство кода до вектора прерывания? У меня используется два прерывания: OVF0(0x20) и ADC(0x2A) . Как раз 30 байт спасут "отца русской демократии" smile.gif
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 11 2007, 19:51
Сообщение #4


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(alux @ Jun 11 2007, 22:50) *
Да, флеша не хватает. С переменными я погорячился. Так как мне заполнить пространство кода до вектора прерывания? У меня используется два прерывания: OVF0(0x20) и ADC(0x2A) . Как раз 30 байт спасут "отца русской демократии" smile.gif

Как тут уже говорили можно переписать cstartup. Причем если писать на asm то можно по адресу 0 расположить не сразу rjmp, а 15 инструкций и 16ая rjmp (32 байта свобдно).
Дальше пойдет обработчик OVF0, если он на asm то можно 4 инструкции + rjmp.
Потом разместить обработчик ADC целиком.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- alux   Помогите впихнуть невпихуемое   Jun 11 2007, 11:23
- - slog   Ну для начала "Историю одного байта" про...   Jun 11 2007, 11:28
|- - alux   Цитата(slog @ Jun 11 2007, 14:28) Ну для ...   Jun 11 2007, 12:34
|- - slog   Цитата(alux @ Jun 11 2007, 16:34) Самая р...   Jun 11 2007, 13:30
||- - alux   Цитата(slog @ Jun 11 2007, 16:30) Если у ...   Jun 11 2007, 14:19
||- - IgorKossak   Цитата(alux @ Jun 11 2007, 17:19) Т.е. ес...   Jun 11 2007, 14:42
||- - alux   Цитата(IgorKossak @ Jun 11 2007, 17:42) Н...   Jun 11 2007, 15:18
||- - IgorKossak   Цитата(alux @ Jun 11 2007, 18:18) Если у ...   Jun 12 2007, 07:26
||- - alux   Цитата(IgorKossak @ Jun 12 2007, 10:26) П...   Jun 12 2007, 07:53
||- - KRS   Цитата(alux @ Jun 12 2007, 11:53) /* Code...   Jun 12 2007, 09:06
||- - Сергей Борщ   Цитата(KRS @ Jun 12 2007, 12:06) Не испол...   Jun 12 2007, 10:22
||- - IgorKossak   Цитата(Сергей Борщ @ Jun 12 2007, 13:22) ...   Jun 12 2007, 19:18
||- - alux   Цитата(IgorKossak @ Jun 12 2007, 22:18) И...   Jun 17 2007, 08:19
|- - LeonY   Цитата(alux @ Jun 11 2007, 14:34) Очень и...   Jun 17 2007, 21:06
- - IgorKossak   Можно подправить cstartup.s90 и повыкидывать из не...   Jun 11 2007, 12:41
- - _artem_   Если используется вектор прерывания то можно зарез...   Jun 17 2007, 17:52
|- - IgorKossak   Цитата(_artem_ @ Jun 17 2007, 20:52) Если...   Jun 17 2007, 19:49
- - IgorKossak   Абсолютно согласен с LeonY, хоть и не так категори...   Jun 18 2007, 07:58
- - GetSmart   Как вариант можно переписать одну из проедур на ас...   Jun 18 2007, 10:04


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:18
Рейтинг@Mail.ru


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