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

 
 
> Контрольная сумма памяти программ, как ее посчитать?
_Надя
сообщение 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
muravei
сообщение Dec 9 2008, 14:40
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(Baser @ Dec 7 2008, 00:35) *
Она может измениться только при сбое программы, после которого уже можно ничего не делать, а только мигать и гудеть smile.gif

Поэтому интереснее было бы считать CRC содержимого оперативки( переменные итд), чтобы выходить "живым" из сложных ситуаций. Понятно , что его надо считать после каждого изменения этой памяти, но некоторые программы , бывает , скрупулезно перебирают нопы.
Было бы интересно узнать, что кто думает по выходу из сбоев и зависаний.
Go to the top of the page
 
+Quote Post
EugeNNe
сообщение Dec 9 2008, 15:56
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 424
Регистрация: 6-03-06
Из: Н.Новгород
Пользователь №: 14 997



Цитата(muravei @ Dec 9 2008, 17:40) *
Поэтому интереснее было бы считать CRC содержимого оперативки( переменные итд), чтобы выходить "живым" из сложных ситуаций. Понятно , что его надо считать после каждого изменения этой памяти, но некоторые программы , бывает , скрупулезно перебирают нопы.
Было бы интересно узнать, что кто думает по выходу из сбоев и зависаний.


Ну во первых наверное сама логическая структура программы и её организация должна подразумевать возможность сбоев и зависаний. Мы например, в определённых точках проверяем корректность выполненных действий и если всё ОК то только тогда дальше и вперёд smile.gif
Go to the top of the page
 
+Quote Post
muravei
сообщение Dec 9 2008, 18:16
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(BigBolt @ Dec 9 2008, 18:56) *
в определённых точках проверяем корректность выполненных действий

А это имеет реалный смысл? Если программа сбилась, то врядли она начнет сама себя проверять, пока ее не вернет в нужное русло собака бешеная(сторожевая), а вот после этого есть смысл узнать , что мы вместе, и в каком!. smile.gif
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 10:27
Рейтинг@Mail.ru


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