리눅스 커널 소스 해설 [RISC-V]
저자 정재준
이책은 RISC-V 하드웨어 계층구조와 명령셋을 체계적으로 정리하여 이해하기 쉽게
설명하고 있습니다. RISC-V CPU을 내장하고 있는 FU540 실습보드에서
개발환경 설정과 리눅스 커널 소스를 포팅하는 방법을 단계적으로 기술했습니다.
저자가 리눅스 커널 patchwork에 기여한 경험을 바탕으로 소스들을 체계적으로 설명하므로
독자분들이 RISC-V을 이해하는데 많은 도움이 될 것입니다.
책내용 요약
책정보
전체 목차
목차
Table of Contents
리눅스 커널 소스 해설 [RISC-V] 1
저작권 2
ISBN 3
저자 소개 4
머리말 5
목차 7
RISC-V 실습보드 14
RISC-V 64비트 FU540 14
FU540 보드 셋업하기 15
FU540 SDK 빌드 및 설치 20
다운로드 하기 20
빌드하기 21
설치하기 24
부팅하기 31
RISC-V SDK 소스 설치 33
컴파일러(toolchain) 소스 33
부트로더 소스 36
riscv-pk 36
OpenSBI 39
u-boot 43
커널 소스 44
buildroot(ramfs) 47
riscv simulator 49
qemu 50
RISC-V 명령셋 53
CPU별 명령셋 비교 57
RISC-V 레지스터 정리 62
RISC-V 기본 명령 형식 64
읽기와 저장 명령들 68
정수 연산 명령들 69
제어 분기 명령들 76
곱셈 명령들 81
나눗셈 명령들 85
연산 명령 정리 89
Memory Barrier 91
Atomic Operation 95
SpinLock 101
FU540 하드웨어 106
장치 계층 구조 109
CPU core 110
Clock(PRCI) 119
PRCI 레지스터 정리 122
coreclk 설정 방법 125
DDR과 이더넷 클럭 설정 방법 126
Device Tree 127
Interrupts(CLINT, PLIC) 129
UART 132
PWM 135
I2C 141
SPI 143
GPIO 148
Ethernet 152
DDR Subsystem 154
FU540 부팅 소스 분석 156
head.S 소스 분석 157
setup_vm() 가상주소값 설정 159
relocate 페이지 테이블 재설정 167
sbi_save() DTB 저장, 스캔 169
start_kernel () 171
FU540 아키텍쳐 포팅 174
SOC_SIFIVE 179
FU540 클럭 포팅 181
FU540 timer 포팅 184
FU540 irqchip 포팅 186
FU540 UART 콘솔 포팅 187
tty 드라이버 포팅 189
FU540 PWM 포팅 194
PWM LEDs 디바이스 트리 198
PWM LEDs 테스트 199
PWM driver init 소스 201
PWM probe 소스 202
PWM remove 소스 204
FU540 SPI 포팅 205
SPI driver init 소스 206
SPI probe 소스 208
SPI remove 소스 211
FU540 GPIO 포팅(new) 212
GPIO driver init 소스 214
GPIO probe 소스 215
FU540 MMC/SD/SDIO 포팅 219
FU540 디바이스 트리 229
디바이스 트리 용어 정리 230
FU540 디바이스 트리 소스 232
sifive-fu540-prci.h 233
fu540-c000.dtsi 233
hifive-unleashed-a00.dts 240
계층구조 정리 243
FU540 클럭 소스 상세분석 245
u54-prci.c 소스 분석 245
데이터 구조체 정의 245
드라이버 등록 247
probe 소스 분석 248
데이터 읽기/쓰기 함수 250
fu540-prci.c (new) 소스 분석 252
PRCI driver init 소스 252
PRCI probe 소스 254
FU540 GPIO 소스 정리(new) 256
구조체 정리 256
GPIO 소스 정리 259
gpio_sifive_probe() 259
GPIO 동작 함수 262
GPIO 레지스터 설정 263
GPIO 디바이스 트리 264
GPIO 테스트 265
FU540 커널 포팅 내역 정리 270
V5.1.9 버전업 내용 271
arch/riscv/Kconfig 273
arch/riscv/kernel/setup.c 273
arch/riscv/mm/init.c 275
drivers/clk/Kconfig 276
drivers/clk/Makefile 277
drivers/clk/sifive/Kconfig (new) 277
drivers/clk/sifive/Makefile (new) 278
drivers/clk/sifive/gemgxl-mgmt.c (new) 278
drivers/clk/sifive/u54-prci.c 282
drivers/gpio/Kconfig 290
drivers/gpio/Makefile 290
drivers/gpio/gpio-sifive.c (new) 291
drivers/irqchip/Kconfig 299
drivers/irqchip/Makefile 300
drivers/irqchip/irq-riscv-intc.c (new) 300
drivers/irqchip/irq-riscv-plic.c (new) 306
drivers/leds/leds-pwm.c 316
drivers/mtd/spi-nor/spi-nor.c 317
drivers/nvmem/Kconfig 319
drivers/nvmem/Makefile 320
drivers/nvmem/sifive-u500-otp.c (new) 320
drivers/pwm/Kconfig 329
drivers/pwm/Makefile 329
drivers/pwm/pwm-sifive.c (new) 330
부팅 로그 337
V5.4.8 버전업 내용 342
빌드 로그 343
부팅 로그 345
arch/riscv/* 소스 버전업 내역 351
v4.15 → v5.0 351
v5.0 → v5.1 354
v5.1 → v5.2 355
v5.2 → v5.3 359
v5.3 → v5.4 361
v5.4 → v5.5 363
참고 문서 366
리눅스 커널 소스 해설 [RISC-V]