您尚未登录。

楼主 # 2023-09-26 20:01:47

yeziruo
会员
注册时间: 2023-09-26
已发帖子: 4
积分: 104

[RV1103] 编译Buildroot与NPU使用

前言

最近无聊,看到了这块板子,所以整了一块玩。

SDK:  https://github.com/LuckfoxTECH/luckfox-pico.git

Wiki: https://wiki.luckfox.com/zh/Luckfox-Pico/Core3566-SDK/

编译 Uboot 与 内核

按Wiki来:

    # in ubuntu 18.04, normal user
    sudo apt-get install repo git ssh make gcc gcc-multilib g++-multilib module-assistant expect g++ gawk texinfo libssl-dev bison flex fakeroot cmake unzip gperf autoconf device-tree-compiler libncurses5-dev pkg-config

    git clone https://github.com/LuckfoxTECH/luckfox-pico.git
    cd luckfox-pico
    pushd tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf
    ./env_install_toolchain.sh
    popd
    ./build.sh lunch # 预配置

内核配置:

    pushd sysdrv/source/kernel
    cp ./arch/arm/configs/luckfox_rv1106_linux_defconfig .config
    make ARCH=arm menuconfig
    # in menuconfig
    # 关闭 DebugFs
    # 不选中
    Kernel hacking -> Generic Kernel Debugging Instruments -> Debug Filesystem
    # 启用 RKNPU 支持
    # 选中
    Device Drivers -> RKNPU -> ROCKCHIP_RKNPU

编译:

    popd
    # 先全部编译一遍,生成必要的文件
    ./build.sh
编译 Buildroot

下载稳定版本:

    cd ~
    wget https://buildroot.org/downloads/buildroot-2023.02.4.tar.gz
    tar xvfz buildroot-2023.02.4.tar.gz
    cd buildroot-2023.02.4
    make menuconfig

如图配置:

rootfs_092601.png

rootfs_092602.png

构建需要的软件包不再赘述。

    make
    # make -j4

编译telnetd(因为没有adbd):

    make busybox-menuconfig
    # 启用 telnetd
    # 选中
    Networking Utilities -> telnetd

重新编译(不需要清除output):

    make
    # make -j4

配置 inittab:

    # nano output/target/etc/inittab
    # 任意地方加入
    ::sysinit:/usr/sbin/telnetd
    ::sysinit:/sbin/udhcpc -b -i eth0 -p /var/run/udhcpc.pid -R
    # 修改
    ttyFIQ0::respawn:/sbin/getty -L ttyFIQ0 0 vt100
打包 UBI

不知道怎么回事,Buildroot 打包的 ubi 不能用,所以需要使用 SDK 提供的打包脚本。

计算UBI大小:

    32 * 0x0100000

打包:

    cd ~
    # mkfs_ubi.sh <source dir> <output dir> <partition size> <partition name> <fs type> <fs comp>
    ~/luckfox-pico/sysdrv/tools/pc/mtd-utils/mkfs_ubi.sh ~/buildroot-2023.02.4/output/target ~ 33554432 rootfs ubifs lzo
    # 会在当前目录下生成 ubi 文件

烧录部分不再赘述。

mtd_092601.png

Uboot 配置

在串口上电时疯狂按下 Ctrl + C:

uboot_092601.png

    # 编辑 mtd 分区(按实际配置)
    => env edit mtdparts
    edit: spi-nand0:256K(env),256K@256K(idblock),512K(uboot),4M(boot),64M(rootfs)
    # 编辑启动选项
    => env edit sys_bootargs
    edit:  ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs rk_dma_heap_cma=24M
    # rk_dma_heap_cma 是预分配给 npu 的内存大小
测试 NPU

在内核启用支持后,dev目录下现在有个 rknpu 设备:

npu_092601.png

编译例程:

    cd ~
    git clone https://github.com/rockchip-linux/rknpu2
    cd rknpu2/examples/RV1106_RV1103/rknn_yolov5_demo
    export RK_RV1106_TOOLCHAIN=arm-rockchip830-linux-uclibcgnueabihf
    ./build-linux_RV1106.sh

运行:

    # 编译后拷贝 install/rknn_yolov5_demo_Linux 目录到开发板
    # 在开发板上进入 rknn_yolov5_demo_Linux 目录
    export LD_LIBRARY_PATH=$(pwd)/lib
    ./rknn_yolov5_demo model/RV1106/yolov5s-640-640.rknn model/bus.jpg

结果:

npu_092602.png

最后

BBcode十分难用(

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn