|
Помогите впихнуть невпихуемое, резервы флеш-памяти |
|
|
|
 |
Ответов
|
Jun 11 2007, 11:28
|
Знающий
   
Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489

|
Ну для начала "Историю одного байта" прочти. http://www.caxapa.ru/lib/1byte.htmlА потом садись оптимизировать код. Листинг ассемблерный поможет. В листинге линкера есть информация о том сколько какая функция занимает. С самых жирных и начинай. Уверен 100% что 25 байт ужать можно. Какой размер программы-то? И какие функции самые жирные?
--------------------
В действительности всё не так, как на самом деле.
|
|
|
|
|
Jun 11 2007, 12:34
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Цитата(slog @ Jun 11 2007, 14:28)  Ну для начала "Историю одного байта" прочти. Очень интересная история. Правда. Очень понравилась. У меня получилось почти как в рассказе. Правда еще один байт остался в запасе  . Выкинул проверку источника сброса и разместил три глобальные переменные в регистрах. Самая ресурсоемкая функция - формула с применением деления и корня квадратного. Использую из math.h. А что на счет использования неиспользуемых векторов прерывания?
|
|
|
|
|
Jun 12 2007, 07:26
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(alux @ Jun 11 2007, 18:18)  Если у меня используется прерывание АЦП, то могу окупировать 4 байта? А что для этого нужно сделать? Подправить командный файл линкера, но не так как Вы это уже делали в плане количества векторов. В опциях -Z(CODE) диапазоны адресов указать надо от 0, а не от INTVEC_SIZE. Это более универсально, чем править cstartup на ассемблере, но менее экономично по высвобождаемой памяти. Кроме того, если у Вас не предусмотрен возврат из функции main() (exit), в cstartup можно удалить всё, что после вызова main, а вызов main заменить на jmp. Да и саму main() можно определить как __task int main(), чтобы она не сохраняла и не восстанавливала регистры в начале и в конце.
|
|
|
|
Сообщений в этой теме
alux Помогите впихнуть невпихуемое Jun 11 2007, 11:23       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 KRS Цитата(alux @ Jun 11 2007, 15:23) Еще в п... Jun 11 2007, 17:56 alux Цитата(KRS @ Jun 11 2007, 20:56) Так у ва... Jun 11 2007, 18:50  KRS Цитата(alux @ Jun 11 2007, 22:50) Да, фле... Jun 11 2007, 19:51 _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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|