메모리 맵 질문
279
8 câu hỏi đã được viết
메모리 맵 자체는 data width가 1바이트인데, 0xE000ED00의가 가리키는 값은 왜 4바이트 인가요?
Câu trả lời 1
0
안녕하세요. 박진수님
말씀하신 0xE000ED00 는 SCB(system control block) - CPUID 하드웨어 레지스터의 주소입니다.
이 레지스터는 32비트 크기를 갖고 있고요.
C 프로그램에서 이 레지스터를 접근하려고 하면 다음과 같은 방법으로 가능합니다.
volatile unsigned int* hwreg_cpuid = (unsigned int*)0xE000ED00;
temp = *hwreg_cpuid
여기서 unsigned char* 나 unsigned short* 을 사용하지 않고 unsigned int* 을 사용한 이유는 그 레지스터의 크기가 32비트라서 그렇습니다.
메모리맵과 버스에 대한 이해를 위하여 다음의 정보 글을 읽어보시기를 추천드립니다.
0
답변 감사드립니다. 궁금한게 하나 더있는데요. 32bit 레지스터에 들어가는 값이 int 형이라 주소를 4씩 증가시키잖아요. 근데 만약에 32bit 레지스터에 short 형이나 double 형으로 들어간다고 가정하면 어떤식으로 동작 할까요? short 형이면 2 byte니 4byte가 되야 레지스터가 차고 double형은 8 byte인데 주소 2개가 0x0000_0000 ~ 0X0000_0007 이 같은 값을 가지게 될까요?
0
메모리는 동일한 위치(주소)의 변수를 필요하다면 1, 2, 4 바이트 서로 다른 사이즈로 접근해도 되지만, 하드웨어 레지스터는 원래의 정해진 사이즈로만 접근해야 합니다.
원래의 크기가 아닌 다른 사이즈로 레지스터를 접근하였을 때는 정상적인 액세스를 보장할 수 없습니다.(될 수도 있고 안 될 수도 있다는 뜻)
stm32cubeide 관련 문의
0
43
2
DMA 관련한 강의도 제작해주실 수 있으신가요 ?
0
90
1
그림들도 해석 할 수 있어야 하나요?
1
100
2
no-stlink
1
80
2
4개의 CPU 사이클이 필요한 이유
1
99
2
MAC으로 진행 질문드려요..
1
95
2
학습 진행 시, 사용하는 Board에 대한 문의 드립니다!
0
159
2
push pop 질문
1
190
2
STM32Fx Cortex ARM 프로그래밍 저자:홍봉조, 출판사:지식과 감성
0
242
1
CORTEX_02_ASSEMBLY 빌드시 에러
1
270
1
외부 ST Link 연결 이용한 SWD 방법
0
338
1
파이프라인과 명령어
1
326
1
명령어 fetch
0
238
1
lr 레지스터 LSB 값
1
258
1
Disassembly 창 문제
0
349
1
s702 강좌에서 사용한 technical reference manual 문서
1
323
1
s702에 원자적 Access 를 위한 BSRR 코드작성 부분에 대해서
1
270
1
s202 LED 점등 예제 실행시 에러
2
351
1
STM32F429I-DISC 보드의 펌웨어
2
394
1
제공되지 않은 강의교재
0
319
1
s524 테일체이닝 강의 질문
0
234
1
부트코드와 부트로더의 차이점
1
1524
1
xPSR 레지스터 플래그 값 및 기타 질문 드립니다.
1
858
2
컴퓨터 연결 및 회로도
0
420
1

