返回所有文章
工程 / TSENGCHEN BLOG

RK182x 系统资源

09_Engineering/RK182x System · RK182x 系统资源

09_Engineering · 第 2 / 7 篇

保留原笔记正文与技术内容,仅脱敏敏感信息。配图按作者要求保留原样。

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 DTSKernel DTS
作用阶段SPL / U-Boot 启动阶段Linux Kernel 运行阶段
目标让 U-Boot 能初始化并读取启动介质让 Linux 驱动全部板级硬件
板级文件u-boot/arch/riscv/dts/rk182x-evb.dtskernel-6.12/arch/riscv/boot/dts/rockchip/rk182x-evb1-v10.dts
SoC 文件u-boot/arch/riscv/dts/rk182x.dtsikernel-6.12/arch/riscv/boot/dts/rockchip/rk182x.dtsi
编译产物u-boot/u-boot.dtbkernel-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=ySystem V IPC
CONFIG_NO_HZ_IDLE=yCPU 空闲时停止 Tick
CONFIG_HIGH_RES_TIMERS=y高精度定时器
CONFIG_PREEMPT_RT=y实时抢占
CONFIG_LOG_BUF_SHIFT=1416 KiB printk 缓冲
CONFIG_BLK_DEV_INITRD=yinitrd/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=yperf 性能统计
CONFIG_MAX_PHYSMEM_BITS=40最大物理地址位宽 40 bit
RISC-V 平台CONFIG_ARCH_ROCKCHIP=yRockchip 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=yCPU Idle
CONFIG_CPU_FREQ=yCPUFreq
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y默认 ondemand 策略
CONFIG_CPU_FREQ_GOV_USERSPACE=yuserspace 调频策略
CONFIG_CPUFREQ_DT=y从 DTS 获取 CPUFreq 信息
CONFIG_ARM_ROCKCHIP_CPUFREQ=yRockchip 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=yCMA 非活跃页回收
# CONFIG_VM_EVENT_COUNTERS is not set裁掉 VM 统计计数
CONFIG_LRU_GEN=yMulti-Gen LRU
CONFIG_LRU_GEN_ENABLED=y默认启用 Multi-Gen LRU
网络CONFIG_NET=y网络协议栈
CONFIG_PACKET=y原始报文套接字
CONFIG_UNIX=yUnix 域套接字
CONFIG_INET=yIPv4
# CONFIG_INET_DIAG is not set裁掉网络诊断接口
# CONFIG_IPV6 is not set裁掉 IPv6
# CONFIG_BQL is not set裁掉 BQL 队列控制
PCIeCONFIG_PCI=yPCI 框架
# 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=yRockchip PCIe 控制器
CONFIG_PCIE_DW_ROCKCHIP_EP=yPCIe Endpoint 模式
设备与 FlashCONFIG_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=yMTD 框架
CONFIG_MTD_CMDLINE_PARTS=y命令行 MTD 分区
# CONFIG_MTD_OF_PARTS is not set不从 DTS 解析 MTD 分区
CONFIG_MTD_BLOCK=yMTD 块设备接口
CONFIG_MTD_SPI_NOR=ySPI Nor
CONFIG_MTD_SPI_NOR_MISC=ySPI Nor 附加功能
# CONFIG_MTD_SPI_NOR_DEVICE_AUTOSELECT is not set不自动选择 SPI Nor 型号
CONFIG_PCIE_FUNC_RKEP=yRockchip PCIe EP 功能
存储CONFIG_SCSI=ySCSI 框架
# CONFIG_SCSI_PROC_FS is not set裁掉 /proc/scsi
CONFIG_BLK_DEV_SD=ySCSI/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=ySynopsys GMAC
# CONFIG_DWMAC_GENERIC is not set不选通用 DWMAC glue
CONFIG_PPP=yPPP
# CONFIG_USB_NET_DRIVERS is not set裁掉 USB 网卡
# CONFIG_WLAN is not set裁掉 WLAN
输入CONFIG_INPUT_EVDEV=y/dev/input/event*
CONFIG_KEYBOARD_ADC=yADC 按键
# CONFIG_KEYBOARD_ATKBD is not set裁掉 AT 键盘
CONFIG_KEYBOARD_GPIO=yGPIO 按键
# 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=y8250 串口框架
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set裁掉旧串口选项
# CONFIG_SERIAL_8250_16550A_VARIANTS is not set裁掉 16550A 变种
CONFIG_SERIAL_8250_CONSOLE=y8250 控制台
# 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=yDesignWare UART
# CONFIG_SERIAL_8250_PERICOM is not set裁掉 Pericom 串口
I2C、SPI、GPIOCONFIG_I2C=yI2C 框架
CONFIG_I2C_CHARDEV=y/dev/i2c-*
CONFIG_I2C_RK3X=yRockchip I2C
CONFIG_SPI=ySPI 框架
CONFIG_SPI_ROCKCHIP=yRockchip SPI
CONFIG_SPI_ROCKCHIP_SFC=yRockchip SFC
CONFIG_PINCTRL=yPinmux/pinctrl
CONFIG_GPIO_SYSFS=y旧 GPIO sysfs 接口
电源与温控CONFIG_POWER_RESET=y重启框架
CONFIG_SYSCON_REBOOT_MODE=ysyscon 重启模式
CONFIG_POWER_SUPPLY=y电源供应框架
# CONFIG_HWMON is not set裁掉 hwmon
CONFIG_THERMAL=y温控框架
CONFIG_THERMAL_GOV_USER_SPACE=y用户态温控策略
CONFIG_CPU_THERMAL=yCPU 热管理
CONFIG_DEVFREQ_THERMAL=yDevfreq 热管理
CONFIG_ROCKCHIP_THERMAL=yRockchip 温度传感器
CONFIG_WATCHDOG=y看门狗框架
CONFIG_DW_WATCHDOG=yDesignWare 看门狗
CONFIG_REGULATOR=yregulator 框架
CONFIG_REGULATOR_FIXED_VOLTAGE=y固定电压 regulator
CONFIG_REGULATOR_GPIO=yGPIO regulator
CONFIG_REGULATOR_PWM=yPWM regulator
RGA 与音频CONFIG_ROCKCHIP_MULTI_RGA=yRockchip RGA
CONFIG_SOUND=y声音子系统
CONFIG_SND=yALSA
# 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=yASoC
CONFIG_SND_SOC_ROCKCHIP=yRockchip ASoC
CONFIG_SND_SOC_ROCKCHIP_SAI=yRockchip SAI
CONFIG_SND_SIMPLE_CARD=ysimple-audio-card
# CONFIG_HID is not set裁掉 HID
# CONFIG_USB_HID is not set裁掉 USB HID
USBCONFIG_USB=yUSB 框架
# CONFIG_USB_PCI is not set裁掉 PCI USB Host
CONFIG_USB_OTG=yUSB OTG
CONFIG_USB_XHCI_HCD=yxHCI Host
CONFIG_USB_STORAGE=yUSB Mass Storage Host
CONFIG_USB_DWC3=yDWC3 控制器
CONFIG_USB_GADGET=yUSB Device
CONFIG_USB_CONFIGFS=yconfigfs Gadget
CONFIG_USB_CONFIGFS_UEVENT=yGadget uevent
CONFIG_USB_CONFIGFS_F_FS=yFunctionFS,供 ADB 等使用
eMMC、DMACONFIG_MMC=yMMC/eMMC 框架
CONFIG_MMC_QUEUE_DEPTH=1eMMC 队列深度 1
CONFIG_MMC_DW=yDesignWare MMC
CONFIG_MMC_DW_ROCKCHIP=yRockchip eMMC
CONFIG_DMADEVICES=yDMAengine 框架
CONFIG_ROCKCHIP_DMA=yRockchip DMA
CONFIG_SYNC_FILE=ydma-fence 同步文件
CONFIG_DMABUF_HEAPS=yDMA-BUF Heap
CONFIG_DMABUF_HEAPS_CMA=yCMA DMA-BUF Heap
# CONFIG_VIRTIO_MENU is not set裁掉 VirtIO
# CONFIG_VHOST_MENU is not set裁掉 VHOST
时钟、Mailbox、SoCCONFIG_STAGING=y启用 staging 框架
CONFIG_COMMON_CLK_PROCFS=y/proc 时钟信息
CONFIG_ROCKCHIP_CLK_OUT=yRockchip 时钟输出
CONFIG_ROCKCHIP_CLK_PVTPLL=yRockchip PVTPLL
CONFIG_HWSPINLOCK=y硬件自旋锁框架
CONFIG_HWSPINLOCK_ROCKCHIP=yRockchip 硬件自旋锁
CONFIG_MAILBOX=yMailbox 框架
CONFIG_ROCKCHIP_MBOX=yRockchip Mailbox
# CONFIG_IOMMU_SUPPORT is not set不启用 IOMMU
CONFIG_CPU_RK182X=yRK182X CPU 支持
CONFIG_ROCKCHIP_CPUINFO=yRockchip CPU 信息
CONFIG_ROCKCHIP_OPP=yRockchip OPP
CONFIG_ROCKCHIP_SUSPEND_MODE=yRockchip suspend
CONFIG_ROCKCHIP_SYSTEM_MONITOR=yRockchip system monitor
CONFIG_ROCKCHIP_DEBUG=yRockchip 调试能力
CONFIG_ROCKCHIP_MINI_KERNEL=yRockchip 最小化内核
CONFIG_ROCKCHIP_PM_DOMAINS=yRockchip 电源域
CONFIG_PM_DEVFREQ=yDevfreq 框架
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=yDevfreq ondemand
CONFIG_DEVFREQ_GOV_USERSPACE=yuserspace Devfreq
板级基础设备CONFIG_EXTCON=y外部连接状态框架
CONFIG_EXTCON_USB_GPIO=yGPIO USB extcon
CONFIG_MEMORY=yMemory controller 框架
CONFIG_IIO=yIIO 框架
CONFIG_ROCKCHIP_SARADC=yRockchip SARADC
CONFIG_PWM=yPWM 框架
CONFIG_PWM_ROCKCHIP=yRockchip PWM
CONFIG_PHY_ROCKCHIP_INNO_USB2=yRockchip Inno USB2 PHY
CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=yRockchip Naneng Combo PHY
CONFIG_NVMEM_ROCKCHIP_OTP=yRockchip OTP
文件系统与日志CONFIG_EXT4_FS=yRootfs 所用 ext4
# CONFIG_DNOTIFY is not set裁掉旧目录通知
CONFIG_VFAT_FS=yFAT
CONFIG_EXFAT_FS=yexFAT
CONFIG_TMPFS=ytmpfs
CONFIG_PSTORE=y持久化日志框架
CONFIG_PSTORE_CONSOLE=y保存控制台日志
CONFIG_PSTORE_RAM=yRAM pstore 后端
CONFIG_PSTORE_BOOT_LOG=y保存启动日志
# CONFIG_NETWORK_FILESYSTEMS is not set裁掉 NFS/CIFS 等网络文件系统
调试与异常处理CONFIG_DMA_CMA=yCMA DMA 支持
CONFIG_CMA_SIZE_MBYTES=0不固定 CMA 大小
CONFIG_PRINTK_TIME=yprintk 时间戳
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=ySysRq
# CONFIG_MAGIC_SYSRQ_SERIAL is not set不允许串口 SysRq
# CONFIG_SLUB_DEBUG is not set裁掉 SLUB 调试
CONFIG_PANIC_ON_OOPS=yOops 后 panic
CONFIG_SOFTLOCKUP_DETECTOR=ySoft lockup 检测
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=ySoft lockup 后 panic
# CONFIG_DETECT_HUNG_TASK is not set裁掉 hung task 检测
CONFIG_RCU_CPU_STALL_TIMEOUT=60RCU stall 超时 60 秒
CONFIG_BOOTPARAM_RCU_STALL_PANIC=yRCU 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裁掉运行时测试菜单
09_Engineering · 文档目录
上一篇RK3576 INDUSTRIAL RS485下一篇RK3576-Industrial-Minimal-Buildroot-Guide