AVR(AT90CAN128)공부2010. 11. 1. 09:53

출처 : http://blog.daum.net/devil1879/14303557


메모리 락 비트는 메모리 프로그래밍에 관련된 보호기능을 설정하는데 사용된다. 락 비트가 설정되면 설정되는 옵션에 따라서 디바이스 내부에 쓰여진 데이터를 읽어 올 수 없게 하거나 더 이상 프로그램을 할 수 없게 하여 프로그램에 대한 보안을 설정하는 기능을 한다.  표1 처럼 1바이트 중에서 6개의 비트만 사용되고 이 비트들은 모두 디폴트로 1(unprogrammed)로 되어 있으며, 프로그램하면 0(programmed)으로 설정된다. 즉 1로 되어 있으면 락이 설정되지 않는 것이고 0으로 되어 있으면 락이 설정되어 내부 메모리를 읽을 수 없게 된다.

메모리 락 비트는 칩지우기(chip erase)명령을 수행하면 이 비트들은 설정되지 않는 상태인 1로 된다.

 

표 1.  락 비트(lock bit) 바이트의 비트 구성

비트번호

비트명

기능

디폴트 값

7

-

-

1

6

-

-

1

5

BLB12

Boot lock bit

1(unprogrammed)

4

BLB11

Boot lock bit

1(unprogrammed)

3

BLB02

Boot lock bit

1(unprogrammed)

2

BLB01

Boot lock bit

1(unprogrammed)

1

LB2

Lock bit

1(unprogrammed)

0

LB1

Lock bit

1(unprogrammed)

 

표 2. 락 비트(lock bit)에 의한 메모리 보호 기능

메모리 락 비트

메모리 보호 기능

LB 모드

LB2

LB1

외부에서 메모리에 있는 데이터를 읽어 올 수 없게 하여 프로그램에 대한 보안을 설정하는 기능

1

1

1

어떤 메모리도 락 기능이 설정되지 않는다.

메모리에서 쓰여진 데이터를 읽어 올 수 있다.

2

1

0

플래시나 EEPROM을 병렬모드나 SPI/JTAG 직렬모드로 더 이상 프로그래밍하는 것을 금지시킨다. 퓨즈비트도 역시 프로그래밍하는 것이 금지된다.

3

0

0

플래시나 EEPROM을 병렬모드나 SPI/JTAG 직렬모드로 더 이상 프로그래밍하거나 Verity 하는것을 금지시킨다. 퓨즈비트도 역시 프로그래밍하는 것이 금지된다.

BLB0 모드

BLB02

BLB01

실행 프로그램으로 응용 프로그램 섹션을 엑세스하는데 대한 보호 설정

1

1

1

LPM/ELPM/SPM 명령을 사용하여 프로그램 메모리의 응용 프로그램 섹션을 액세스하는데 아무 제한이 설정도지 않는다.

2

1

0

SPM 명령으로 프로그램 메모리의 응용 프로그램 섹션을 라이트하는 것이 금지된다.

3

0

0

SPM 명령으로 프로그램 메모리의 응용프로그램 섹션을 라이트하는 것이 금지되고, 부트로더 섹션에서 실행되는 LPM/ELPM 명령으로 프로그램 메모리 인터럽트 벡터가 위치한다면 응용 프로그램 섹션이 실행되는 동안에 모든 인터럽트는 금지된다.

4

0

1

부트로더 섹션에서 실행되는 LPM/ELPM 명령으로 프로그램 메모리의 응용 프로그램 섹션을 리드하는것이 금지된다. 만약 부트로더 섹션에 인터럽트 벡터가 위치한다면 응용 프로그램 섹션이 실행되는 동안에 모든 인터럽트는 금지된다.

BLB1 모드

BLB12

BLB11

실행되는 프로그램으로 부트로더 섹션을 액세스하는데 대한 보충 설정

1

1

1

LPM/ELPM/SPM 명령을 사용하여 프로그램 메모리의 부트로더 섹션을 액세스하는데 아무 제한이 설정되지 않는다.

2

1

0

SPM 명령으로 프로그램 메모리의 부트로더 섹션을 라이트하는 것이 금지된다.

3

0

1

SPM 명령으로 프로그램 메모리의 부트로더 섹션을 라이트하는 것이 금지되고, 응용 프로그램 섹션에서 실행되는 LMP/EMPM 명령으로 프로그램 메모리의 부트로더 섹션을 리드하는 것이 금지된다. 만약 응용프로그램 섹션에 인터럽트 벡터가 위치한다면 부트로더 섹션이 실행되는 동안에 모든 인터럽트는 금지된다.

4

0

0

응용 프로그램 섹션에서 실행되는 LPM/ELPM 명령으로 프로그램 메모리의 부트로더 섹션을 리드하는것이 금지된다. 만약 응용프로그램 섹션에 인터럽트 벡터가 위치한다면 부트로더 섹션이 실행되는 동안에 모든 인터럽트는 금지된다.


 

ToastProg2005 프로그램을 이용하여 락 비트 설정 부분을 확인해 보도록 하겠습니다. 그리고

 

ToastProg2005 프로그램 사용법을 모르시면 ToastProg2005 사용법 게시판을 참고하시기 바랍니다.

아래 그림은 ToastProg2005를 실행시키고 툴바에서 를 클릭하거나 메뉴에서

 

"Security and ..." 명령을 시킨 그림이다.

 

 

 

그림에서 V 표시로 체크를 하고 Write 버튼을 클릭하면 락이 설정되는 것이다.

V로 체크하면 0이 쓰여지는 것이고 체크되지 않으면 1로 설정된다.


Posted by 초동