DEVELOP
[임베디드시스템소프트웨어] 05. General Purpose I/O

임베디드시스템소프트웨어 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시글입니다. GPIO (General Purpose Input/Output ) 특정 PIN에 연결된 비트를 나타낸다. 0또는1의 1bit를 표현할 수 있다. (0은 0V, 1은 3.3V를 뜻한다.) GPIO Pin을 통해서 한 쪽에서는 1bit짜리의 데이터를 보내고, 다른 한 쪽에서는 1bit짜리의 데이터를 읽어온다. GPIO의 사용 센서나 액추에이터를 연결하고 센서나 액추에이터에 특정 정보를 보내거나 읽어들일 때 사용한다. 각 PIN은 1bit를 나타낸다. Pin 하나로만 다양한 센서와 액추에이터를 연결하기는 어렵다. -> 보통 Pin을 다발로 묶어서 여러 개의 핀을 집합적으로 사용한다. (I^2C) GPIO Pin은 inpu..

[임베디드시스템소프트웨어] 04. Blocking I/O

임베디드 시스템 소프트웨어 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시글입니다. Possible Semantics of I/O Interfaces Blocking I/O write() , read() 시스템 콜을 쓸 때 동작하는 방식이다. I/O를 당장 할 수 없을 때는 해당 system call을 호출한 프로세스를 blocking state로 전이하고, CPU 자원을 쓰지 않고 대기한다. I/O 완전히 끝났을 때만 해당 system call을 리턴한다. receive 요청 받지 못하면 blocking한다. send할 때 버퍼 꽉 차는 경우는 데이터 넣을 수 없으므로 blocking한다. Nonblocking I/O blocking하지 않는다. blocking이 필요하면 오류값 리턴 후 진행..

[임베디드시스템소프트웨어] 03. Basic Kernel Functions

임베디드 시스템 소프트웨어 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시글입니다. Exported Kernel Functions 마치 라이브러리처럼 가져다 쓸 수 있는 함수들 Exported Kernel Symbols /proc/kallsyms 에서 확인 가능 EXPORT_SYMBOL() 또는 EXPORT_SYMBOL_GPL() 로 export 가능 insmod해서 커널이 삽입될 때 symbol들이 resolve된다. insmod할 때 linking이 되는 것과 같은 원리이다. 예시 printk() : 로그레벨 주의, 너무 자주 출력되는 것 주의 alloc_chrdev_region() : major num 얻기 cdev_alloc() : cdev 구조체 할당 cdev_init() : cdev ..

[임베디드시스템소프트웨어] 02. Character Device Drivers (캐릭터 디바이스 드라이버)

임베디드 시스템 소프트웨어 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시글입니다. Linux Device Drivers Device Driver Network Device Driver 네트워크 프로토콜 스택과 상호 작용 소켓 인터페이스 ex) 이더넷 드라이버 Block Device Driver 랜덤 엑세스 장치 open, close, read, write 시스템 콜 파일에 불특정한 위치로 포인터를 옮김 ex) 스토리지 드라이버 Character Device Driver sequential access device (순차적 엑세스 장치) : 바이트 스트림으로 엑세스 block device driver와 동일한 인터페이스(open, close, read, write) 랜덤 access 불가 어떤 ..

[임베디드시스템소프트웨어] 01. Loadable Kernel Modules (적재 가능 커널 모듈)

임베디드 시스템 소프트웨어 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시글입니다. Background (배경) Operating Systems vs. Kernel ( OS와 커널의 비교 ) 보통은 OS = 커널이라고 생각하기 쉬움 OS는 리눅스 커널 기반의 소프트에어 집합체로 만들어진다. OS는 Linux Kernel (OS의 핵심) , GCC 등의 GNU 툴과 라이브러리, GUI를 통해 시스템을 관리할 수 있는 윈도우 시스템, 데스크톱 환경 등을 포함한다. 따라서, OS 안에 커널이 포함된다고 할 수 있다. 일반적으로, 디바이스 드라이버는 커널 안에 포함되지 않고, OS 안에 포함된다. 배포 시 대표적인 디바이스 드라이버를 포함한다. 타입의 종류에 따른 커널의 분류 Monolithic Ker..