В некоторых проектах я проверяю защиту от копирования на стадии запуска программы.
Для этого читаю lock биты:
lock_bit.asm
#include "iom88.h" PUBLIC Get_Lock_Bits RSEG CODE Get_Lock_Bits: push ZH push ZL ldi ZH,0 ldi ZL,1 ldi r16,(1<<BLBSET)|(1<<SPMEN) out SPMCSR,r16 lpm mov r16,r0 pop ZL pop ZH ret
... и проверяю их при запуске основной программы:
main.c
#define LOCK_BITS_MASK 0x03 #define LOCK_BITS_VAL 0x00 void main(void) { if ((Get_Lock_Bits() & LOCK_BITS_MASK) != LOCK_BITS_VAL) while(1); // some code }Если контроллер не защищен от чтения просто запускю бесконечный цикл и устройство не подаст признаков жизни.
Предохраняйтесь!
Комментариев нет:
Отправить комментарий