2.2 海思SS928开发 - 编译测试 - kernel

2.2 编译测试 - kernel

创建仓库

  • 在 gitlab 上创建 SS928 kernel 仓库,并命名为 SS928_KERNEL_V4.19

  • 进入开发虚拟机,克隆仓库:

    cd ~
    mkdir -p hiss928/kernel && cd hiss928/kernel
    git clone http://gitlab.xxx.com/KERNEL/SS928_KERNEL_V4.19.git ss928_kernel_v4.19
    cd ss928_kernel_v4.19
    

添加源代码

  • kernel 源代码可以在 SDK 中找到,添加步骤如下:

    cd ~/hiss928/sdk/ema_2.0.2.2/SS928V100_SDK_V2.0.2.2/open_source/linux/
    # 拷贝源码包
    cp -f Makefile linux-4.19.90.tar.gz linux-4.19.90.patch ~/hiss928/kernel/ss928_kernel_v4.19
    cd ~/hiss928/kernel/ss928_kernel_v4.19/
    # 解压源码包
    tar -xf linux-4.19.90.tar.gz
    # 应用补丁文件
    mv linux-4.19.90.patch linux-4.19.90/
    cd linux-4.19.90/
    patch -p1 < linux-4.19.90.patch
    

编译 kernel

  • 编译步骤如下:

    # 将工具链加入系统路径
    source ~/hiss928/sdk/ss928_sdk_g7.3_k4.19/env_setup.sh
    # 先彻底清理一次
    make ARCH=arm64 CROSS_COMPILE=aarch64-mix210-linux- distclean
    # 加载配置文件
    make ARCH=arm64 CROSS_COMPILE=aarch64-mix210-linux- ss928v100_emmc_defconfig
    # 编译 kernel
    make ARCH=arm64 CROSS_COMPILE=aarch64-mix210-linux- -j16 uImage
    # 最后生成的文件为 uImage,所在目录为 arch/arm64/boot/uImage
    # 这里先不验证能不能用,编译成功即可
    
  • 编译中遇到的问题:multiple definition of `yylloc’; scripts/dtc/dtc-lexer.lex.o

    • 原因:由于本人使用的虚拟机(ubuntu 22.04)的 gcc (11.4.0) 版本过高。
    • 解决:修改 scripts/dtc/Makefile,定位到 12 行,在 HOST_EXTRACFLAGS 后添加 -fcommon

完善仓库

  • 步骤如下:

    make ARCH=arm64 CROSS_COMPILE=aarch64-mix210-linux- distclean
    cd ..
    rm -f Makefile linux-4.19.90.tar.gz
    mv linux-4.19.90/* .
    rm -rf linux-4.19.90 linux-4.19.90.patch
    
  • 推送代码到远端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

专注的罗哈哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值