Mikrokontrolery firmy Elan z pamięcią OTP programowalne są oczywiście jeden raz. Stosując jednak technikę podaną w tym dokumencie można je zaprogramować kilka razy bez utraty funkcjonalności.
Nie do końca rozumiem tą metodę. Stary kod "zakrywany" jest tu nop'ami. Na wektor przerwań rezerwowana jest pamięć dyrektywą ORG. Ponieważ nop w EM78 to opcode 0000 w słowie pamięci, może dojść do "nałożenia" obu kodów. Jednak jeżeli tak zrobić, to już na początku uzyskam:
Podałem tu zawartość dwóch pierwszych słów pamięci. Jak może to działać ? Przecież wykona się tylko pierwszy skok i nawet nie ma szansy, by dojść do nowego kodu. Może ja czegoś nie wiem o EM78 ?
[edit] Już wiem o co tu chodzi. Po nałożeniu nop na dowolną instrukcję wyjdzie z tego i tak nop. W czystej pamięci EPROM (taka jest OTP) mamy same 0xFF. Każdą 1 danej komórki da się zaprogramować jako 0. W drugą stronę, bez kasowania UV nie jest to możliwe. Zatem z opcodu dla jmp wyjdzie nop, po wykasowaniu wszystkich 1. Ot cała filozofia
.
Nie do końca rozumiem tą metodę. Stary kod "zakrywany" jest tu nop'ami. Na wektor przerwań rezerwowana jest pamięć dyrektywą ORG. Ponieważ nop w EM78 to opcode 0000 w słowie pamięci, może dojść do "nałożenia" obu kodów. Jednak jeżeli tak zrobić, to już na początku uzyskam:
Kod: text
Podałem tu zawartość dwóch pierwszych słów pamięci. Jak może to działać ? Przecież wykona się tylko pierwszy skok i nawet nie ma szansy, by dojść do nowego kodu. Może ja czegoś nie wiem o EM78 ?
[edit] Już wiem o co tu chodzi. Po nałożeniu nop na dowolną instrukcję wyjdzie z tego i tak nop. W czystej pamięci EPROM (taka jest OTP) mamy same 0xFF. Każdą 1 danej komórki da się zaprogramować jako 0. W drugą stronę, bez kasowania UV nie jest to możliwe. Zatem z opcodu dla jmp wyjdzie nop, po wykasowaniu wszystkich 1. Ot cała filozofia