Отговори на тема  [ 2 мнения ] 
Checksum на програмната памет на PIC 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение Checksum на програмната памет на PIC
Здравейте!

Намислил съм при стартиране на едно устройство да правя проверка на програмната памет и да рапортувам ако има нещо нередно. До тук добре. Намерил съм начин да го правя - малко заобиколен вярно - но все пак работещ.
1. Карам компилатора да ми смята check сума за определена част от програмата и да ми я запише на определено място. Това за да не се налага при всяка промяна да смятам наново. Да смята компилатора - каква му е работата.
2. После аз също си изчислявам собствена такава при стартиране на програмата.
3. Сравнявам двете стойности, като преизчислявам допълнително заради влиянието на боотлоадера.
4. Ако има несъответствие - пиша по дисплея потребителя да му дърпа жицата и да почва да ме търси усилено. :D

Като четох обаче по тоя въпрос - попаднах на следното:
В компилатора на HI-TECH има следния текст:
By default, if the destination of the checksum is an address in program memory the generated
startup routine will include a built-in verification of this checksum. If this is not desired, this test
can be disabled with the option --runtime=-checksum.
В моя случай тоя тест е забранен.

От любопитство обаче направих проба: - и вярно прави се някаква проверка!
Махнах боотлоадера за да опростя работата, и ако при програмирането променя записаната сума която МПЛАБА е сметнал - програмата не тръгва изобщо.
Явно тоя "built-in verification" метод работи - ама не ми е ясно какво прави.

Аз, понеже както би казал Никола Киров съм "жалък пикоборец" :D и нямам даже дебъгер. Та за това и сам не мога да разбера какво точно прави тоя код дето компилатора си го донажда сам. Явно че проверява всичката програмна памет и сравнява със checksum-ата записана от компилатора. Ако съвпадне - добре, Ама ако не - тогава какво става? :cry:

Та въпроса е ако някой се е сблъсквал с това - да ни открехне и нас!


Сря Фев 18, 2009 11:21 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Ето го и отговора - малко четене трябвало! :D

If PICC18’s --checksum option is also used, the generated startup
routines will include verification against the stored checksum. The
checksum result is assumed to be stored in program memory.

If the verification fails, library function __checksum_failed() will
be called. This function is expected to be customized to suit the final
application.

Явно нещата трябва да се правят ДЕНЕМ, щото нощем сме все или така 8O или така :cry: !!!


Чет Фев 19, 2009 1:38 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 2 мнения ] 

Кой е на линия

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


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

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