24.01.02 최초 작성HW 초기화 수행OS와 설정 파일들 플래시 메모리로부터 메모리에 로딩Secure Boot프로세서에 내장된 ROM에 코드 존재first stage bootloader를 SOC내부의 SRAM에 로드SRAM에 로드된 코드를 바탕으로 DDR memor
24.01.05 최초 작성커널이 가지는 디바이스 드라이버, 파일시스템, 네트워크 프로토콜 등을 설정함커널 용량의 문제로 선택적으로 디바이스 드라이버를 포함make menuconfig를 통해 설정 가능buildroot/output/build/linux-custom에서 빌
24.01.03 최초 작성Memory mapped I/O : 메모리에 디바이스마다 주소 영역을 할당 해 해당 주소에 접근해 디바이스를 조작함Interrupt : 외부로부터 HW의 변화를 감지해 SW에 알리고 SW는 실행하는 작업을 중단하고 정해진 루틴을 수행함Bus c
24.01.04 최초 작성bcm2711 기준Pin Direction Register : input/output 설정Pull up/Dn Control Register : GPIO를 Pull up/down 상태로 설정output상태로 설정 시Pin Set & Clear R
24.01.04 최초 작성Interrupt발생 시 Interrupt Vector Table로 분기할 때 참조되는 번호각 디바이스마다 고유한 IRQ가짐BCM2711 기준IRQ routing기능을 지원해 프로세서에 어떤 디바이스에서 인터럽트가 발생했는지(IRQ) 알림dev
24.01.03 최초 작성빌드 시 드라이버를 포함해 커널 내에 존재하는 드라이버linux-custom/drivers/staging/(파일이름)/Kconfig파일에서 등록할 드라이버 등록make linux-menuconfig를 통해 설정 가능 Kconfig파일을 읽어 드
24.01.07 최초 작성 1. jiffies 관련 API 1.1 커널 타이머 1.2 커널 타이머 API
24.01.08 최초 작성파일에 문자열 read/write를 통해 HW를 다룰 수 있는 파일 시스템sysfs의 파일은 디바이스 드라이버의 정보를 가지고 있으며 class, bus, device 정보를 유저 공간에 전달mount -t sysfs nodev /sys로 마운
24.01.08 최초 작성동기식 통신 방법으로 마스터와 슬레이브 모드로 동작속도 제한이 없어 빠름CS를 통해 subnode 구분타켓 디바이스에 맞는 모드로 설정해야 함CS에 전원이 인가되지 않을 때 동작/driver/spi에 위치하며 보드마다 다른 코드 사용spi_co
24.01.10 최초 작성SMP 시스템에서 각 cpu마다 담당하는 변수를 두어 공유 데이터를 최소화하는 방법queue_work_on() : cpu를 지정해 worker thread를 실행smp_processor_id() : 현재 스레드가 실행 중인 cpu id를 반환공
24.01.10 최초 작성 예제 threaded IRQ |등록 |해제 |read |인터럽트 핸들러 |bottom half | |:-:|:-:|:-:|:-:|:-:| |kmoduleinit() |kmoduleexit() |kdriverread() |ktophalfgpio
24.01.10디지털 신호를 통해 아날로그 신호와 유사한 신호를 생성하는 방법일정한 주기의 디지털 신호의 출력이 HIGH인 시간과 LOW인 시간의 비율 조정(Period + Duty Cycle)나타내는 방법Period : HIGH(LOW)에서 다음 HIGH(LOW)가
24.01.10 최초 작성wiring version각 장치 종류 마다 Host-Device간 사용하는 프로토콜을 달리함USB 장치에 여러개의 Interface가 존재하고 Interface 내에 하나 혹은 여러개의 Endpoint가 존재Endpoint0는 양방향 통신이
24.01.12 최초 작성consumer() : 파일을 열어 내용을 읽어 출력producer() : 파일을 열어 내용을 쓰는 함수main() : consumer()스레드 3개, producer()스레드 1개 생성kdt_driver_read() : buffer에 writ