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

 
 
> Контрольная сумма памяти программ, как ее посчитать?
_Надя
сообщение Dec 6 2008, 16:11
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 18-11-08
Пользователь №: 41 741



Имеется мега 16... есть программа... нужно сделать типа самотестирование устройства... т.е. найти сумму памяти программ и полученный результат вывести на порт.... В общем я очень озададчилась такой постановкой задачи, поскольку совсем не представляю где эта память программ с какого адреса она начинается и до какого мне нужно это все суммировать. Число получиться наверное оооочень большим, какую переменную использовать и как это все поразрядно на порт выводить. В общем совсем не представляю. Причем как я поняла из постановки задачи это самотестирование нужно делать не только при включении питания, а постоянно, т.е. пока мк работает нужно считать сумму программ. На сколько этот процесс длительный - подстчет всей суммы? Не будет ли что либо тормозить, может нужно как то это частями считать, а как? С помощью таймера или еще как? Поделитесь, кто нибудь что нибудь делал нечто подобное? Как ЭТО сделать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Baser
сообщение Dec 6 2008, 21:35
Сообщение #2


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Вообщем, BigBolt вам уже все основные вещи написал. Выделю только одну мысль:
контрольная сумма памяти программ не может изменяться часто (если только сам процессор туда ничего не пишет). Она может измениться только при сбое программы, после которого уже можно ничего не делать, а только мигать и гудеть smile.gif
Поэтому её не нужно считать быстро и часто. Сделайте неспешный подсчет по одному байту в главном цикле, т.е. тогда, когда спешить не нужно. За несколько секунд CRC будет вычисляться совершенно не напрягая процессор.

А вообще, стандартный подход несколько другой. CRC памяти программ вычисляется самим компилятором Си и сохраняется в последнем слове флеша. А прикладная программа непрерывна считает CRC по тому же алгоритму и сверяет с правильной. Наружу выдается только код ошибки (или мигание светодиодом, гудение и т. д.)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 07:51
Рейтинг@Mail.ru


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