문c 블로그 with ARM64 Linux Kernel 5.x http://jake.dothome.co.kr
-
char
- new_gpio_api.c gpio 캐릭터 디바이스로 gpio 핀 제어 테스트 샘플 (파일을 직접 열고 ioctl로 제어)
- new_gpio_api2.c gpio 캐릭터 디바이스로 gpio 핀 제어 테스트 샘플 (gpiod api 사용)
-
clk 디렉토리
- clk-foo-divider.c
- compatible = "foo,divider-clock" 클럭 소스로 커널 컴파일 시 포함(inbuild) 되어야 함.
- clk-foo-mux.c
- compatible = "foo,mux-clock" 클럭 소스로 커널 컴파일 시 포함(inbuild) 되어야 함.
- clk.c
- 위 클럭 드라이버를 사용한 사용자 샘플
- clk-foo-divider.c
-
device-1 디렉토리
- foo.c
- foo_bus와 foo_class 등록
- foo_pdev.c
- foo 버스 컨트롤러 플랫폼 디바이스 등록
- foo_pdrv.c
- foo 버스 컨트롤러 플랫폼 드라이버 등록
- foo_client1.c
- foo 클라이언트 디바이스 및 드라이버 등록
- foo_client2.c
- foo_client1.c와 동일하지만 foo_device_register() 및 foo_driver_register() 사용
- foo.c
-
device-2 디렉토리
- foo.c
- foo 디바이스 등록과 with 디바이스 속성
- foo2.c
- foo2 디바이스 등록 with 디바이스 속성(플랫폼 디바이스로 등록)
- foo3.c
- foo3 플랫폼 디바이스 등록
- 디바이스 속성 추가
- 플랫폼 리소스 등록(iomem, irq)
- drv3.c
- drv3 플랫폼 드라이버 등록(foo3 디바이스와 pair)
- 드라이버 속성 추가
- 플랫폼 리소스를 얻어와서 사용하는 방법
- drv4.c
- drv4 플랫폼 드라이버 등록(virt.dts의 foo4 노드에서 등록시킨 플랫폼 디바이스와 pair)
- 드라이버 속성 추가
- 디바이스 트리와 연동하여 플랫폼 리소스를 얻어와서 사용하는 방법
- 디바이스 트리 노드에서 custom 속성 알아오는 방법
- virt.dts
- qemu용 default virt 디바이스 트리에 foo4 노드를 추가 (drv4.c와 연동)
- foo.c
-
foo-pinctrl 디렉토리
- foo-pinctrl.c
- pinctrl 플랫폼 드라이버 등록(virt.dts의 foo-pinctrl 플랫폼 디바이스와 pair)
- pinctrl 플랫폼 드라이버에 8개의 pin, 4개의 function 및 다수의 그룹 등록
- 디바이스 트리를 사용하여 pinmux/pinconf 매핑 사용
- pictrl 드라이버가 로딩되면서 디폴트 pinmux/pinconf 매핑 동작
- foo-pinctrl2.c
- foo-pinctrl.c를 구현만 약간 변형한 버전 (동일한 기능)
- virt.dts
- qemu용 default virt 디바이스 트리에 foo-pinctrl 노드를 추가 (foo-pinctrl.c와 연동)
- foo-pinctrl.c
-
foo-gpio 디렉토리
- gpio.c
- gpio 컨트롤러에 legacy 인터럽트 연동 샘플
- gpio2.c
- gpio 컨트롤러에 legacy 인터럽트 연동 샘플-2
- 디바이스트리에서 다수의 gpio controller 드라이버 지정 가능
- 가상 gpio 레지스터 시뮬레이션
- virt.dts
- gpio2용 gpio0 & gpio1 노드 추가
- gpio.c
-
foo-gpio-pci 디렉토리
- gpio.c
- pci 플랫폼 드라이버에 gpio 컨트롤러를 연동하고 legacy 인터럽트 연동 샘플
- gpio.c
-
sysfs 디렉토리
- foo1.c
- sysfs 속성 및 이벤트 발생 테스트 (kobject_add 사용)
- foo2.c
- sysfs 속성 및 이벤트 발생 테스트 (kobject_create_and_add & sysfs_create_group 사용)
- foo3.c
- sysfs 속성 및 이벤트 발생 테스트 (foo 플랫폼 디바이스로 등록)
- test.c
- foo1.c 및 foo2.c의 이벤트 수신 application
- test3.c
- foo3.c 이벤트 수신 application
- foo1.c
-
hrtimer 디렉토리
- foo.c
- pinned hrtimer를 테스트하기 위해 각각의 cpu에서 1초 주기로 hrtimer를 동작
- foo.c
-
foo-i2c 디렉토리
- foo-i2c.c
- i2c host controller 에뮬레이션 샘플
- foo-i2c.c
-
foo-i2c-1 디렉토리
- foo-lcd.c
- i2c client 에뮬레이션 샘플
- 0x3f 주소를 갖는 1602-LCD-I2C(16x2)의 백라이트를 제어
- foo-lcd.c
-
foo-pci-1 디렉토리
- foo-pci-1.c
- pci 디바이스 덤프
- foo-pci-1.c
-
foo-pci-2 디렉토리
- foo-pci-2.c
- ivshmem pci 디바이스를 사용한 가상 gpio 컨트롤러 구현
- chained irq & nested irq test for legacy IRQx
- MSI-x enable
- foo-pci-2.c
-
tcp-1 디렉토리
- tcp server example (select 사용, queue 및 예외 처리 로직 등을 추가하여 실전 서버 소켓과 유사하게 구현)
- telnet과 연동 테스트용
- 실전 서버에는 이 샘플 코드 외에 구조체 전송, magic number 및 seq_id 비교 로직등이 추가 구현됨.
-
foo-proc 디렉토리
- proc 구현 샘플(시퀀스 사용)
-
foo-proc2 디렉토리
- proc 구현 샘플
-
kernel_threadd 디렉토리
- FIFO 또는 RR rt 커널 스레드 샘플
-
hello_module 디렉토리
- hello 모듈 샘플
-
test/provider 디렉토리
- barrier test for user application
-
file-1 디렉토리
- 커널에서 유저용 파일 기록(비권장)
-
netlink 디렉토리
- mcast 디렉토리
- ucast
-
dma_coherent 디렉토리
- dma 전용 메모리 사용 샘플(device tree 참고)
-
irq_inject 디렉토리
- 인터럽트 injection 샘플