검색

검색결과 상세 정보

  • HOME
  • 검색결과 상세 정보

도전! 임베디드 OS 만들기= Learning embedded OS

이만우

책이미지
도전! 임베디드 OS 만들기= Learning embedded OS
서평쓰기
서평쓰기
책이미지

QRcode

QR Code
QRcode 사용방법
QRcode 사용방법
QR코드 정의
사각형의 가로세로 격자무늬에 다양한 정보를 담고 있는 2차원(매트릭스)형식의 코드로 스마트폰으로 QR코드를 스캔하면 각종 정보를 제공 받을 수 있습니다.
QR코드 인식프로그램
스마트폰 마켓에 들어가면 'QR코드 스캔 프로그램'을 검색해 무료 어플을 다운받아 사용하시면 됩니다.
도서정보 QR코드 이용하기
도서 상세정보에서 QR코드를 스캔하면, 모바일 웹페이지로 연결되어 해당 도서의 상세정보 및 소장정보 등을 확인 할 수있습니다.
닫기
상세정보
자료유형단행본
서명/저자사항도전! 임베디드 OS 만들기= Learning embedded OS/ 이만우 지음
개인저자이만우
발행사항서울: 인사이트, 2009
형태사항xviii, 342p.: 삽도; 24cm
총서사항Programming insight
ISBN9788991268579
일반주기 코딩하며 배우는 운영체제 원리
서지주기찾아보기: p. 338-341
서지적 각주 수록
분류기호005.43
언어한국어

소장정보

서비스 이용안내
  • 보존서고도서 신청보존서고도서 신청
  • 인쇄인쇄
메세지가 없습니다
No. 등록번호 청구기호 소장처 도서상태 반납예정일 예약 서비스 CD-NET
1 EM80276 005.43 이31ㄷ 2층 제1자료열람실/2층 일반도서서가 대출가능
인쇄 이미지
2 EM80277 005.43 이31ㄷ c.2 2층 제1자료열람실/2층 일반도서서가 대출가능
인쇄 이미지

초록

목차 일부

임베디드 운영체제에 도전하라!

삼성전자 반도체 총괄 소속 이만우의 『도전! 임베디드 OS 만들기 - 코딩하며 배우는 운영체제 원리』. 임베디드 ARM 프로세서 기반에서 운영체제를 개발하는 방법을 안내하고 있다. 전세계 임베디드 프로세서 시장을 독점하다시피한 ARM에 대한 전체적인 이해도 얻게 된다. 

이 책은 자신의 손으로 직접 임베디드 운영체제...

목차 전체

임베디드 운영체제에 도전하라!

삼성전자 반도체 총괄 소속 이만우의 『도전! 임베디드 OS 만들기 - 코딩하며 배우는 운영체제 원리』. 임베디드 ARM 프로세서 기반에서 운영체제를 개발하는 방법을 안내하고 있다. 전세계 임베디드 프로세서 시장을 독점하다시피한 ARM에 대한 전체적인 이해도 얻게 된다. 

이 책은 자신의 손으로 직접 임베디드 운영체제를 만들고자 하는 개발자를 위해 저술된 것이다. 임베디드 운영체제 이론과 그것을 구현하는 기술을 습득하게 된다. 특히 직접 코딩하면서 배워나갈 수 있도록 꾸몄다. 코드를 꼭 따라하지 않고 읽기만 해도 이해할 수 있도록 구성되어 있어 바쁜 일상 속에서도 유용하다. 아울러 임베디드 개발 환경에 대한 경험을 얻을 수 있어 임베디드 개발 입문서의 역할도 한다.

목차

목차 일부

추천의 글
지은이의 글

1장 임베디드 운영체제
1.1 운영체제
    1.1.1 프로세스 관리
    1.1.2 저장장치 관리
    1.1.3 네트워킹
    1.1.3 사용자 관리
    1.1.5 디바이스 드라이버
