# 디바이스드라이버 두가지 형태로 존재 가능
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 |