커널연구회가 용인에 있는 삼성전자 인재개발원에서 2023년 8월 네째주, 3일간,삼성전자 연구원들에게 RISC-V 커널과 디바이스드라이버에 대해서 강의를 진행했습니다.커널연구회와 삼성전자 연구원들간 좋은 유대 관계와 협업이 이루어 졌으면 합니다.감사합니다. 강의 시간표 (1일차: RISC-V 명령구조) 교시 강의주제 강사 강의 내용 1 09:00~09:50 RISC-V 명령구조 RISC-V 소개 커널연구회 정재준 강사, 커널연구회(kernel.bz) 및 riscv.org 활동사항 소개 CPU 성능측정 요소들(Performance, Factors) 2 10:00~10:50 RISC-V 명령구조 CPU 성능비교 커널연구회 정재준 CISC vs RISC (ARM, MIPS) 명령구조(ISA) 성능비교 RISC-V ISA(Instruction Set Architecture) 특징 설명 3 11:00~11:50 RISC-V 명령구조 CISC vs RISC 커널연구회 정재준 RISC-V ISA 이름 형식(Name Format)과 명령 종류별 설명 RISC-V Vector Extension 설명(Arm NEON과 비교) 점심시간 12:00~12:50 4 13:00~13:50 RISC-V 명령구조 RISC-V ISA 설명 커널연구회 정재준 RISC-V 와 ARM64 컴파일러 버전 확인 컴파일러 최적화 과정 및 옵션 이해 5 14:00~14:50 RISC-V 명령구조 컴파일러 최적화-1 커널연구회 정재준 gcc 컴파일러 (Compiler Explorer) 활용 RISC-V vs ARM64 컴파일러 최적화(-O2) 소스 설명 - 1 6 15:00~15:50 RISC-V 명령구조 컴파일러 최적화-2 커널연구회 정재준 RISC-V vs ARM64 컴파일러 최적화(-O2) 소스 설명 - 2 RISC-V vs ARM64 컴파일러 최적화(-O2) 소스 설명 - 3 7 16:00~16:50 RISC-V 명령구조 Fence 명령 커널연구회 정재준 RISC-V 메모리 배리어 명령(Fence Instructions) 이해 RISC-V 메모리 배리어 커널 소스 설명 8 17:00~17:50 RISC-V 명령구조 AMO 설명 커널연구회 정재준 RISC-V AMO(Atomic Memory Operations) 설명 강의 내용 전체 요약 설명 및 질문응답(Q&A) 강의 시간표 (2일차: RISC-V 리눅스 커널) 교시 강의주제 강사 강의 내용 1 09:00~09:50 RISC-V 커널 개발환경 커널연구회 정재준 SiFive SDK(Software Development Kits) 소개 RISC-V 컴파일러(toolchain) 소스 설치 및 사용법 2 10:00~10:50 RISC-V 커널 SDK 설정 커널연구회 정재준 buildroot(ramfs) 설치 및 빌드 스크립트 설명 부트로더(OpenSBI) 소스 설치 및 빌드 스크립트 설명 3 11:00~11:50 RISC-V 커널 소스 빌드 커널연구회 정재준 riscv simulator(QEMU) 설치 및 사용방법 커널 소스 다운로드 및 빌드 방법 설명 점심시간 12:00~12:50 4 13:00~13:50 RISC-V 커널 부트 로더 커널연구회 정재준 부트로더+커널이미지+DTB 제작방법 및 SD카드 설치 설명 RISC-V 리눅스 커널(arch/riscv/*) 소스 구조 5 14:00~14:50 RISC-V 커널 부팅 소스 커널연구회 정재준 RISC-V 부팅 소스 메모리 맵(system.map) RISC-V CPU 부팅, arch/riscv/kernel/head.S 소스 설명 6 15:00~15:50 RISC-V 커널 start_kernel 커널연구회 정재준 커널 부팅, init/start_kernel() 함수 설명 setup_arch(), parse_dtb(), setup_smp() 함수 설명 7 16:00~16:50 RISC-V 커널 인터럽트 설명 커널연구회 정재준 RISC-V 인터럽트(SiFive FU540 PLIC, CLINT) 설명 RISC-V 인터럽트 실행 커널 소스 흐름 설명 8 17:00~17:50 RISC-V 커널 인터럽트 소스 커널연구회 정재준 RISC-V 인터럽트 서비스 루틴 함수 등록/실행 소스 설명 강의 내용 전체 요약 설명 및 질문응답(Q&A) 강의 시간표 (3일차: RISC-V 디바이스드라이버) 교시 강의주제 강사 강의 내용 1 09:00~09:50 RISC-V 디바이스드라이버 SiFive FU540 커널연구회 정재준 SiFive FU540 장치 계층 구조와 블럭 다이어그램 설명 RISC-V 개발 보드 하드웨어 구조 설명 2 10:00~10:50 RISC-V 디바이스드라이버 Device Tree 커널연구회 정재준 SiFive FU540 디바이스 트리 fu540-c000.dtsi 소스 설명 hifive-unleashed-a00.dts 소스 및 빌드 방법 설명 3 11:00~11:50 RISC-V 디바이스드라이버 설계 구조 커널연구회 정재준 디바이스 드라이버 전체 설정 흐름 설명 drivers/base/init.c, driver_init() 장치설정 소스 설명 점심시간 12:00~12:50 4 13:00~13:50 RISC-V 디바이스드라이버 kset/kobject 커널연구회 정재준 장치 설정 구조체, include/linux/kobject.h 설명 장치 설정 구조체 연결 흐름, lib/kobject.c 소스 설명 5 14:00~14:50 RISC-V 디바이스드라이버 bus/class/device 커널연구회 정재준 버스(bus), 클래스(class), 장치(device) 등록 흐름 설명 장치 드라이버 등록 과정 소스 흐름 설명 6 15:00~15:50 RISC-V 디바이스드라이버 GPIO/Interrupt 커널연구회 정재준 FU540 Devices Input/Output Pin Header와 소스구조 FU540 GPIO Device Driver 소스설명 및 동작 테스트 7 16:00~16:50 RISC-V 디바이스드라이버 PWM/LEDs Trigger 커널연구회 정재준 FU540 PWM LEDs 입출력 헤더핀 및 회로도 설명 FU540 PWM Device Driver, Probe, LEDs Trigger 소스 설명 8 17:00~17:50 RISC-V 디바이스드라이버 제품소개/시장전망 커널연구회 정재준 RISC-V 제조사(SiFive) 제품 소개 RISC-V 보드 소개와 발전 방향 및 시장 전망, 질문응답(Q&A)