ESL 연구실 활동/LAB

[09] 임베디드 직무강좌

천숭이 2022. 5. 22. 20:43

# 디바이스드라이버 두가지 형태로 존재 가능

1. 메모리에 상주

2. 장치 연결 시, 메모리로 호출하는 방법

 

 

- arch : cpu의존 프로그램

- kernel : 하드웨어 독립적인 커널 관리 루틴

- fs : filesystem

- mm : memory manage

- scripts : 커널 빌드 관련

- drivers : 디바이스 드라이버 관련 폴더

 

 

 

* 디바이스 드라이버 설계 전 타겟 하드웨어에 대한 데이터시트와 하드웨어 설계도가 필요하다

  -> 제조사 제공 혹은 구글링으로 찾으면 쉽게 나옴

샘플예제, 관련 프로젝트가 있으면 꿀

 

* 타겟보드의 프로세스에 대한 데이터시트 이해도가 중요하다

 


 

## 디바이스 드라이버에 대해 분석하기

 

모너리딕 커널 : 상주, 메모리 차지

<->

마이크로 커널 : 필요할때만 사용, 메모리 절약

 

윈도우, 리눅스는 모너리딕 커널이고, 모듈 개념으로 새로운 드라이버들을 추가하거나 삭제할 수 있음

 

- 리눅스는 자주 사용하는 것은 커널안에 포함시키고, 그렇지 않으면 필요할때마다 불러서 상요하는 구조

 

# 디바이스 드라이버 공간

- 커널 - 하드웨어 사용자 로 나뉘어짐

 

#

커널과 디바이스 드라이버의 관계

 

 

# 디바이스 드라이버 접근성

- 리눅스에서는 커널메모리와 uesr메모리를 구분

- user모드로 디바이스 드라이버에 접근하기 위해서는 os에게 허락을 받고 커널영역으로 접근해야 한다

- 커널과 애플리케이션 사이에 통신할 수 있는 약속 수단 규정됨

 

# DAT

프로세서가 메모리에 접근하려고 하면, 가상주소를 물리적 주소로 변환

 

 

# 애플리케이션 -> 하드웨어

- 저수준 파일은 인터페이스 역할로 쉽게 접근할 수 있게 한다

- 응용프로그램이 하드웨어를 제어하기 위해선느 디바이스 드라이버로 이동해야하고, 그 과정에서 장치 파일(저수준파일)을 거치며 쉽게 접근이 가능하도록 한다

 

 

- 입출력은 블록 or 문자로 이루어짐

 

 

 

# 디바이스 드라이버의 계층

- 버스를 이용해 계층구조로 설계하면 관리가 쉬움

 

 

 


* cpu와 메모리 관련 개발자는 다른 직무 (새로운 cpu, 아키텍처를 위한 리눅스 포팅작업) != 디바이스 드라이버 개발

* 디바이스 드라이버 관련 개발자는 커널의 네트워크, 블록디바이스, 캐릭터 디바이스 개발이 중점


 

# 실습

 

- 라즈베리파이 git의 linux레퍼지토리 클론

git clone --depth=1 http://github.com/raspberrypi/linux.git

 

- linux 폴더 내부 리스트 출력

cd linux
ls

 

'ESL 연구실 활동 > LAB' 카테고리의 다른 글

논문리스트 정리 -> 주제선정  (0) 2022.05.29
[08] 임베디드 직무강좌  (0) 2022.05.22
[07] 임베디드 직무강좌  (0) 2022.05.20
0518 연구원분들 회의  (0) 2022.05.18
0513 한 일  (0) 2022.05.13
_  (0) 2022.05.08