• 全志V853芯片在Tina下E907启动方式的选择


    1.主题

    Tina V85x E907启动方式选择

    2.问题背景

    Tina V85x 平台E907支持2种启动方式,分别是boot0启动和内核启动。
    Tina V85x SDK默认配置一般是不启动E907,为方便用户配置开发,下面以V853 perf1方案为例,介绍具体的操作步骤。

    3.解决办法

    一、boot0启动

    要修改E907为boot0启动,需要修改以下几处

    • boot_package_nor.cfg

    文件:config/chips/v853/configs/default/boot_package_nor.cfg
    修改:去掉riscv.fex的注释,将E907固件打包进系统

    -;item=melis-elf,              riscv.fex
    +item=melis-elf,              riscv.fex
    
    • 1
    • 2
    • 设备树

    文件:lichee/brandy-2.0/spl/board/sun8iw21p1/common.mk
    修改:注释掉 e907_rproc@0 节点和 rpbuf_controller@0 节点的 iommus = <&mmu_aw 5 1>; 属性

    --- a/configs/perf1/board.dts
    +++ b/configs/perf1/board.dts
    @@ -58,7 +58,7 @@
    
                    mboxes = <&msgbox 0>;
                    mbox-names = "mbox-chan";
    -               iommus = <&mmu_aw 5 1>;
    +               //iommus = <&mmu_aw 5 1>;
                    fw-region = <&e907_fw>;
    
                    memory-mappings =
    @@ -74,7 +74,7 @@
                    compatible = "allwinner,rpbuf-controller";
                    remoteproc = <&e907_rproc>;
                    ctrl_id = <0>;  /* index of /dev/rpbuf_ctrl */
    -               iommus = <&mmu_aw 5 1>;
    +               //iommus = <&mmu_aw 5 1>;
                    status = "okay";
            };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • boot0代码

    文件:lichee/brandy-2.0/spl/board/sun8iw21p1/common.mk
    修改:添加boot0启动E907功能

    -CFG_RISCV_E907=y
    -CFG_SUNXI_ELF=y
    +#CFG_RISCV_E907=y
    +#CFG_SUNXI_ELF=y
    
    • 1
    • 2
    • 3
    • 4
    • 内核配置

    需要 m kernel_menuconfig 打开以下配置(默认已打开)

    CONFIG_REMOTEPROC=y
    CONFIG_SUNXI_RPROC=y
    CONFIG_RPMSG=y
    CONFIG_RPMSG_VIRTIO=y
    CONFIG_SUNXI_RPMSG_HEARBEAT=y
    CONFIG_RPBUF=y
    CONFIG_RPBUF_DEV=y
    CONFIG_RPBUF_CONTROLLER_SUNXI=y
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    按以上步骤修改完成后,需重新编译打包固件即可

    mp -j32

    二、内核启动

    • 打包固件

    方法1: 将编译出来的固件复制到 target/allwinner/v853-perf1/busybox-init-base-files/lib/firmware 目录下
    方法2: 使用adb将固件推到小机端的/lib/firmware目录

    • 内核配置

    需要 m kernel_menuconfig 打开以下配置(默认已打开)

    CONFIG_REMOTEPROC=y
    CONFIG_SUNXI_RPROC=y
    CONFIG_RPMSG=y
    CONFIG_RPMSG_VIRTIO=y
    CONFIG_SUNXI_RPMSG_HEARBEAT=y
    CONFIG_RPBUF=y
    CONFIG_RPBUF_DEV=y
    CONFIG_RPBUF_CONTROLLER_SUNXI=y
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    三、验证

    echo 固件名 > /sys/kernel/debug/remoteproc/remoteproc0/firmware
    停止E907
    echo stop > /sys/kernel/debug/remoteproc/remoteproc0/state
    启动E907
    echo start > /sys/kernel/debug/remoteproc/remoteproc0/state
    
    • 1
    • 2
    • 3
    • 4
    • 5

    可以通过观察E907的默认串口来观察是否正常启动.

    四、2种启动方式区别
    1、boot0启动较早,适用于需要快起的方案;kernel启动较晚
    2、boot0启动的E907不能使用IOMMU,kernel阶段启动能够使用IOMMU
    3、boot0启动的固件要打包进bootpackage,每次更换都要重新烧录固件;kernel启动用的固件能放在文件系统,很方便使用adb进行替换

    原贴链接:https://bbs.aw-ol.com/topic/1840/
    全志在线开发者交流企鹅群(客服机器人24小时在线解答):498263967
    资源获取、问题讨论可以到全志在线开发者社区进行:https://www.aw-ol.com
    全志及开发者最新动态可以关注全志在线微信公众号

  • 相关阅读:
    文件管理命令 ls,别名
    探索Flutter框架对iOS应用打包与部署的最佳实践
    Aria2 for Mac (免HomeBrew)
    WebSocket通讯架构
    上采样,下采样,卷积,反卷积,池化,反池化,双线性插值【基本概念分析】
    【计算机网络】 TCP和UDP的区别
    机器人类专业不同层次院校课程差异性简述-ROS1/ROS2-
    Spring MVC之处理请求的过程
    Windows下Apache2.4配置SSL(HTTPS)
    深度学习之NLP
  • 原文地址:https://blog.csdn.net/weixin_43094346/article/details/126177870