일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 시스템 소프트웨어 개발을 위한 ARM 아키텍처의 구조와 원리
- BSP
- 빌드 시스템
- 실무PT후기
- yocto
- arm
- Arm 아키텍처: 캐시
- ARM 아키텍처: 메모리모델과 배리어
- Kernel
- 코멘토
- ARM 아키텍쳐: 메모리 모델과 배리어
- 코멘토실무PT
- 인프런
- Arm 아키텍처: 메모리 모델과 배리어
- udemy
- Today
- Total
목록전체 글 (29)
반도체 소프트웨어

개요 함수 시작과 끝에 주로 실행하는 어셈블리어 루틴 stp: 레지스터 -> 스택 푸시 명령어 ldp: 레지스터 -> 스택 팝 명령어 ARM프로세서와 대화할 수 있는 언어 ex) ARM 프로세서에게 연산 시키기 어셈블리 명령어 실행한 결과는 레지스터에 저장 어셈블리 명령어 기본 형태 ex) "MOV , #imm" == " = #imm" 어셈블리 명령어 종류 어셈블리어는 유닛 단위, 루틴 단위로 공부하는 게 좋음 어셈블리어를 기계적으로 외우기보다는 해당 명령어가 ARM 프로세서 내부적으로 어떻게 동작하는지 원리를 파악하는 것이 중요 어셈블리 명령어의 실전 프로젝트 활용 사례 부트로더 개발 부트로더: 시스템 전원 인가 후 최초로 실행되는 소프트웨어 스타트업 코드: 부트로더에서 가장 먼저 실행되는 코드 스택 ..

레지스터 세트: 태스크의 실행 흐름(데이터 저장) 컨텍스트: 범용 레지스터 컨텍스트 스위칭: ARM 코어에서 현재 실행 중인 레지스터 세트를 태스크 자료 구조에 저장하고, 다음에 실행할 태스크의 레지스터 세트를 ARM 코어의 레지스터에 로딩(cpu 아키텍처에 의존적인 작업) ARMv7 범용 레지스터 보통 어셈블리 연산 결과가 R0~R12에 저장됨 보통 어셈블리 연산 결과가 R0~R12에 저장됨 SP(R13): 프로세스 스택 주소 저장 LR(R14): 함수 호출 완료 후에 복귀할 주소를 저장(BL 시에 저장) PC(R15): 현재 패치하는 명령어 주소를 저장(현재 실행중인 명령어의 주소 저장) CPSR: 프로세스 상태 저장(익셉션 모드 저장) SPSR: CPSR의 복사본 레지스터 이전 동작 모드의 프로세서..
브링업을 잘하기 위해서 시스템 소프트웨어 개발자 프로젝트 프로세스: 보드 브링업 -> 기능 안정화 -> 유지 보수 부트로더에서 스타트업 코드 실행 메모리, 캐시와 같은 시스템 자원 초기화 키보드, usb 같은 주변 장치 초기화 시스템에 전원이 들어왔을때 가장 먼저 실행되는 주소에 있는 코드: 스타트업 코드(부트로더가 가장 먼저 실행하는 코드) 시스템을 초기화 및 설정하는 루틴으로 구성됨 MMU 같은 하드웨어 유닛과 캐시 설정 동작모드 혹은 익셉션 레벨별로 스택 크기 지정 익셉션 핸들러 구성 스택이 초기화되어있어야하기에 어셈블리어로 스타트업 코드를 작성 디바이스 드라이버 개발을 잘하기 위해서 ARM이 인터럽트 처리를 어떻게 하는지 잘 이해하면 디바이스 드라이버가 통신하는 방법인 인터럽트의 우선순위나 종류를..