안녕 하세요

오늘의 강좌는 비트 대역에서동작과 디폴트 메모리 접근 허용등에 대해서 설명 하겠습니다.



1. 디폴트 메모리 접근 허용


Cortex-M3는 디폴트 설정값을 가지고 있습니다.


● MPU가 존재하지 않을 때
● MPU가 존재하지만 비활성화되어 있을 때

만약에 MPU가 존재하고 활성화되어 있다면, MPU는 설정에서의 접근 허용은 사용자 접근이 허용될지 여부를 결정할 것입니다.

디폴트 메모리 접근 허용 영역

● 특화된 벤더    전체 접근 가능


● ROM 테이블    불가능 사용자 접근은 버스 결함을 이야기 함


● 외부 PPB         불가능 사용자 접근은 버스 결함을 이야기 함


● ETM                 불가능 사용자 접근은 버스 결함을 이야기 함


● TPLU                불가능 사용자 접근은 버스 결함을 이야기 함


● 내부 PPB          불가능 사용자 접근은 버스 결함을 이야기 함


● NVIC                  불가능 사용자 접근은 버스 결함을 이야기 합니다.

(단 사용자 접근을 어용하기 위해 소프트웨어 트리거 인터럽트 레지스터가 프로개르밍 될 수 있습니다.)


● FPB        불가능 사용자 접근은 버스 결함을 이야기 함


● DWT        불가능 사용자 접근은 버스 결함을 이야기 함


● ITM        읽기 가능 사용자 접근을 활성화 시키는 자극 포트를 제외한 쓰기는 무시 됩니다.


● 외부 장치    전체 접근 가능


● 외부 RAM    전체 접근 가능


● 주변 장치    전체 접근 가능


● SRAM        전체 접근 가능


● 코드        전체 접근 가능

2. 비트 대역 동작

비트 대역 동작 지원은 단일 로드/스토어 동작이 하나의 데이터 비트에 접근 할 수 있게 해줍니다.
두개의 미리 정의된 메모리 영역 안에서 지원 되며, 하나는 SRAM의 처음 1MB 안에 위치합니다. 이 두개의 메모리 영역들은

일반 메모리와 같이 접근될 수 있습니다. 또한 비트 대역 앨리어스 라고 불리는 분리된 메모리 영역을 통해서도 접근이

가능합니다.
비트 대역 앨리어스 주소가 각각의 워드 정렬된 주소의 최하위 비트에서 각 개별 비트들이 분리되어 접근될 수 있습니다.
비트 대역 영역 내에서 각 워드는 비트 대역 주소 역영 안에 있는 32개 워드의 LSB에 의해 표현 됩니다. 비트 대역 앨리어스

주소가접근될 때 주소로 리매핑된다는 것은 실제로 발생하는 일입니다. 읽기 동작에서는 그 워드가 읽혀지고 선택된 비트

위지가 읽기 데이터의 LBS에 시프트됩니다. 쓰기 동작에서는 쓰여진 비트 데이터가 요구되는 비트 위치에 시프트되고, READ-MODIFY-WEITE 수행됩니다.

비트 대역 동작을 위해 메모리의 두 영역이 존제 합니다.

●  0x20000000-0x200FFFFF(SRAM, 1Mb)

●  0x40000000-0x400FFFFF(주변장치, 1Mb)

비트 대역 동작의 장점은 분기 결정을 단순화하기 위해서도 사용될 수 있습니다.


2.1 다른 데이터 크기의 비트 대역 동작

비트 대역 동작은 워드 전송으로 제한되어 있지 않습니다. 그것은 바이트 전송 또는 하프워드 전송으로도 수행될 수있습니다.

2.2 C 프로그램에서의 비트 대역 동작

C컴파일러에서는 비트 대역 동작을 지원하지 않습니다.

3. 비정렬 전송


Cortex-M3는 단일 접근에 대해 비정렬 전송을 지원합니다. 데이터 메모리 접근은 정렬 또는 비정렬로 정의될 수 있습니다.
전통적으로 ARM 프로세서는 오직 정렬 전송만을 지원합니다. 이것은 메모리 접근에 있어서 워드 전송은 주소 비트[1]과 비트[0]
이 항상 0이어야 하고, 하프워드 전송은 주소 비트[0]이 항상0이어야 한ㄴ다는 것을 의미합니다.

4. 배타적 접근


Cortex-M3가 SWP 명령어를 가지고 있지 않습니다.
SWP 명령어는 ARM7TDMI와 같은 전통적인 ARM 프로세서에서 세마포어 동작을 위해 사용되었습니다.
Cortex-M3에서는 배타적 접근 동작이 이를 대신합니다. 배타적 접근이란 아키텍처v6에서 처음으로 지원되었습니다.
새로운 ARM 프로세서에서는 READ/WRITE 접근이 분리된 버스에 의해 수행될 수 있습니다. 그러한 상황에서는 SWP 명령어는

메모리 접근을 단일화하기 위해 더 이상 사용될 수 없습니다. 이유는 락 전송 과정에서 읽고 쓰는 동작이 같은 버스에서 이루어

여쟝 하기 때문입니다. 그러므로 락 전송은 배타적 접근에 의해 채제됩니다. 배타적 접근 동작의 개념은 매우 간단하지만 SWP와는 다릅니다. 이것은 세마포어를 위한 메머리 위치가 동일한 프로세스에서 동작하는 다른 버스 마스터나 다른 프로세스에 의해 접근될 수 있는 가능성을 제공 합니다.


5. 에디안 모드
마지막으로 엔디안 모드를 설명 드리겠습니다.
리틀 에디안 모드와 빅 에디안 모드는 지원 메모리 종류는 마이크로컨트롤러의 나머지를 어떻게 설계하느냐에 따라 항상

달라집니다. 대부분의 경우 Cortex-M3 기반의 마이크로컨트롤러는 리틀 에디안입니다.
Cortex-M3에서의 빅 에디안의 정의는 ARM7의 그것과는 다릅니다. ARMTDMI에서 빅 에디안 방식은 워드 기반의 빅 에디안이

라고 불리지만 Cortex-M3에서 빅 에디안 방식은 바이트 기반의 빅 에디안이라고 불립니다.


오늘도 읽어주셔서 감사하고 틀린 부분이 있다면 댓글로 말씀해주시면 감사하겠습니다.