1.2 임베디드 운영체제
1.3 나빌눅스
1.4 실습 : 임베디드 개발 환경 구성
    1.4.1 목표 플랫폼 정하기
    1.4.2 리눅스에서 ...

목차 전체

추천의 글
지은이의 글

1장 임베디드 운영체제
1.1 운영체제
    1.1.1 프로세스 관리
    1.1.2 저장장치 관리
    1.1.3 네트워킹
    1.1.3 사용자 관리
    1.1.5 디바이스 드라이버
1.2 임베디드 운영체제
1.3 나빌눅스
1.4 실습 : 임베디드 개발 환경 구성
    1.4.1 목표 플랫폼 정하기
    1.4.2 리눅스에서 크로스 컴파일 환경 설정
    1.4.3 윈도에서 임베디드 개발 환경 구성
1.5 정리

2장 부팅하기
2.1 개발보드 선정하기
    2.1.1 EX-X5 보드
2.2 이지보드에 나빌눅스 이미지를 올리는 방법
2.3 에뮬레이터 환경 구성
    2.3.1 qemu
    2.3.2 u-boot 설치
2.4 실습 : 이지보드에서 hello world를 출력하자
    2.4.1 이지부트의 소스코드 재활용
    2.4.2 커널 이미지 부팅하기
    2.4.3 링커 스크립트 수정
2.5 실습 : 에뮬레이터에서 hello world를 출력하자
    2.5.1 UART 주소 수정
    2.5.2 에뮬레이터에서 부팅하기
    2.5.3 uImage 만들기
    2.5.4 램 디스크 이미지 만들기
    2.5.5 플래시 이미지 만들어 부팅하기
2.6 실습 : 윈도 환경에서 에뮬레이터 실행시키기
    2.6.1 시그윈에서 플래시 이미지 만들기
    2.6.2 윈도용 에뮬레이터 실행
2.7 정리

3장 LED 켜기
3.1 부트로더 코드 재활용
3.2 실습 : 1초마다 LED를 켜 보자
    3.2.1 이지부트에서 LED 관련 코드 분석
    3.2.2 나빌눅스에 LED 점멸 코드 추가
3.3 정리

4장 exception vector table 구성하기
4.1 ARM의 exception과 프로세서 동작 모드
4.2 ARM의 exception vector table
4.3 실습 : 이지부트를 수정하여 exception 핸들링 하기
4.4 실습 : u-boot를 수정하여 exception 핸들링 하기
4.5 정리

5장 Software Interrupt Handler 구현하기
5.1 스택을 이용한 ISR과 태스크 간의 컨텍스트 스위칭
    5.1.1 ISR
    5.1.2 태스크-ISR 간 컨텍스트 스위칭
5.2 ARM 프로세서의 레지스터
    5.2.1 스택 포인터
    5.2.2 링크 레지스터
    5.2.3 spsr
5.3 실습 : Software Interrupt Hanlding
    5.3.1 실제 프로그램은 레지스터들을 어떻게 사용하는가
    5.3.2 태스크-ISR 간 컨텍스트 스위칭 코드 구현
    5.3.3 main 함수의 수정
    5.3.4 시스템 콜 번호의 추출
5.4 정리

6장 IRQ 핸들러 구현 : OS 타이머 사용하기
6.1 PXA255의 인터럽트 컨트롤러 계층
    6.1.1 OS 타이머
    6.1.2 인터럽트 컨트롤러 계층
    6.1.3 ICMR
    6.1.4 ICLR
    6.1.5 ICCR
    6.1.6 ICFP, ICIP
    6.1.7 ICPR
    6.1.8 인터럽트의 종류
6.2 msleep() 함수 분석
6.3 PXA255의 OS 타이머 레지스터 계층
    6.3.1 OSMR
    6.3.2 OSCR
    6.3.3 OIER
    6.3.4 OSSR
