inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

ARM Cortex-M 프로세서 프로그래밍

s704_원자적 액세스의 필요성 GPIO_BSRR

s704 원자적 엑세스 질문드립니다.

258

chltnckd7

작성한 질문수 9

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

안녕하세요. 잘 이해되지 않는 부분이 있어 질문드립니다.

Q1)ODR에 읽은 값을 다시 쓰는 동작이 아니라서 BSRR에 값을 써주기만 하면 LED가 꺼지기 때문에 비원자적 엑세스처럼 하나의 레지스터에 값이 꼬일 일이 없으니까정상 동작 할 수 있다고 이해했는데 맞나요?

Q2)강의 1분30 ~ 1분 40초 구간에서 bsrr에 쓰기 동작을 하기 전에 인터럽트가 발생할 일이 없다고 하셨는데 인터럽트가 중간에 발생할 수는 있지 않나요?

감사합니다.

 

 

임베디드 cortex arm-architecture

답변 1

1

홍영기

안녕하세요. chltnckd7 님!

Q1)ODR에 읽은 값을 다시 쓰는 동작이 아니라서 BSRR에 값을 써주기만 하면 LED가 꺼지기 때문에 비원자적 엑세스처럼 하나의 레지스터에 값이 꼬일 일이 없으니까정상 동작 할 수 있다고 이해했는데 맞나요?

ANS. 그렇습니다. 메모리나 하드웨어 레지스터의 값을 변경하기 위해서는 영상에서 말씀드렸던 것처럼 R-M-W 동작이 완성되어야 하죠. 하지만 BSRR 은 쓰기(W) 동작 만으로 연산이 완료될 수 있기 때문에 원자적 액세스 입니다.

Q2)강의 1분30 ~ 1분 40초 구간에서 bsrr에 쓰기 동작을 하기 전에 인터럽트가 발생할 일이 없다고 하셨는데 인터럽트가 중간에 발생할 수는 있지 않나요?

ANS. 인터럽트가 발생하지 않는다는 뜻이 아니고, 인터럽트가 발생하면 이미 실행 중이던 명령어(INSTRUCTION) 는 실행을 마치고 인터럽트 핸들러로 진입합니다. 이렇게 내용을 이해하시면 좋겠습니다.

예를들어 아래와 같은 쓰레드 코드가 있다고 했을 때 148번지의 STR 명령어 실행을 마치고 인터럽트 핸들러를 실행하겠죠. 인터럽트 핸들러를 실행한 이후에 14A번지 이후의 코드를 실행하게 됩니다.

@ r2에는 BSRR 의 주소가 저장되어 있다

08000148 STR r0, [r2] <-- 이 시기에 인터럽트가 발생했다고 가정
0800014A LDR r3, [r1]

 

0

chltnckd7

아 넵 자세한 설명 감사드립니다!

stm32cubeide 관련 문의

0

53

2

DMA 관련한 강의도 제작해주실 수 있으신가요 ?

0

100

1

그림들도 해석 할 수 있어야 하나요?

1

103

2

no-stlink

1

82

2

4개의 CPU 사이클이 필요한 이유

1

101

2

MAC으로 진행 질문드려요..

1

95

2

학습 진행 시, 사용하는 Board에 대한 문의 드립니다!

0

160

2

push pop 질문

1

192

2

STM32Fx Cortex ARM 프로그래밍 저자:홍봉조, 출판사:지식과 감성

0

242

1

CORTEX_02_ASSEMBLY 빌드시 에러

1

270

1

외부 ST Link 연결 이용한 SWD 방법

0

344

1

파이프라인과 명령어

1

327

1

명령어 fetch

0

238

1

lr 레지스터 LSB 값

1

262

1

Disassembly 창 문제

0

350

1

s702 강좌에서 사용한 technical reference manual 문서

1

328

1

s702에 원자적 Access 를 위한 BSRR 코드작성 부분에 대해서

1

274

1

s202 LED 점등 예제 실행시 에러

2

351

1

STM32F429I-DISC 보드의 펌웨어

2

396

1

제공되지 않은 강의교재

0

319

1

s524 테일체이닝 강의 질문

0

235

1

부트코드와 부트로더의 차이점

1

1531

1

메모리 맵 질문

0

288

1

xPSR 레지스터 플래그 값 및 기타 질문 드립니다.

1

864

2