|
|
 |
Ответов
|
Mar 16 2017, 15:45
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(Ioann_II @ Mar 16 2017, 16:06)  Не совсем понял про стек.... поясните. Некоторые компиляторы создают два отдельных стека "hard" и "soft". hwstk_size - это "hardware stack". hard-stack - это стандартный аппаратный стек, адресуется указателем стека SP, "push" и "pop" - это его команды и предназначен он исключительно для помещения в него адресов возврата при вызове функций и прерываний. Для передаваемых параметров и локальных переменных создается soft-stack. Он адресуется парой регистров Y и сохранение/извлечение из него происходит с помощью команд загрузки/сохранения через Y. Как правило, soft-stack требует большего размера нежели hard-stack.
|
|
|
|
|
Mar 17 2017, 12:35
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 7-06-05
Пользователь №: 5 797

|
Цитата(aiwa @ Mar 16 2017, 18:45)  Некоторые компиляторы создают два отдельных стека "hard" и "soft". hwstk_size - это "hardware stack". hard-stack - это стандартный аппаратный стек, адресуется указателем стека SP, "push" и "pop" - это его команды и предназначен он исключительно для помещения в него адресов возврата при вызове функций и прерываний. Для передаваемых параметров и локальных переменных создается soft-stack. Он адресуется парой регистров Y и сохранение/извлечение из него происходит с помощью команд загрузки/сохранения через Y. Как правило, soft-stack требует большего размера нежели hard-stack. Понятно, что имеете в виду под soft-стеком. Некоторые компиляторы туда-же складывают локальные переменные. Просмотрел листинг и увидел, что есть адресация временных переменных по y+62!!! Изменение значения y Не стал отслеживать, но похоже, что +62 явно выйдет за пределы.... Полагал, что компилятор должен отслеживать использование памяти.... Поправил исходник так, чтобы избавиться от таких временных переменных. Буду смотреть результат...
|
|
|
|
|
Mar 18 2017, 13:00
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 7-06-05
Пользователь №: 5 797

|
Ну, пока что сутки отработало без зависаний... Посмотрю ещё сутки, чтобы не сделать вывод преждевременно...
|
|
|
|
|
Mar 19 2017, 21:34
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 7-06-05
Пользователь №: 5 797

|
Зависать перестало. Причина была в использовании памяти промежуточными результатами вычислений. Заменил выражения вида: Код a=func(b,c) ^ func(d,e) ^ func(f,g) ^ func(i,j); выражениями вида: Код a=func(b,c); a^=func(d,e); a^=func(f,g); a^=func(i,j); И в ассемблерном листинге исчезли команды типа Код std y+5,R... ................... std y+62,R... И всё стало ограничиваться Код std y+4,R... Спасибо за подсказки.
Сообщение отредактировал Ioann_II - Mar 19 2017, 21:37
|
|
|
|
Сообщений в этой теме
Ioann_II Зависание ATMega328P Mar 12 2017, 03:25 Палыч Ну, почему же "не программное"?
Как вари... Mar 12 2017, 13:14 Ioann_II Обработчики прерываний на месте и в порядке.
Остан... Mar 12 2017, 14:23  zombi Цитата(Ioann_II @ Mar 12 2017, 17:23) Ост... Mar 14 2017, 00:38 pavel-pervomaysk Код покажите.
Если прерывание постоянно куда-то ув... Mar 13 2017, 06:33 aiwa Цитата(zombi @ Mar 14 2017, 02:38) А если... Mar 14 2017, 03:08 adnega Цитата(aiwa @ Mar 14 2017, 06:08) Чем же ... Mar 14 2017, 05:07 aiwa Цитата(adnega @ Mar 14 2017, 07:07) Видим... Mar 14 2017, 08:59 Ioann_II Вот сейчас вывел на LCD содержимое SP. Жду. Пока ч... Mar 14 2017, 11:52  Ioann_II Спустя 6 часов работы зависло. SP=2301. Mar 14 2017, 23:44   Ioann_II Снова, спустя 11 часов...
Прерывание на приём сим... Mar 15 2017, 23:39    Сергей Борщ QUOTE (Ioann_II @ Mar 16 2017, 01:39) Пок... Mar 16 2017, 06:58     Ioann_II Цитата(Сергей Борщ @ Mar 16 2017, 09:58) ... Mar 16 2017, 12:40 Genadi Zawidowski Код в студию, весь. Mar 15 2017, 00:11 Genadi Zawidowski По содержанию сообщений было не понятно, что речь ... Mar 16 2017, 06:32 aiwa Цитата(Ioann_II @ Mar 15 2017, 01:44) Спу... Mar 16 2017, 10:10 aiwa Цитата(Ioann_II @ Mar 16 2017, 14:21) Ком... Mar 16 2017, 12:42 Ioann_II Цитата(aiwa @ Mar 16 2017, 15:42) Значит ... Mar 16 2017, 14:06
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|