임베디드 시스템 Term Project

수진·2021년 11월 4일
0

임베디드시스템

목록 보기
1/1

1. 디바이스 드라이버

디바이스 드라이버는 소프트웨어 모듈이다.
물리적(하드웨어)나 가장 디바이스를 추상화하고 운영체제가 시스템의 주변부에 접근할 수 있도록 단일화 된 인터페이스를 제공한다.

프레임버퍼는 비디오 출력 디바이스이다.
완전한 데이터의 프레임을 보유하고 있는 메모리 버퍼에서 비디오 디스플레이를 드라이브한다.
버퍼의 정보는 일반적으로 화면의 모든 픽셀(표시할 수 있는 지점)에 대한 색상 값으로 구성됩니다.
색상 값은 일반적으로 1비트 단색, 4비트 팔레트, 8비트 팔레트, 16비트 하이컬러 및 24비트 트루컬러 형식으로 저장됩니다. [http://en.wikipedia.org/wiki/ 프레임버퍼]
아래에서는 단색 프레임 버퍼와 싱글을 시뮬레이션합니다.
별표 ' * ' 문자로 표시되는 픽셀입니다.
버퍼에 적합한 크기(예: 256자 X 256자)를 가정합니다.
표시 창(16 X16)을 예로 들어 별표나 다른 문자를 사용하여 이니셜을 그려 보십시오.
당신의 프로젝트에서 이 프레임 버퍼는 더욱 향상될 것입니다.

What to do?

프로젝트를 두 단계로 구현합니다.

1단계 : 간단한 사용자 레벨 프레임 버퍼를 셸 명령어로 설계 및 구현하여 프레임 버퍼의 기능을 이해한다. (20%)

2단계: tty 드라이버와 유사한 장치 드라이버로 xinu 운영 체제를 향상시키는 프레임 버퍼 장치 드라이버를 설계 및 구현합니다. (80%)

2. Study Embedded XINU files

프로젝트 할당과 함께 제공된 XINU 버전에 대한 임베디드 XINU 문서. 이 설명서는 관련 코드 파일을 탐색할 수 있도록 내부적으로 잘 연결되어 있습니다. 디렉토리 구조를 검사하고 다양한 디렉토리의 목적을 이해합니다. 특히 디렉토리에서 다음 파일을 연구합니다.

• include(헤더 파일): shell.h, device.h, interrupt.h, tty.h, uart.h
• shell(셸 명령 파일): shell.c, xsh_led.c, xsh_help.c
• system(시스템 작동들): devtable.c, getc.c, putc.c, read.c, write.c, initial.c, kprintf.c, open.c, close.c, startup, startup.s
• tty 및 uart 디렉토리에 있는 모든 파일.

3. Write a framebuffer driver (Phase 2)

프레임 버퍼는 시스템별 라이브러리나 윈도우 디스플레이 시스템의 무거운 오버헤드에 의존하지 않고 콘솔에 그래픽을 표시하기 위한 그래픽 하드웨어 독립적인 추상화 계층이다.
프레임 버퍼 드라이버는 uart 디바이스 드라이버 위에 가상 디바이스로 구현됩니다.
tty 드라이버는 실제로 uart 드라이버 위에 구현되는 가상 드라이버입니다.
접근 방식에 대한 아이디어를 얻기 위해 tty 드라이버를 연구합니다.
프레임 버퍼 장치 드라이버의 권장 단계는 다음과 같습니다.

  1. devtable.c 및 devtable.h를 업데이트하여 프레임 버퍼 드라이버를 포함합니다.
  2. framebuf.h를 만듭니다. 프레임버퍼의 동작을 특정하는 헤더: init, control, open, close, write(또는 putChar), 기타 필요한 기능.
  3. framebuf 디렉토리를 만들어 모든 기능을 구현한다.
  4. compile 디렉터리의 Makefile을 업데이트하여 컴파일할 명령어와 xinu boot에 framebuf 드라이버를 연결합니다.
  5. 필요한 경우 initialize.c와 같은 다른 파일을 업데이트합니다.
  6. xinu Boot를 장착하고 프레임 버퍼 드라이버의 작동을 테스트합니다.

이 드라이버를 사용할 셸 명령을 사용하여 테스트합니다.
즉, 셸 명령에 프레임 버퍼를 통해 화면에 "write"하도록 요청합니다.

제출할 것:
1단계 파일을 FBPhase1.zip으로 압축합니다.
2단게 파일을 FBPhase2.zip으로 압축합니다.


Terminal ESC Sequence Examples

A. putchar(‘\033’); putchar(‘[’); putchar(‘0m’); // Reset All Attributes

B. putchar(‘\033’); putchar(‘[’); putchar(‘2’); putchar(‘J’); // Erase Screen

C. putchar(‘\033’); putchar(‘[’); putchar(‘;’) putchar(H); // Cursor Home

profile
끄적끄적

0개의 댓글