Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Checksum на програмната памет на PIC
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=6561
Страница 1 от 1

Автор:  juzisound [ Сря Фев 18, 2009 11:21 pm ]
Заглавие:  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:

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

Автор:  juzisound [ Чет Фев 19, 2009 1:38 pm ]
Заглавие: 

Ето го и отговора - малко четене трябвало! :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: !!!

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/