U-BOOT
u-boot 主配置
u-boot/configs/rk182x_defconfig
平台和运行地址
# 使用 RISC-V 架构
CONFIG_RISCV=y
# U-Boot proper 的 DDR 运行地址
CONFIG_TEXT_BASE=0x540400000
# U-Boot proper 的动态内存堆大小:10MiB
CONFIG_SYS_MALLOC_LEN=0xa00000
# U-Boot 早期阶段的动态内存堆大小:1MiB
CONFIG_SYS_MALLOC_F_LEN=0x100000
# 使用自定义的早期栈地址
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
# U-Boot early stack 的 DDR 地址
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x540600000
# 目标 SoC 为 Rockchip RK182X
CONFIG_TARGET_ROCKCHIP_RK182X=y
# 使用 RISC-V 64 位 ISA
CONFIG_ARCH_RV64I=y
# 使用 RISC-V medany 代码模型
CONFIG_CMODEL_MEDANY=y
# U-Boot 运行于 RISC-V Supervisor Mode
CONFIG_RISCV_SMODE=y
# SPL 不启用多核启动
# CONFIG_SPL_SMP is not set
# 不自动在 U-Boot 版本字符串中附加 Git 后缀
# CONFIG_LOCALVERSION_AUTO is not set
# 不启用专家模式,保留常规 Kconfig 依赖限制
# CONFIG_EXPERT is not set
SPL:把Loader拆成独立的早期阶段
# 启用 SPL,形成 Loader/SPL 与 U-Boot proper 两阶段启动
CONFIG_SPL=y
# SPL 使用的栈地址
CONFIG_SPL_STACK=0x540600000
# SPL 的 DDR 运行地址
CONFIG_SPL_TEXT_BASE=0x540000000
# SPL BSS 段起始地址
CONFIG_SPL_BSS_START_ADDR=0x540100000
# SPL 可使用最小磁盘/块设备支持
CONFIG_SPL_LIBDISK_SUPPORT=y
# 未指定 SPL 后续加载的独立 payload
CONFIG_SPL_PAYLOAD=""
# 未指定额外构建目标
CONFIG_BUILD_TARGET=""
# SPL 最大体积限制为 1MiB
CONFIG_SPL_MAX_SIZE=0x100000
# SPL 使用精简 malloc 实现
CONFIG_SPL_SYS_MALLOC_SIMPLE=y
# SPL 不与 U-Boot proper 共用初始栈
# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
# SPL 启用自己的动态内存分配支持
CONFIG_SPL_SYS_MALLOC=y
# SPL 从 eMMC 原始区域加载后续镜像
CONFIG_SPL_SYS_MMCSD_RAW_MODE=y
# 原始 MMC 模式下使用指定区域加载 U-Boot
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
# 指定原始 MMC 加载区域编号
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=0x9
# SPL 启用 CPU 初始化支持
CONFIG_SPL_CPU=y
# SPL 启用 OpenSBI 交接支持
CONFIG_SPL_OPENSBI=y
# OpenSBI scratch 参数采用默认值
CONFIG_SPL_OPENSBI_SCRATCH_OPTIONS=0x0
# SPL 启用时钟驱动
CONFIG_SPL_CLK=y
# SPL 启用 pinctrl,保证早期 UART 与 eMMC 引脚可用
CONFIG_SPL_PINCTRL=y
# SPL 使用精简 memset 实现以减小镜像
CONFIG_SPL_TINY_MEMSET=y
U-Boot 自动启动Linux 和 FIT
# bootm/FIT 可处理的最大镜像空间:64MiB
CONFIG_SYS_BOOTM_LEN=0x04000000
# 通用镜像加载缓冲区地址
CONFIG_SYS_LOAD_ADDR=0x543000000
# 启用 FIT 镜像格式
CONFIG_FIT=y
# SPL 支持加载 FIT 镜像
CONFIG_SPL_LOAD_FIT=y
# SPL 加载 FIT 镜像时使用的 DDR 地址
CONFIG_SPL_LOAD_FIT_ADDRESS=0x540f00000
# 不支持旧式 legacy uImage 格式
# CONFIG_LEGACY_IMAGE_FORMAT is not set
# 上电后不等待倒计时
CONFIG_BOOTDELAY=0
# 不自动修改 FDT 中的 memory 节点
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
# 启用默认启动命令
CONFIG_USE_BOOTCOMMAND=y
# 自动从指定 DDR 地址按 FIT 格式启动
CONFIG_BOOTCOMMAND="boot_fit 0x542000000"
# 命令行输入缓冲区大小
CONFIG_SYS_CBSIZE=256
# 命令提示符缓冲区大小
CONFIG_SYS_PBSIZE=284
# 启用板级后期初始化回调
CONFIG_BOARD_LATE_INIT=y
# 启用 bootz 备用启动命令
CONFIG_CMD_BOOTZ=y
# 不支持启动 NetBSD
# CONFIG_BOOTM_NETBSD is not set
# 不支持启动 Plan 9
# CONFIG_BOOTM_PLAN9 is not set
# 不支持启动 RTEMS
# CONFIG_BOOTM_RTEMS is not set
# 不支持启动 VxWorks
# CONFIG_BOOTM_VXWORKS is not set
U-Boot命令集与交互限制
# 不提供 CPU 信息查询命令
# CONFIG_CMD_CPU is not set
# 不支持执行环境变量中的命令脚本
# CONFIG_CMD_RUN is not set
# 不提供 iminfo 镜像信息查询命令
# CONFIG_CMD_IMI is not set
# 不提供 imxtract 镜像子项提取命令
# CONFIG_CMD_XIMG is not set
# 不支持导出环境变量
# CONFIG_CMD_EXPORTENV is not set
# 不支持导入环境变量
# CONFIG_CMD_IMPORTENV is not set
# 不支持交互式编辑环境变量
# CONFIG_CMD_EDITENV is not set
# 不提供 crc32 校验命令
# CONFIG_CMD_CRC32 is not set
# 提供 meminfo 内存信息命令
CONFIG_CMD_MEMINFO=y
# 不提供 LZMA 解压命令
# CONFIG_CMD_LZMADEC is not set
# 不提供 LZ4 解压命令
# CONFIG_CMD_UNLZ4 is not set
# 不提供 gzip 解压命令
# CONFIG_CMD_UNZIP is not set
# 提供 GPT 分区表命令
CONFIG_CMD_GPT=y
# 不支持 Kermit 协议的 loadb 串口下载
# CONFIG_CMD_LOADB is not set
# 不支持 S-record 格式的 loads 串口下载
# CONFIG_CMD_LOADS is not set
# 提供 lsblk 块设备查看命令
CONFIG_CMD_LSBLK=y
# 提供 mmc 命令
CONFIG_CMD_MMC=y
# 提供 part 分区表命令
CONFIG_CMD_PART=y
# 提供原始存储读取命令
CONFIG_CMD_READ=y
# 不提供 echo 命令
# CONFIG_CMD_ECHO is not set
# 不提供整数比较命令 itest
# CONFIG_CMD_ITEST is not set
# 不支持 source 加载并执行脚本
# CONFIG_CMD_SOURCE is not set
# 不提供 setexpr 表达式计算命令
# CONFIG_CMD_SETEXPR is not set
# 不启用块缓存命令
# CONFIG_CMD_BLOCK_CACHE is not set
# 不提供 date 命令
# CONFIG_CMD_DATE is not set
# 不提供 sleep 命令
# CONFIG_CMD_SLEEP is not set
# 提供 sysboot 标准启动配置命令
CONFIG_CMD_SYSBOOT=y
eMMC、分区和文件系统访问
# 启用 MMC 子系统
CONFIG_MMC=y
# 不允许在 U-Boot 命令行直接写 MMC
# CONFIG_MMC_WRITE is not set
# 不支持 eMMC 硬件分区配置
# CONFIG_MMC_HW_PARTITIONING is not set
# 不输出 MMC 详细调试日志
# CONFIG_MMC_VERBOSE is not set
# 启用 DesignWare MMC 驱动框架
CONFIG_MMC_DW=y
# 启用 Rockchip DesignWare MMC 控制器驱动
CONFIG_MMC_DW_ROCKCHIP=y
# 启用 RK182X 所需的 Piton MMC 支持
CONFIG_MMC_PITON=y
# 支持读取 ext4 文件系统
CONFIG_CMD_EXT4=y
# 支持读取 FAT 文件系统
CONFIG_CMD_FAT=y
# 启用通用文件系统命令框架
CONFIG_CMD_FS_GENERIC=y
# 支持读取 SquashFS 文件系统
CONFIG_FS_SQUASHFS=y
# 不支持传统 DOS/MBR 分区表
# CONFIG_DOS_PARTITION is not set
# SPL 不使用 PARTUUID 方式查找分区
# CONFIG_SPL_PARTITION_UUIDS is not set
说明U-boot 能:
- 驱动 RK182X eMMC;
- 识别 GPT 分区表;
- 查看块设备和分区;
- 读取 ext4、FAT、SquashFS;
- 从存储介质加载启动镜像。
U-boot 自身硬件描述
# U-Boot 使用的默认 DTS 名称
CONFIG_DEFAULT_DEVICE_TREE="rk182x-evb"
# 支持 Device Tree Overlay
CONFIG_OF_LIBFDT_OVERLAY=y
# 启用运行时可修改的 Live Device Tree
CONFIG_OF_LIVE=y
# 从 SPL DTB 删除非早期启动必需属性以减小 SPL 体积
CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clocks clock-names interrupt-parent interrupts"
对应 U-Boot DTS:
u-boot/arch/riscv/dts/rk182x-evb.dts
u-boot/arch/riscv/dts/rk182x.dtsi
u-boot/arch/riscv/dts/rk182x-pinctrl.dtsi
u-boot/arch/riscv/dts/rk182x-pinconf.dtsi
用途是让 U-Boot 自己能初始化 UART、eMMC、时钟、pinctrl 等启动必需硬件。 它和 Linux DTS 是两套不同用途的文件:
Driver Model 与基础硬件框架
# 不启用网络子系统
CONFIG_NO_NET=y
# 启用寄存器映射抽象
CONFIG_REGMAP=y
# 启用 syscon 支持,用于 GRF 等系统控制寄存器
CONFIG_SYSCON=y
# 启用通用 CPU 驱动模型支持
CONFIG_CPU=y
# 启用 pinctrl 框架
CONFIG_PINCTRL=y
# 启用通用 RAM 驱动模型
CONFIG_RAM=y
# 不使用 SiFive 专用 RAM 驱动
# CONFIG_RAM_SIFIVE is not set
# 启用 RTC Driver Model 支持
CONFIG_DM_RTC=y
串口与早期日志
# 早期调试 UART 寄存器基址
CONFIG_DEBUG_UART_BASE=0x1031880000
# 早期调试 UART 时钟为 24MHz
CONFIG_DEBUG_UART_CLOCK=24000000
# 仅启用最小早期调试 UART
CONFIG_DEBUG_UART_ONLY=y
# 早期调试 UART 使用 NS16550 兼容控制器
CONFIG_DEBUG_UART_NS16550=y
# UART 寄存器步进为 4 字节
CONFIG_DEBUG_UART_SHIFT=2
# U-Boot proper 使用 NS16550 串口驱动
CONFIG_SYS_NS16550=y
# NS16550 使用 32 位 MMIO 访问
CONFIG_SYS_NS16550_MEM32=y
- SPL 和 U-Boot 能在很早阶段输出串口日志;
- 使用 UART0,寄存器基址
0x1031880000; - 时钟为 24 MHz;
- 使用 NS16550 兼容串口驱动和 32-bit MMIO 访问。
环境变量与其他精简项
# 向 U-Boot 环境导出构建配置相关变量
CONFIG_ENV_VARS_UBOOT_CONFIG=y
# 不启用 EFI Loader
# CONFIG_EFI_LOADER is not set
# 不自动生成随机 UUID
# CONFIG_RANDOM_UUID is not set
# 启用 getopt 参数解析库
CONFIG_GETOPT=y
功能列表
| 类别 | 保留功能 | 裁剪功能 |
|---|---|---|
| 平台 | RK182X、RISC-V 64 位、SPL 两阶段启动 | SPL 多核启动 |
| 启动 | FIT boot.img、自动启动 Linux Kernel 和 DTB | 旧式 uImage、EFI/UEFI、非 Linux 系统启动 |
| 存储 | eMMC 读取、GPT、ext4/FAT/SquashFS 读取 | eMMC 写入、eMMC 硬件分区配置、DOS/MBR 分区表 |
| 调试 | UART 早期日志、U-Boot 串口控制台、mmc/part/lsblk/meminfo | 串口下载、环境脚本、镜像提取、CRC 与多数交互命令 |
| 网络与升级 | 固定 eMMC 启动路径 | 网络启动、USB、DFU 升级 |
| 硬件框架 | 时钟、pinctrl、CPU、RAM、RTC、寄存器控制 | SiFive 专用 RAM 驱动 |
板级配置
u-boot/board/rockchip/evb_rk182x/evb_rk182x.c
- eMMC iomux和Cache初始化
int spl_board_init_f(void)
{
/* Enable dcache/icache */
caches_init();
/* Set eMMC iomux */
writel(0xffff1111, (void *)0x1030400018);
writel(0xffff1111, (void *)0x103040001c);
writel(0xffff1111, (void *)0x1030400020);
writel(0x00ff0011, (void *)0x1030400024);
return 0;
}
- 启动设备选择
void board_boot_order(u32 *spl_boot_list)
{
u8 i;
u32 boot_devices[] = {
BOOT_DEVICE_MMC1,
};
for (i = 0; i < ARRAY_SIZE(boot_devices); i++)
spl_boot_list[i] = boot_devices[i];
}
- 仅有eMMC启动一种
DTS
U-Boot DTS:
rk182x-evb.dts
└── rk182x.dtsi
├── rk182x-pinctrl.dtsi
└── rk182x-pinconf.dtsi
- 两个DTS 的区别
| 对比项 | U-Boot DTS | Kernel DTS |
|---|---|---|
| 作用阶段 | SPL / U-Boot 启动阶段 | Linux Kernel 运行阶段 |
| 目标 | 让 U-Boot 能初始化并读取启动介质 | 让 Linux 驱动全部板级硬件 |
| 板级文件 | u-boot/arch/riscv/dts/rk182x-evb.dts | kernel-6.12/arch/riscv/boot/dts/rockchip/rk182x-evb1-v10.dts |
| SoC 文件 | u-boot/arch/riscv/dts/rk182x.dtsi | kernel-6.12/arch/riscv/boot/dts/rockchip/rk182x.dtsi |
| 编译产物 | u-boot/u-boot.dtb | kernel-6.12/.../rk182x-evb1-v10.dtb |
| 最终用途 | 供 U-Boot Driver Model 使用 | 由 Linux Kernel 使用 |
| 硬件范围 | UART、eMMC、时钟、pinctrl、DDR 等启动必要项 | UART、eMMC、USB、PCIe、GMAC、RGA、电源、PHY 等完整硬件 |
| 修改原则 | 只为 Bootloader 启动需要修改 | Linux 外设驱动、板级功能主要修改这里 |
CLK 时钟
u-boot/drivers/clk/rockchip/clk_rk182x.c 它属于 U-Boot BSP 的时钟控制部分,负责为启动阶段使用的外设提供、查询和设置时钟。
pinctrl驱动
u-boot/drivers/pinctrl/rockchip/pinctrl-rk182x.c 它负责把引脚配置真正写入 RK182X 的 IOC/GRF 寄存器。
bootfit
/home/user/SDK/rk182x_linux/u-boot/cmd/bootfit.c
Loader
u-boot/uboot.its
定义如何生成 uboot.img
Loader
→ 读取 uboot.img
→ 加载 OpenSBI 到 0x540200000 并执行
→ OpenSBI 加载 U-Boot 到 0x540400000
→ U-Boot 使用自身 DTB 初始化硬件
→ U-Boot 启动 boot.img 中的 Linux
Kernel
内核配置
kernel-6.12/arch/riscv/configs/rk182x_defconfig
| 分类 | 配置 | 功能 / 裁剪 |
|---|---|---|
| 编译与基础 | CONFIG_WERROR=y | 警告按错误处理 |
# CONFIG_LOCALVERSION_AUTO is not set | 不自动附加 Git 版本后缀 | |
CONFIG_KERNEL_UNCOMPRESSED=y | 生成未压缩 Image | |
CONFIG_DEFAULT_HOSTNAME="localhost" | 默认主机名 | |
CONFIG_SYSVIPC=y | System V IPC | |
CONFIG_NO_HZ_IDLE=y | CPU 空闲时停止 Tick | |
CONFIG_HIGH_RES_TIMERS=y | 高精度定时器 | |
CONFIG_PREEMPT_RT=y | 实时抢占 | |
CONFIG_LOG_BUF_SHIFT=14 | 16 KiB printk 缓冲 | |
CONFIG_BLK_DEV_INITRD=y | initrd/initramfs | |
# CONFIG_RD_BZIP2 is not set | 裁掉 bzip2 initrd | |
# CONFIG_RD_LZMA is not set | 裁掉 lzma initrd | |
# CONFIG_RD_XZ is not set | 裁掉 xz initrd | |
# CONFIG_RD_LZO is not set | 裁掉 lzo initrd | |
# CONFIG_RD_LZ4 is not set | 裁掉 lz4 initrd | |
# CONFIG_RD_ZSTD is not set | 裁掉 zstd initrd | |
CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 编译优先减小体积 | |
CONFIG_LD_DEAD_CODE_DATA_ELIMINATION=y | 链接删除无用代码/数据 | |
CONFIG_EXPERT=y | 开放专家级裁剪选项 | |
# CONFIG_BUG is not set | 裁掉 BUG() 检查 | |
# CONFIG_ELF_CORE is not set | 裁掉 ELF core dump | |
CONFIG_BASE_SMALL=y | 小型内核内部结构 | |
# CONFIG_IO_URING is not set | 裁掉 io_uring | |
CONFIG_KCMP=y | 支持 kcmp 系统调用 | |
CONFIG_PERF_EVENTS=y | perf 性能统计 | |
CONFIG_MAX_PHYSMEM_BITS=40 | 最大物理地址位宽 40 bit | |
| RISC-V 平台 | CONFIG_ARCH_ROCKCHIP=y | Rockchip RISC-V 平台 |
CONFIG_NONPORTABLE=y | 允许针对当前 CPU 优化 | |
# CONFIG_RISCV_ISA_V is not set | 裁掉 RISC-V Vector 扩展 | |
# CONFIG_RISCV_ISA_ZAWRS is not set | 裁掉 Zawrs 扩展 | |
CONFIG_RISCV_EFFICIENT_UNALIGNED_ACCESS=y | 优化非对齐访问 | |
# CONFIG_RISCV_ISA_VENDOR_EXT_ANDES is not set | 裁掉 Andes 私有扩展 | |
# CONFIG_COMPAT is not set | 不支持 32 位用户态兼容 | |
# CONFIG_EFI is not set | 不支持 EFI | |
| CPU 与内存 | CONFIG_CPU_IDLE=y | CPU Idle |
CONFIG_CPU_FREQ=y | CPUFreq | |
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 默认 ondemand 策略 | |
CONFIG_CPU_FREQ_GOV_USERSPACE=y | userspace 调频策略 | |
CONFIG_CPUFREQ_DT=y | 从 DTS 获取 CPUFreq 信息 | |
CONFIG_ARM_ROCKCHIP_CPUFREQ=y | Rockchip CPUFreq 支持 | |
CONFIG_JUMP_LABEL=y | 静态跳转优化 | |
# CONFIG_STACKPROTECTOR_STRONG is not set | 不启用强栈保护 | |
# CONFIG_STRICT_KERNEL_RWX is not set | 不强制内核代码/数据页权限 | |
CONFIG_PARTITION_ADVANCED=y | 高级分区表支持 | |
CONFIG_CMDLINE_PARTITION=y | 命令行分区支持 | |
# CONFIG_SWAP is not set | 不支持 Swap | |
CONFIG_SPARSEMEM_MANUAL=y | 手动稀疏内存模型 | |
CONFIG_KSM=y | 相同内存页合并 | |
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 | 最低 mmap 地址 | |
CONFIG_CMA=y | 连续内存分配器 | |
CONFIG_CMA_INACTIVE=y | CMA 非活跃页回收 | |
# CONFIG_VM_EVENT_COUNTERS is not set | 裁掉 VM 统计计数 | |
CONFIG_LRU_GEN=y | Multi-Gen LRU | |
CONFIG_LRU_GEN_ENABLED=y | 默认启用 Multi-Gen LRU | |
| 网络 | CONFIG_NET=y | 网络协议栈 |
CONFIG_PACKET=y | 原始报文套接字 | |
CONFIG_UNIX=y | Unix 域套接字 | |
CONFIG_INET=y | IPv4 | |
# CONFIG_INET_DIAG is not set | 裁掉网络诊断接口 | |
# CONFIG_IPV6 is not set | 裁掉 IPv6 | |
# CONFIG_BQL is not set | 裁掉 BQL 队列控制 | |
| PCIe | CONFIG_PCI=y | PCI 框架 |
# CONFIG_PCIEASPM is not set | 不启用 PCIe ASPM | |
# CONFIG_PCI_QUIRKS is not set | 裁掉通用 PCI quirks | |
# CONFIG_VGA_ARB is not set | 裁掉 VGA 仲裁 | |
CONFIG_PCIE_DW_ROCKCHIP=y | Rockchip PCIe 控制器 | |
CONFIG_PCIE_DW_ROCKCHIP_EP=y | PCIe Endpoint 模式 | |
| 设备与 Flash | CONFIG_DEVTMPFS=y | 自动创建设备节点 |
CONFIG_DEVTMPFS_MOUNT=y | 自动挂载 /dev | |
# CONFIG_FW_LOADER is not set | 裁掉通用 firmware loader | |
# CONFIG_ALLOW_DEV_COREDUMP is not set | 裁掉设备 core dump | |
CONFIG_MTD=y | MTD 框架 | |
CONFIG_MTD_CMDLINE_PARTS=y | 命令行 MTD 分区 | |
# CONFIG_MTD_OF_PARTS is not set | 不从 DTS 解析 MTD 分区 | |
CONFIG_MTD_BLOCK=y | MTD 块设备接口 | |
CONFIG_MTD_SPI_NOR=y | SPI Nor | |
CONFIG_MTD_SPI_NOR_MISC=y | SPI Nor 附加功能 | |
# CONFIG_MTD_SPI_NOR_DEVICE_AUTOSELECT is not set | 不自动选择 SPI Nor 型号 | |
CONFIG_PCIE_FUNC_RKEP=y | Rockchip PCIe EP 功能 | |
| 存储 | CONFIG_SCSI=y | SCSI 框架 |
# CONFIG_SCSI_PROC_FS is not set | 裁掉 /proc/scsi | |
CONFIG_BLK_DEV_SD=y | SCSI/USB 磁盘 | |
# CONFIG_BLK_DEV_BSG is not set | 裁掉 BSG | |
# CONFIG_SCSI_LOWLEVEL is not set | 裁掉低层 SCSI Host 驱动 | |
| 以太网 | CONFIG_NETDEVICES=y | 网络设备框架 |
# CONFIG_NET_CORE is not set | 裁掉额外网络核心选项 | |
CONFIG_STMMAC_ETH=y | Synopsys GMAC | |
# CONFIG_DWMAC_GENERIC is not set | 不选通用 DWMAC glue | |
CONFIG_PPP=y | PPP | |
# CONFIG_USB_NET_DRIVERS is not set | 裁掉 USB 网卡 | |
# CONFIG_WLAN is not set | 裁掉 WLAN | |
| 输入 | CONFIG_INPUT_EVDEV=y | /dev/input/event* |
CONFIG_KEYBOARD_ADC=y | ADC 按键 | |
# CONFIG_KEYBOARD_ATKBD is not set | 裁掉 AT 键盘 | |
CONFIG_KEYBOARD_GPIO=y | GPIO 按键 | |
# CONFIG_INPUT_MOUSE is not set | 裁掉鼠标输入 | |
# CONFIG_SERIO is not set | 裁掉串行输入总线 | |
# CONFIG_VT is not set | 裁掉虚拟终端 | |
# CONFIG_LEGACY_PTYS is not set | 裁掉旧 PTY | |
| 串口 | CONFIG_SERIAL_8250=y | 8250 串口框架 |
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set | 裁掉旧串口选项 | |
# CONFIG_SERIAL_8250_16550A_VARIANTS is not set | 裁掉 16550A 变种 | |
CONFIG_SERIAL_8250_CONSOLE=y | 8250 控制台 | |
# CONFIG_SERIAL_8250_PCI is not set | 裁掉 PCI 串口 | |
CONFIG_SERIAL_8250_NR_UARTS=3 | 最大 3 个 UART | |
CONFIG_SERIAL_8250_RUNTIME_UARTS=3 | 运行时 3 个 UART | |
CONFIG_SERIAL_8250_DW=y | DesignWare UART | |
# CONFIG_SERIAL_8250_PERICOM is not set | 裁掉 Pericom 串口 | |
| I2C、SPI、GPIO | CONFIG_I2C=y | I2C 框架 |
CONFIG_I2C_CHARDEV=y | /dev/i2c-* | |
CONFIG_I2C_RK3X=y | Rockchip I2C | |
CONFIG_SPI=y | SPI 框架 | |
CONFIG_SPI_ROCKCHIP=y | Rockchip SPI | |
CONFIG_SPI_ROCKCHIP_SFC=y | Rockchip SFC | |
CONFIG_PINCTRL=y | Pinmux/pinctrl | |
CONFIG_GPIO_SYSFS=y | 旧 GPIO sysfs 接口 | |
| 电源与温控 | CONFIG_POWER_RESET=y | 重启框架 |
CONFIG_SYSCON_REBOOT_MODE=y | syscon 重启模式 | |
CONFIG_POWER_SUPPLY=y | 电源供应框架 | |
# CONFIG_HWMON is not set | 裁掉 hwmon | |
CONFIG_THERMAL=y | 温控框架 | |
CONFIG_THERMAL_GOV_USER_SPACE=y | 用户态温控策略 | |
CONFIG_CPU_THERMAL=y | CPU 热管理 | |
CONFIG_DEVFREQ_THERMAL=y | Devfreq 热管理 | |
CONFIG_ROCKCHIP_THERMAL=y | Rockchip 温度传感器 | |
CONFIG_WATCHDOG=y | 看门狗框架 | |
CONFIG_DW_WATCHDOG=y | DesignWare 看门狗 | |
CONFIG_REGULATOR=y | regulator 框架 | |
CONFIG_REGULATOR_FIXED_VOLTAGE=y | 固定电压 regulator | |
CONFIG_REGULATOR_GPIO=y | GPIO regulator | |
CONFIG_REGULATOR_PWM=y | PWM regulator | |
| RGA 与音频 | CONFIG_ROCKCHIP_MULTI_RGA=y | Rockchip RGA |
CONFIG_SOUND=y | 声音子系统 | |
CONFIG_SND=y | ALSA | |
# CONFIG_SND_PCM_TIMER is not set | 裁掉 PCM timer | |
# CONFIG_SND_SUPPORT_OLD_API is not set | 裁掉旧 ALSA API | |
# CONFIG_SND_DRIVERS is not set | 裁掉传统声卡驱动 | |
# CONFIG_SND_PCI is not set | 裁掉 PCI 声卡 | |
# CONFIG_SND_SPI is not set | 裁掉 SPI 声卡 | |
# CONFIG_SND_USB is not set | 裁掉 USB 声卡 | |
CONFIG_SND_SOC=y | ASoC | |
CONFIG_SND_SOC_ROCKCHIP=y | Rockchip ASoC | |
CONFIG_SND_SOC_ROCKCHIP_SAI=y | Rockchip SAI | |
CONFIG_SND_SIMPLE_CARD=y | simple-audio-card | |
# CONFIG_HID is not set | 裁掉 HID | |
# CONFIG_USB_HID is not set | 裁掉 USB HID | |
| USB | CONFIG_USB=y | USB 框架 |
# CONFIG_USB_PCI is not set | 裁掉 PCI USB Host | |
CONFIG_USB_OTG=y | USB OTG | |
CONFIG_USB_XHCI_HCD=y | xHCI Host | |
CONFIG_USB_STORAGE=y | USB Mass Storage Host | |
CONFIG_USB_DWC3=y | DWC3 控制器 | |
CONFIG_USB_GADGET=y | USB Device | |
CONFIG_USB_CONFIGFS=y | configfs Gadget | |
CONFIG_USB_CONFIGFS_UEVENT=y | Gadget uevent | |
CONFIG_USB_CONFIGFS_F_FS=y | FunctionFS,供 ADB 等使用 | |
| eMMC、DMA | CONFIG_MMC=y | MMC/eMMC 框架 |
CONFIG_MMC_QUEUE_DEPTH=1 | eMMC 队列深度 1 | |
CONFIG_MMC_DW=y | DesignWare MMC | |
CONFIG_MMC_DW_ROCKCHIP=y | Rockchip eMMC | |
CONFIG_DMADEVICES=y | DMAengine 框架 | |
CONFIG_ROCKCHIP_DMA=y | Rockchip DMA | |
CONFIG_SYNC_FILE=y | dma-fence 同步文件 | |
CONFIG_DMABUF_HEAPS=y | DMA-BUF Heap | |
CONFIG_DMABUF_HEAPS_CMA=y | CMA DMA-BUF Heap | |
# CONFIG_VIRTIO_MENU is not set | 裁掉 VirtIO | |
# CONFIG_VHOST_MENU is not set | 裁掉 VHOST | |
| 时钟、Mailbox、SoC | CONFIG_STAGING=y | 启用 staging 框架 |
CONFIG_COMMON_CLK_PROCFS=y | /proc 时钟信息 | |
CONFIG_ROCKCHIP_CLK_OUT=y | Rockchip 时钟输出 | |
CONFIG_ROCKCHIP_CLK_PVTPLL=y | Rockchip PVTPLL | |
CONFIG_HWSPINLOCK=y | 硬件自旋锁框架 | |
CONFIG_HWSPINLOCK_ROCKCHIP=y | Rockchip 硬件自旋锁 | |
CONFIG_MAILBOX=y | Mailbox 框架 | |
CONFIG_ROCKCHIP_MBOX=y | Rockchip Mailbox | |
# CONFIG_IOMMU_SUPPORT is not set | 不启用 IOMMU | |
CONFIG_CPU_RK182X=y | RK182X CPU 支持 | |
CONFIG_ROCKCHIP_CPUINFO=y | Rockchip CPU 信息 | |
CONFIG_ROCKCHIP_OPP=y | Rockchip OPP | |
CONFIG_ROCKCHIP_SUSPEND_MODE=y | Rockchip suspend | |
CONFIG_ROCKCHIP_SYSTEM_MONITOR=y | Rockchip system monitor | |
CONFIG_ROCKCHIP_DEBUG=y | Rockchip 调试能力 | |
CONFIG_ROCKCHIP_MINI_KERNEL=y | Rockchip 最小化内核 | |
CONFIG_ROCKCHIP_PM_DOMAINS=y | Rockchip 电源域 | |
CONFIG_PM_DEVFREQ=y | Devfreq 框架 | |
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y | Devfreq ondemand | |
CONFIG_DEVFREQ_GOV_USERSPACE=y | userspace Devfreq | |
| 板级基础设备 | CONFIG_EXTCON=y | 外部连接状态框架 |
CONFIG_EXTCON_USB_GPIO=y | GPIO USB extcon | |
CONFIG_MEMORY=y | Memory controller 框架 | |
CONFIG_IIO=y | IIO 框架 | |
CONFIG_ROCKCHIP_SARADC=y | Rockchip SARADC | |
CONFIG_PWM=y | PWM 框架 | |
CONFIG_PWM_ROCKCHIP=y | Rockchip PWM | |
CONFIG_PHY_ROCKCHIP_INNO_USB2=y | Rockchip Inno USB2 PHY | |
CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=y | Rockchip Naneng Combo PHY | |
CONFIG_NVMEM_ROCKCHIP_OTP=y | Rockchip OTP | |
| 文件系统与日志 | CONFIG_EXT4_FS=y | Rootfs 所用 ext4 |
# CONFIG_DNOTIFY is not set | 裁掉旧目录通知 | |
CONFIG_VFAT_FS=y | FAT | |
CONFIG_EXFAT_FS=y | exFAT | |
CONFIG_TMPFS=y | tmpfs | |
CONFIG_PSTORE=y | 持久化日志框架 | |
CONFIG_PSTORE_CONSOLE=y | 保存控制台日志 | |
CONFIG_PSTORE_RAM=y | RAM pstore 后端 | |
CONFIG_PSTORE_BOOT_LOG=y | 保存启动日志 | |
# CONFIG_NETWORK_FILESYSTEMS is not set | 裁掉 NFS/CIFS 等网络文件系统 | |
| 调试与异常处理 | CONFIG_DMA_CMA=y | CMA DMA 支持 |
CONFIG_CMA_SIZE_MBYTES=0 | 不固定 CMA 大小 | |
CONFIG_PRINTK_TIME=y | printk 时间戳 | |
CONFIG_PRINTK_TIME_FROM_RISCV_TIMER=y | 用 RISC-V timer 计时 | |
# CONFIG_DEBUG_MISC is not set | 裁掉杂项调试 | |
CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y | 生成默认 DWARF 调试信息 | |
CONFIG_MAGIC_SYSRQ=y | SysRq | |
# CONFIG_MAGIC_SYSRQ_SERIAL is not set | 不允许串口 SysRq | |
# CONFIG_SLUB_DEBUG is not set | 裁掉 SLUB 调试 | |
CONFIG_PANIC_ON_OOPS=y | Oops 后 panic | |
CONFIG_SOFTLOCKUP_DETECTOR=y | Soft lockup 检测 | |
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y | Soft lockup 后 panic | |
# CONFIG_DETECT_HUNG_TASK is not set | 裁掉 hung task 检测 | |
CONFIG_RCU_CPU_STALL_TIMEOUT=60 | RCU stall 超时 60 秒 | |
CONFIG_BOOTPARAM_RCU_STALL_PANIC=y | RCU stall 后 panic | |
# CONFIG_RCU_TRACE is not set | 裁掉 RCU trace | |
# CONFIG_FTRACE is not set | 裁掉 ftrace | |
# CONFIG_RUNTIME_KERNEL_TESTING_MENU is not set | 裁掉运行时内核测试 | |
# CONFIG_RUNTIME_TESTING_MENU is not set | 裁掉运行时测试菜单 |