6.4 실습 : IRQ 핸들러 구현 - OS 타이머
    6.4.1 OS 타이머 초기화 함수 작성
    6.4.2 OS 타이머 시작 함수 작성
    6.4.3 커널 main 함수 수정
    6.4.4 IRQ 핸들러 함수 수정
    6.4.5 전체 작업 코드
    6.4.6 태스크-ISR 간 컨텍스트 스위칭 코드 작성
    6.4.7 ARM9 아키텍처의 파이프라인
    6.4.8 exception 핸들러에서 복귀 주소의 결정
    6.4.9 OS 타이머가 발생되는 순서
    6.4.10 빌드와 테스트
6.5 정리

7장 메모리 맵 구성
7.1 나빌눅스의 메모리 맵
7.2 실습 : 나빌눅스 커널의 스택 주소 초기화
7.3 실습 : 스택 초기화 주소 확인하기
7.4 정리

8장 메모리 관리자 구현하기
8.1 임베디드 운영체제에서의 사용자 태스크
    8.1.1 태스크
    8.1.2 메모리 관리자
8.2 실습 : 메모리 관리자 정의
    8.2.1 자유 메모리 블록 정의
    8.2.2 메모리 관리자 함수 정의
8.3 실습 : 메모리 관리자 함수 구현
    8.3.1 메모리 관리자 커널 전역 변수 선언
    8.3.2 메모리 분할 크기 설정
    8.3.3 mem_init() 함수 설명
    8.3.4 mem_alloc() 함수 설명
    8.3.5 navilnux.h 파일 수정
    8.3.6 Makefile 수정
8.4 정리

9장 태스크 관리자 구현하기
9.1 태스크 컨트롤 블록
    9.1.1 태스크 컨텍스트 정보
9.2 사용자 태스크
    9.2.1 사용자 태스크의 등록과 로딩
9.3 실습 : 태스크 관리자 정의
    9.3.1 태스크 컨트롤 블록 정의
    9.3.2 사용자 태스크의 컨텍스트 자료형 크기
    9.3.3 태스크 관리자 구조체 정의
9.4 실습 : 태스크 관리자 함수 구현
    9.4.1 태스크 관리자 커널 전역 변수 선언
    9.4.2 cpsr의 초기 값 설정
    9.4.3 task_init() 함수
    9.4.4 task_create() 함수
9.5 실습 : 사용자 태스크의 추가
    9.5.1 사용자 태스크 함수의 추가
    9.5.2 navilnux.h 파일 수정
    9.5.3 navilnux.c 파일 수정 - navilnux_init() 함수 추가
    9.5.4 main() 함수 수정
    9.5.5 Makefile 수정
9.6 정리

10장 컨텍스트 스위칭 구현하기
10.1 컨텍스트 스위칭과 스케줄러
    10.1.1 멀티태스킹
    10.1.2 컨텍스트 스위칭
    10.1.3 스케줄러
10.2 실습 : 컨텍스트 스위칭 구현
    10.2.1 IRQ 핸들러 수정
    10.2.2 태스크 컨텍스트 백업
    10.2.3 IRQ 핸들러 함수에 진입
    10.2.4 태스크 컨텍스트 복구
10.3 스케줄러 구현
    10.3.1 다른 운영체제의 스케줄링 정책
    10.3.2 가장 기본적인 스케줄러
    10.3.3 라운드로빈 스케줄러 구현
    10.3.4 스케줄러 초기화 코드 작성
    10.3.5 커널 main() 함수 수정
    10.3.6 OS 타이머 핸들러 수정
    10.3.7 navilnux.c 전체 내용 다시 보기
    10.3.8 사용자 태스크 수정
    10.3.9 빌드와 테스트
10.4 실습 : 사용자 스택 할당 검증
10.5 정리

11장 외부 인터럽트
11.1 PXA255의 GPIO 레지스터 계층
    11.1.1 대표적인 외부 인터럽트 : 입력 장치
    11.1.2 GPIO
    11.1.3 PXA255 칩의 GPIO 인터럽트 처리
    11.1.4 Edge Detect
    11.1.5 PXA255 칩에서 GPIO를 설정하는 레지스터들
    11.1.6 GPDR
    11.1.7 GFER과 GRER
    11.1.8 GEDR
    11.1.9 GAFR
    11.1.10 버튼 회로 연결
