1. 정보
책 이름: 임베디드 OS 개발 프로젝트
저자: 이만우
출판사: 인사이트
목차
1장 임베디드 운영체제
1.1 운영체제
1.2 임베디드 운영체제와 펌웨어
1.3 RTOS
1.4 나빌로스
1.5 에뮬레이터 개발 환경
1.6 깃허브 리포지토리에서 아카이브 다운받기
1.7 요약
2장 개발 환경 구성하기
2.1 컴파일러 설치하기
2.2 QEMU 설치하기
2.3 요약
3장 일단 시작하기
3.1 리셋 벡터
3.2 실행 파일 만들기
3.3 QEMU에서 실행해 보기
3.4 빌드 자동화하기
3.5 하드웨어 정보 읽어오기
3.6 요약
4장 부팅하기
4.1 메모리 설계
4.2 익셉션 벡터 테이블 만들기
4.3 익셉션 핸들러 만들기
4.4 메인으로 진입하기
4.5 요약
5장 UART
5.1 UART 출력하기
5.2 안녕 세상!
5.3 UART로 입력 받기
5.4 printf 만들기
5.5 요약
6장 인터럽트
6.1 인터럽트 컨트롤러
6.2 UART 입력과 인터럽트 연결
6.3 IRQ 익셉션 벡터 연결
6.4 요약
7장 타이머
7.1 타이머 하드웨어 초기화
7.2 타이머 카운터 오버플로
7.3 delay() 함수
7.4 요약
8장 태스크
8.1 태스크 컨트롤 블록
8.2 태스크 컨트롤 블록 초기화
8.3 태스크 생성
8.4 요약
9장 스케줄러
9.1 간단한 스케줄러
9.2 우선순위 스케줄러
9.3 요약
10장 컨텍스트 스위칭
10.1 컨텍스트 백업하기
10.2 컨텍스트 복구하기
10.3 yield 만들기
10.4 커널 시작하기
10.5 요약
11장 이벤트
11.1 이벤트 플래그
11.2 인터럽트와 이벤트
11.3 사용자 정의 이벤트
11.4 여러 이벤트 플래그를 동시에 보내고 처리하기
11.5 요약
12장 메시징
12.1 메시지 큐
12.2 태스크 간 데이터 전달
12.3 요약
13장 동기화
13.1 세마포어
13.2 뮤텍스
13.3 스핀락
13.4 요약
14장 맺음말
14.1 프로젝트 종료
14.2 펌웨어
14.3 RTOS
14.4 마치며
부록 A 추가 자료
A.1 ARM 아키텍처 기초 지식
A.2 ABI
A.3 실행 파일 형식
A.4 ARM 인포센터에서 RealViewPB의 데이터시트 찾기
2. 학습 내용
책을 읽으며 내용은 블로그에 코드는 github에 정리해두었다.
github url https://github.com/jaysc5/RTOS_Study
GitHub - jaysc5/RTOS_Study
Contribute to jaysc5/RTOS_Study development by creating an account on GitHub.
github.com
study url https://j-s00.tistory.com/category/개발/임베디드 os 개발 프로젝트
'개발/임베디드 os 개발 프로젝트' 카테고리의 글 목록
빙그르르를르르ㅡㄹ➰〰🌊
j-s00.tistory.com
RealViewPB의 데이터 시트
PL011의 데이터 시트
3. 리뷰
ARM 환경에서 동작하는 Embedded RTOS를 직접 구현하면서 Embedded가 무엇인지 알아볼 수 있는 책이였다. 임베디드 개발자를 꿈꾸고 있는 대학생이라면 꼭 읽어보면서 따라해보면 좋은 책이다!
https://github.com/navilera/Navilos
저자가 작성해준 코드가 github 전부 올라와 있어 commits을 살펴보면서 단계적으로 실행해보기 좋도록 셋팅되어 있다.
또한, 저자분께서 직접 답변해준 오류에 대한 피드백도 나와있어 따라가다 어려운 부분을 마주하면 충분히 해결할 수 있었다.
이 책을 읽으면서
1. 빌드 환경을 만들고 부트로더를 만듦
2. 주변장치를 제어해서 화면에 글자를 출력하고 키보드 입력을 인터럽트로 처리함
3. 타이머 하드웨어를 사용해서 시간도 다룰 수 있음
4. 태스크와 스케줄러, 컨텍스트 스위칭을 만들어서 RTOS 다운 기능을 만듦
5. 메시지와 동기화 기능으로 멀티코어 환경에 필수적인 기능도 만듦
=> 실무에 사용할 수 있는 RTOS 수준!!!
첫 장에 작성된 기술들
- 개발 환경 설정
- 컴파일러에 대한 이해
- 링커에 대한 이해
- 부트로더에 대한 이해
- 레지스터 사용에 대한 이해
- 인터럽트 처리
- 메모리 관리
- 주변장치 제어
- 멀티코어 동기화
- 멀티코어 간 메시지 처리