STM32 & C언어 디자인 패턴
close
프로필 배경
프로필 로고

STM32 & C언어 디자인 패턴

  • 분류 전체보기 (171)
    • ▶ STM32 (63)
      • News (8)
      • 회로리뷰 (12)
      • Peripheral (37)
      • 개발환경 (6)
    • ▶ C Application (28)
      • 디자인 패턴 (22)
      • App 만들기 (6)
    • ▶ ARM Core (10)
    • ▶ RTOS (7)
      • RTOS 만들기 (7)
      • FreeRTOS (0)
      • ThreadX (0)
    • ▶ 일상리뷰 (3)
    • ▶ 이전글 (53)
      • C Pattern (25)
      • C Coding (7)
      • Linux (5)
      • Programming (6)
      • Book Reference (10)
  • 홈
  • 태그
  • 방명록
  • Github
Exception entry and return : EXC_RETURN

Exception entry and return : EXC_RETURN

ARM-Cortex M 시리즈에서는 컴파일러의 최적화에 따라서 다르지만 서브루틴을 호출하면 원래의 위치로 복귀하기 위해서 LR(Link Register)에 PC의 내용을 저장하게 됩니다. 하지만 Exception(혹은 Interrupt)상황에서는 LR에 아래와 같은 이상한 값들이 저장됩니다. 0xFFFFFFF1 0xFFFFFFF9 0xFFFFFFFD 0xFFFFFFE1 0xFFFFFFE9 0xFFFFFFED ​ 왜 이럴까요? 결론적으로 말씀드리자면 Exception 해제시 Handler/Thread Mode, MSP/PSP를 시스템이 알기 위해서 입니다. 위의 값을 EXC_RETURN 값이라고 하는데 이 값들이 LR에 저장이 되고 Exception 해제시 시스템이 LR을 읽어 진입시의 상태로 되돌릴 수 ..

  • format_list_bulleted ▶ ARM Core
  • · 2023. 11. 17.
  • textsms
DSB, ISB, DMB Barrier 명령어들

DSB, ISB, DMB Barrier 명령어들

Core Architecture Barrier 우리가 직관적으로 생각하기에는 ARM Core에서 메모리 시스템이 메모리 트랜잭션을 생성한 인스트럭션의 순서와 같은 순서로 트랜잭션이 실행될 것이라고 생각하기 쉬우나 이는 틀린 생각입니다. 메모리 트랜잭션의 순서는 하드웨어의 특성에 적응하기 위해 변경될 수 있습니다. 예를 들어, 기저 물리 메모리에 접근하기 위해 필요한 대기 상태나 마이크로코드 수준에서 구현된 추측 분기 예측 메커니즘 같은 것을 말합니다. Cortex-M 마이크로컨트롤러가 주변장치 및 시스템 구역에 걸쳐 엄격한 트랜잭션 순서를 보장하기는 하지만, 경우에 따라서는 실행 순서를 고려해 코드를 구현해야 합니다. 다음 인스트럭션을 실행하기 전에, 이전 메모리 트랜잭션이 수행됐음을 확인하기 위해 적절..

  • format_list_bulleted ▶ ARM Core
  • · 2023. 11. 17.
  • textsms
RTOS - PendSV handler 와 Context switching

RTOS - PendSV handler 와 Context switching

오늘은 Context Switching을 하기 위한 PendSV Handler 구현을 다뤄보도록 하겠습니다. 대부분의 RTOS들은 PendSV Handler를 내에서 Context Switching을 하게 되는데 이는 Cortex-M core의 권장사항입니다. PendSV Interrupt 핸들러는 아래 명령어로 쉽게 발생하게 됩니다. #define schedule() SCB_ICSR |= (1 sp)); /* restore context */ restore_context(); asm volatile("mov lr, %0" ::"r"(0xFFFFFFF9)); asm volatile("bx lr"); /* USER CODE END PendSV_IRQn 0 */ /* USER CODE BEGIN PendSV..

  • format_list_bulleted RTOS 만들기
  • · 2023. 11. 17.
  • textsms
  • navigate_before
  • 1
  • navigate_next
공지사항
  • [2023.11.15] App State machine 글 게재
  • [2023.11.3] 티스토리 다시 시작합니다
전체 카테고리
  • 분류 전체보기 (171)
    • ▶ STM32 (63)
      • News (8)
      • 회로리뷰 (12)
      • Peripheral (37)
      • 개발환경 (6)
    • ▶ C Application (28)
      • 디자인 패턴 (22)
      • App 만들기 (6)
    • ▶ ARM Core (10)
    • ▶ RTOS (7)
      • RTOS 만들기 (7)
      • FreeRTOS (0)
      • ThreadX (0)
    • ▶ 일상리뷰 (3)
    • ▶ 이전글 (53)
      • C Pattern (25)
      • C Coding (7)
      • Linux (5)
      • Programming (6)
      • Book Reference (10)
최근 글
인기 글
최근 댓글
태그
  • #디자인패턴
  • #rtos
  • #arm
  • #STM32
  • #C언어 패턴
  • #MCU
  • #C언어
  • #STM32H7
  • #디자인 패턴
  • #STM32G4
전체 방문자
오늘
어제
전체
Copyright © STM32 & C언어 디자인 패턴 All rights reserved.
Designed by JJuum

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.