Отговори на тема  [ 5 мнения ] 
Препълване на стек 
Автор Съобщение
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Съб Май 17, 2008 11:01 pm
Мнения: 238
Мнение Препълване на стек
Здравейте на всички колеги. Програмирам един PIC18f4620 на MicroC pro for PIC version 3.2 пуснат на 12мхз ,като управлявам един графичен LCD и реализирам менюта и под менюта . Проблема е следния - след доста код на протеуса процесора се оспива и изписва ,че стека е препълнен .При писането на кода не ми е много ясно как да предотвраря това . Използвам само глобални променливи , кода сам разбил на функции с цел малко да ми е по прегледно когато пиша .Заел съм едва 20% от ROM паметта .Как вие оптимизирате кода , когато пишете и то доста код с много библиотечни функции :?: .


Вто Апр 13, 2010 10:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Ами много зависи как си го писал тоя код, и с 1% може да препълниш стека. CCS си има инспектор на стека, но има случаи когато няма как да ти покаже препълването. Най-вече избягвай да викаш функция от друга функция, не казвам да не го правиш, ама като извикаш 4-5 функции една в друга, и ти дойде прекъсване иси готов, щото и там сигурно изпозвлаш функции. Я постни тоя код да го видим, и ще се види що ти препълва стека. Не забравяй че микроконтролерите не са РС, особенно пък тия на мкрочип.


Вто Апр 13, 2010 10:23 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Съб Май 17, 2008 11:01 pm
Мнения: 238
Мнение 
Ами тогава най добре е да не разбивам кода на функции , за да не се препълва стека .Е да не е персонален компютър , микроконтролера си е с хардуерен стек , май беше с 31 нива в спецификацията го пишеше. Трябва да постна кода , но просто трябва да разбера да предотвратявам това .


Вто Апр 13, 2010 10:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Е това е крайност, но трябва да се внимава кое от къде викаш. Иначе е 31 нива, и емного чудно как успяваш да го препълниш, аз отдавна не ги позлвам пикльовците и бях забравил че тая серия са 32 нива, тва доста упоритост трябва да го препълниш, да нямаш фукция в прекъсване и да не излизаш от него или нещо подобно, да имаш изход с гото.


Вто Апр 13, 2010 10:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
дай да видим това images.c че не се компилира без него, още не мога съвсем да вдяна какво правиш ама ....


Вто Апр 13, 2010 11:22 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 5 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни