海思内核参数配置操作指南

海思内核参数配置操作指南 Sunshine 2026-06-22 09:41:07 765

背景

​ 本文说明海思平台 Linux 内核参数配置、保存、编译、烧录和验证的操作流程,适用于 SS928V100、Hi3519DV500 / Hi3516DV500、Hi3516CV610 / Hi3516CV608 等已适配 SDK。不同平台的编译目录、默认配置文件和 Makefile 目标不同,操作前需要先确认当前平台实际使用的 defconfig 和编译命令。

.config 只代表当前构建目录正在使用的完整配置;如果只修改 .config,后续重新加载默认配置、重新解包源码或切换构建环境时,配置可能丢失。因此,完成 menuconfig 修改后,还需要将配置同步到项目使用的 defconfigdefconfig 是项目默认配置文件,通常位于内核源码的 arch/arm64/configs/ 目录,用于保证下次编译仍能加载相同的内核配置。

​ 本文先列出各平台的配置文件和编译命令参考,再以 CH340 USB 转串口驱动为例,演示如何通过 menuconfig 开启 CONFIG_USB_SERIAL_CH341,并说明如何单独编译内核、整体编译 SDK 固件、烧录内核分区,以及在系统启动后通过 dmesglsmod/dev/ttyUSB* 验证驱动是否生效。

重要提醒

必须以我们适配后的 SDK 为准,不要使用默认原厂 SDK,因为原厂 SDK 流程中存在删除源码的操作。原厂文档 bsp/readme_cn.txt 中一步步编译内核的操作比较麻烦,不建议采用。

1. 各平台配置编译参考

​ 不同平台的默认内核配置文件名称,需要参考对应平台 bsp 目录下的 Makefile。重点查看 KERNEL_CFG 的定义,以及 CHIPEBAINA_BOARDDEBUGKOL 等参数对 KERNEL_CFG 的影响。

1.1 SS928V100 平台

BSP 编译目录:

/home/sunshine/Workspace/HiEuler_PI/SS928V100_SDK_V2.0.2.2/osdrv

内核源码目录:

/home/sunshine/Workspace/HiEuler_PI/SS928V100_SDK_V2.0.2.2/open_source/linux/linux-4.19.y

内核配置目录:

arch/arm64/configs/

SS928V100 对应的默认配置文件:

启动介质 默认 defconfig
spi ss928v100_defconfig
emmc ss928v100_emmc_defconfig

打开 menuconfig:

make ARCH=arm64 CROSS_COMPILE=aarch64-mix210-linux- menuconfig

编译命令格式:

make BOOT_MEDIA=<启动介质> CHIP=ss928v100 <目标>

其中:

  • atf:单独编译内核相关内容;
  • all:整体编译 SDK 固件。

示例:

# 单独编译
make BOOT_MEDIA=emmc CHIP=ss928v100 atf

# 整体编译
make BOOT_MEDIA=emmc CHIP=ss928v100 all

1.2 Hi3519DV500 / Hi3516DV500 平台

BSP 编译目录:

/home/sunshine/Workspace/HongOU_PI/Hi3519DV500_SDK_V2.0.2.0/smp/a55_linux/source/bsp

内核源码目录:

/home/sunshine/Workspace/HongOU_PI/Hi3519DV500_SDK_V2.0.2.0/open_source/linux/linux-5.10.y

内核配置目录:

arch/arm64/configs/

BSP目录下Makefile 中的 KERNEL_CFG 规则:

$(CHIP)$(MEDIUM_FLAG)$(PYH_MODE)$(TEE_FLAG)defconfig

默认 defconfig 对应关系:

板型 常用参数 默认 defconfig
HongouPI_38C EBAINA_BOARD=38CBOOT_MEDIA=emmc hi3519dv500_emmc_defconfig / hi3516dv500_emmc_defconfig
Board_38E EBAINA_BOARD=38EPYH_MODE=rmii_ hi3519dv500_rmii_defconfig / hi3516dv500_rmii_defconfig
Board_45E EBAINA_BOARD=45EBOOT_MEDIA=emmcPYH_MODE=rmii_ hi3519dv500_emmc_rmii_defconfig / hi3516dv500_emmc_rmii_defconfig

打开 menuconfig:

make ARCH=arm64 CROSS_COMPILE=aarch64-v01c01-linux-gnu- menuconfig

编译命令格式:

make EBAINA_BOARD=<板型> LIB_TYPE=glibc CHIP=<芯片> <目标>

其中:

  • atf:单独编译内核相关内容;
  • all:整体编译 SDK 固件。

示例:

# 单独编译 (生成bl31.bin、uImage-fdt)
make EBAINA_BOARD=38C LIB_TYPE=glibc CHIP=hi3519dv500 atf 
make EBAINA_BOARD=38C LIB_TYPE=glibc CHIP=hi3519dv500 kernel

# 整体编译
make EBAINA_BOARD=38C LIB_TYPE=glibc CHIP=hi3519dv500 all

1.3 Hi3516CV610 / Hi3516CV608 平台

BSP 编译目录:

/home/sunshine/Workspace/HongOUPI_PICO/Hi3516CV610_SDK_V1.0.2.1/smp/a7_linux/source/bsp

内核源码目录:

/home/sunshine/Workspace/HongOUPI_PICO/Hi3516CV610_SDK_V1.0.2.1/open_source/linux/linux-5.10.y

内核配置目录:

arch/arm/configs/

BSP目录下Makefile 中的 KERNEL_CFG 规则:

$(CHIP)$(MEDIUM_FLAG)$(BSP_KOL_FLAG)$(BSP_DEBUG_FLAG)defconfig

默认 defconfig 对应关系:

平台 常用参数 默认 defconfig
Hi3516CV610 非 KOL CHIP=hi3516cv610DEBUG=1KOL=0 hi3516cv610_debug_defconfig
Hi3516CV610 KOL CHIP=hi3516cv610DEBUG=1KOL=1 hi3516cv610_kol_debug_defconfig
Hi3516CV608 非 KOL CHIP=hi3516cv608DEBUG=1KOL=0 hi3516cv608_debug_defconfig
Hi3516CV608 KOL CHIP=hi3516cv608DEBUG=1KOL=1 hi3516cv608_kol_debug_defconfig

打开 menuconfig:

make ARCH=arm CROSS_COMPILE=arm-v01c02-linux-musleabi- menuconfig

编译命令格式:

make LIB_TYPE=musl CHIP=<芯片> DEBUG=1 KOL=<0|1> <目标>

其中:

  • kernel:单独编译内核;
  • all:整体编译 SDK 固件;

示例:

# 单独编译
make LIB_TYPE=musl CHIP=hi3516cv610 DEBUG=1 KOL=0 kernel

# 整体编译
make LIB_TYPE=musl CHIP=hi3516cv610 DEBUG=1 KOL=0 all

2. menuconfig 配置流程

​ 本节以SS928V100平台开启 CH340/CH341 USB 转串口驱动为例,说明从加载默认配置、进入 menuconfig、保存 .config,到同步 defconfig 的完整流程。

2.1 准备内核源码目录

先进入 SDK 的 osdrv 目录,再切换到 Linux 内核源码目录。本文示例中的内核版本为 linux-4.19.y

cd ~/Workspace/HiEuler_PI/SS928V100_SDK_V2.0.2.2/osdrv
cd ../open_source/linux/linux-4.19.y/

进入目录后建议执行 pwdls,确认当前目录确实为内核源码目录,并能看到内核源码文件。

2.2 生成当前内核配置

参考 osdrv/readme_cn.txt 以及当前板卡启动介质,SS928V100 eMMC 启动场景对应的默认配置文件为:

arch/arm64/configs/ss928v100_emmc_defconfig

将默认配置复制为当前内核构建使用的 .config

cp arch/arm64/configs/ss928v100_emmc_defconfig .config

确认 .config 已生成:

ls -l .config

2.3 打开 menuconfig 配置界面

参考 osdrv/readme_cn.txt ,在内核源码目录执行:

make ARCH=arm64 CROSS_COMPILE=aarch64-mix210-linux- menuconfig

启动后会进入 Linux 内核配置主界面。menuconfig 主要通过键盘操作:

  • 使用方向键移动光标;
  • Enter 进入带有 ---> 标记的子菜单;
  • Y 将配置编译进内核,显示为 [*]
  • M 将配置编译为模块,显示为 <M>
  • N 关闭配置,显示为 [ ]< >
  • / 可以搜索配置项,例如搜索 CH34
  • Esc Esc 返回上一级或退出当前界面;
  • 底部的 <Select><Exit><Help><Save><Load> 可以通过方向键选择后按 Enter 执行。

2.4 配置 CH341 USB 串口驱动

menuconfig 中按照以下路径进入 USB 串口驱动配置菜单:

Device Drivers
  -> USB support
     -> USB Serial Converter support

注意:菜单名称以当前 SDK 的实际内核配置界面为准,不同内核版本可能在大小写或描述上略有差异。

USB Serial Converter support 中找到以下配置项:

USB Winchiphead CH341 Single Port Serial Driver

根据项目需求选择编译方式:

[*] 编译进内核
<M> 编译为模块

保存后对应的内核配置项应为以下其中一种:

CONFIG_USB_SERIAL_CH341=y
CONFIG_USB_SERIAL_CH341=m

其中 y 表示驱动直接编译进内核,m 表示驱动编译为可加载模块。

如果菜单项较多,也可以在 menuconfig 中按 / 搜索 CH34,通过搜索结果确认该配置项所在路径和当前状态。

搜索结果中会列出匹配到的配置项及其所在路径。如下图所示,USB_SERIAL_CH341 前面的 (1) 表示可跳转编号;在键盘上按 1,即可直接进入该配置项所在的 USB Serial Converter support 目录。

2.5 保存并检查 .config

配置完成后,在 menuconfig 中选择 Save,保存到当前内核源码目录下的 .config

保持默认文件名 .config,选择 Ok 确认保存。

退出 menuconfig 后执行以下命令确认 CH341 配置已经写入:

grep CONFIG_USB_SERIAL_CH341 .config

预期结果为以下其中一种:

CONFIG_USB_SERIAL_CH341=y
CONFIG_USB_SERIAL_CH341=m

2.6 同步到项目 defconfig

为了让后续重新加载默认配置或通过 SDK 顶层脚本编译时仍保留 CH341 配置,需要将当前 .config 覆盖到项目实际使用的 defconfig。

将当前 .config 覆盖到该 defconfig:

cp .config arch/arm64/configs/ss928v100_emmc_defconfig

3. 编译

完成内核配置并同步到 defconfig 后,回到 SDK 的 osdrv 顶层目录执行编译。调试阶段可先单独编译内核,确认无误后再整体编译 SDK。

方法一:单独编译内核

进入 osdrv 顶层目录:

cd ~/Workspace/HiEuler_PI/SS928V100_SDK_V2.0.2.2/osdrv

执行内核相关编译:

make BOOT_MEDIA=emmc CHIP=ss928v100 atf

atf 目标会先触发内核编译,适合需要同时更新启动相关组件的场景。

方法二:整体编译 SDK

需要生成完整固件包时,执行整体编译:

cd ~/Workspace/HiEuler_PI/SS928V100_SDK_V2.0.2.2/osdrv
make BOOT_MEDIA=emmc CHIP=ss928v100 all

4. 烧录固件(替换内核)

本次只修改内核配置,分区表和 rootfs 未变化时,可只烧录 kernel 分区,无需重新烧录完整固件。

在 BurnTool 中确认烧录介质、分区表和镜像路径正确后,仅勾选 kernel 分区,选择新编译生成的内核镜像进行烧录。

5. 验证 CH340 驱动

设备启动后插入 CH340 USB 转串口设备,查看内核日志:

dmesg | grep -i "ch34"

日志中出现 ch341-uart converter now attached to ttyUSB0,说明驱动已识别到 CH340 设备。

继续查看串口设备节点:

ls /dev/ttyUSB*

如果能看到 /dev/ttyUSB0,说明 CH340 串口节点已创建,驱动配置生效。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
Sunshine
红包 3 收藏 评论 打赏
评论
1个
内容存在敏感词
手气红包
  • went 2026-06-29 21:02:22
    回复
    有帮助
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
Sunshine
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区