11.2 GPIO 인터럽트 처리
    11.2.1 GPIO 초기화 코드 작성
    11.2.2 초기화 함수 추가
    11.2.3 인터럽트 처리 코드 추가
    11.2.4 수정된 전체 코드
    11.2.5 테스트
11.3 정리

12장 시스템 콜 구현하기
12.1 리눅스의 시스템 콜
    12.1.1 fork() 시스템 콜
12.2 실습 : 시스템 콜 계층 추가
    12.2.1 시스템 콜 커널 함수 작성
    12.2.2 시스템 콜 초기화 함수 호출
    12.2.3 시스템 콜 관련 헤더 파일 작성
    12.2.4 사용자 태스크 함수 수정
    12.2.5 시스템 콜 래퍼 함수 작성
    12.2.6 Software Interrupt의 ISR 수정
    12.2.7 Makefile 수정
12.3 실습 : 시스템 콜 추가 절차
12.4 정리

13장 태스크 간 통신 구현하기
13.1 IPC(Inter-Process Communication)
    13.1.1 파이프
    13.1.2 FIFO
    13.1.3 메시지 큐
    13.1.4 공유 메모리
    13.1.5 임베디드 운영체제의 ITC
13.2 컨텍스트 스위칭 시스템 콜 만들기
    13.2.1 블로킹 상태
    13.2.2 사용자 태스크에서 호출 가능한 컨텍스트 스위칭 시스템 콜 구현
    13.2.3 스케줄러 시스템 콜 추가
    13.2.4 entry.S 파일 수정
    13.2.5 사용자 태스크에서 스케줄러 호출 테스트
13.3 실습 : 메시지 관리자 정의
    13.3.1 navilnux_msg.h 파일 작성
    13.3.2 자유 메시지 블록
    13.3.3 메시지 관리자
    13.3.4 메시지 관리자 제어 함수들
13.4 실습 : 메시지 관리자 함수 구현
    13.4.1 msg_itc_send(), msg_itc_get() 함수 구현
    13.4.2 navilnux.h 수정
    13.4.3 navilnux_init() 함수 수정
13.5 실습 : 시스템 콜 계층에 ITC 함수 등록
    13.5.1 시스템 콜 번호 추가
    13.5.2 시스템 콜 함수 프로토타입 선언
    13.5.3 시스템 콜 함수 본체 작성
    13.5.4 시스템 콜 래퍼 함수 프로토타입 선언
    13.5.5 시스템 콜 어셈블리어 래퍼 함수 작성
    13.5.6 시스템 콜 C 래퍼 함수 프로토타입 선언
    13.5.7 시스템 콜 C 래퍼 함수 본체 작성
    13.5.8 ITC 테스트
13.6 정리

14 동기화 구현하기
14.1 세마포어
    14.1.1 세마포어 구현하기
    14.1.2 메시지 관리자 코드 수정
    14.1.3 세마포어 함수 구현
    14.1.4 새로운 시스템 콜 번호를 세마포어에 할당
    14.1.5 시스템 콜 함수의 프로토타입 선언
    14.1.6 시스템 콜 함수 작성
    14.1.7 시스템 콜 래퍼 함수의 프로토타입 선언
    14.1.8 시스템 콜 어셈블리어 래퍼 함수 작성
    14.1.9 시스템 콜 C 언어 래퍼 함수 작성
    14.1.10 사용자 태스크에서 세마포어 사용 테스트
14.2 뮤텍스
    14.2.1 바이너리 세마포어와 뮤텍스의 차이
    14.2.2 실습 : 뮤텍스 구현하기
    14.2.3 메시지 관리자 수정
    14.2.4 뮤텍스 함수 구현
    14.2.5 뮤텍스에 시스템 콜 번호 할당
    14.2.6 시스템 콜 함수 작성
    14.2.7 시스템 콜 래퍼 함수 작성
    14.2.8 사용자 태스크에서 뮤텍스 테스트
