AVR Lock and Fuse bits
설정되어 있는 비트가 어떤 상태인지 알기 위해서 아래와 같이 avrdude 커맨드를 입력해서 확인할 수 있습니다.
avrdude -p<partno> -c<programmer-id> -U efuse:r:-:b -U hfuse:r:-:b -U lfuse:r:-:b -U lock:r:-:b
Lock bits
Lock bits는 프로그래머를 통해 메모리에 접근하는 것을 보호하는 설정에 대한 비트입니다.
Lock bits에 0 쓰는 것은 자유롭지만 1 을 쓰기 위해서는 칩을 지워야 합니다.
-e
옵션을 사용하면 flash ROM, EEPROM, Lock bits를 모두 0xFF로 초기화 시킵니다. flash에 프로그램을 업로드하면 자동으로 -e
옵션이 적용되기 때문에 Lock bits는 업로드 후에 항상 0xFF로 초기화 되어 있습니다.
그러므로 프로그램을 업로드 하기 전에 -e
옵션을 사용하여 강제적으로 Lock bits를 설정하는 것은 무의미 합니 다.
avrdude -p<partno> -c<programmer-id> -U efuse:w:[0bxxxxxxxx]:m
Fuse bits
Fuse bits는 Extended, High, Low 세 종류로 프로그래머, 부트 사이즈, 클럭 소스 등의 설정에 대한 비트입니다.
기능에 해당하는 비트를 0 으로 설정하면 활성화되고 1 로 설정하면 비활성화 됩니다.
Extended Fuse bits
avrdude -p<partno> -c<programmer-id> -U efuse:w:[0bxxxxxxxx]:m
Fuse High bits
avrdude -p<partno> -c<programmer-id> -U hfuse:w:[0bxxxxxxxx]:m
Fuse Low bits
avrdude -p<partno> -c<programmer-id> -U lfuse:w:[0bxxxxxxxx]:m