В некоторых проектах я проверяю защиту от копирования на стадии запуска программы.
Для этого читаю 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
}
Если контроллер не защищен от чтения просто запускю бесконечный цикл и устройство не подаст признаков жизни.Предохраняйтесь!
Комментариев нет:
Отправить комментарий