14.3 실습 : 시간 지연 함수 구현하기
    14.3.1 커널 카운터 추가
    14.3.2 sleep() 함수 구현
    14.3.3 태스크 컨트롤 블록 수정
    14.3.4 sleep() 함수 작성
    14.3.5 수정된 sleep() 함수를 이용한 뮤텍스 테스트
14.4 정리

15 메모리 동적 할당 구현하기
15.1 메모리 동적 할당 설계
    15.1.1 동적 할당에 사용할 메모리 영역
    15.1.2 구현의 범위
    15.1.3 메모리 풀
15.2 실습 : 메모리 동적 할당 구현
    15.2.1 메모리 관리자 수정
    15.2.2 동적 할당 전략
    15.2.3 free() 함수 구현
    15.2.4 malloc() 함수 구현
    15.2.5 시스템 콜에 등록
    15.2.6 메모리 동적 할당 테스트
15.3 정리

16 디바이스 드라이버 구현하기
16.1 디바이스 드라이버
    16.1.1 리눅스 캐릭터 디바이스 드라이버 계층을 차용
16.2 실습 : 디바이스 드라이버 관리자 정의
    16.2.1 fops 구조체
    16.2.2 자유 디바이스 드라이버 블록
16.3 실습 : 디바이스 드라이버 관리자 구현
    16.3.1 drv_init() 함수
    16.3.2 drv_register_drv() 함수
    16.3.3 시스템 콜에 등록
16.4 실습 : 디바이스 드라이버 추가하기
    16.4.1 LED와 스위치를 디바이스 드라이버로 제어
    16.4.2 IRQ 핸들러 벡터를 커널에 추가
    16.4.3 read(), write() 함수 구현
    16.4.4 IRQ 핸들러 함수
    16.4.5 mydrv_open() 함수
    16.4.6 mydrv_close() 함수
    16.4.7 mydrv_read() 함수
    16.4.8 mydrv_write() 함수
    16.4.9 사용자 디바이스 드라이버를 커널에 등록
    16.4.10 사용자 디바이스 드라이버를 테스트
16.5 정리

17 마치며
17.1 프로젝트 종료
17.2 나빌눅스의 파일 구성
    17.2.1 entry.S, navilnux.c, navilnux.h
    17.2.2 navilnux_memory.c, navilnux_memory.h
    17.2.3 navilnux_task.c, navilnux_task.h
    17.2.4 navilnux_user.c, navilnux_user.h
    17.2.5 navilnux_sys.c, navilnux_sys.h, syscalltbl.h, navilnux_lib.S, navilnux_clib.c, navilnux_lib.h
    17.2.6 navilnux_msg.c, navilnux_msg.h
    17.2.7 navilnux_drv.c, navilnux_drv.h, mydrv.c
17.3 나빌눅스의 계층
17.4 맺음말
    17.4.1 운영체제의 개념, 이론 그리고 구현
    17.4.2 임베디드 개발 환경에 대한 경험
    17.4.3 ARM 아키텍처에 대한 대략적 이해
    17.4.4 마치며

찾아보기
약어표

청구기호 Browsing

서평 (0 건)

*주제와 무관한 내용의 서평은 삭제될 수 있습니다.
  서평 제목에는 특수기호 사용을 제한합니다.

서평추가

서평추가
별점
별0점
  • 별5점
  • 메세지가 없습니다
  • 별4점
  • 메세지가 없습니다
  • 별3점
  • 메세지가 없습니다
  • 별2점
  • 메세지가 없습니다
  • 별1점
  • 메세지가 없습니다
  • 별0점
제목입력
본문입력

태그

태그추가


15328 경기도 안산시 상록구 안산대학로 155 (일동) Tel. 031)400-7071~4 Fax. 031)400-7075