查看: 840|回复: 0

[评测分享] 创龙开发板|多核异构开发示例

[复制链接]

该用户从未签到

发表于 2022-4-30 00:31:06 | 显示全部楼层 |阅读模式
分享到:

首先说一下什么是异构多核开发:
早期是单核CPU的运行,但是随着需求的增加,导致在性能上已经没有办法继续满足,所以出现在一颗芯片上封装多核个核心,协同工作的设计思路,并将其实现。

从硬件的角度说:从硬件的角度来看,多核设计分为两类。如果所有的核心或CPU具有相同的构架,那么定义为同构多核(homogeneous);如果架构不同,那么称为异构(heterogeneous)多核。今天我们在创龙的开发板上使用TI的芯片做一个简单的多核异构的开发。


  • 搭建环境
此处有个问题!官方给出的RTOS在Ubuntu18.04和Ubuntu20.04上安装会失败。所以此处选择官方所给的ubuntu14.04环境。
  • 案例
案例功能: ARM 端通过 MessageQ 组件以固定频率分别发送 LED 控制命令给 DSP/IPU

端, DSP/IPU 端根据命令改变 LED 状态。

  • 组件编译
将官方提供的代码例程放到ubuntu14.04环境下。



  • 进入ex02_messageq/src目录下,修改编译参数,将products.mak中的arm交叉编译工具链路径参数修改为实际的路径:


其他的参数保持和下面一直。
编译源码并安装。make -j8 && make install
完成后可以看到如下的可执行文件。


编写启动脚本
#!/bin/sh

if [ -f "server_dsp1.xe66" ];then
    path=$(cd "$(dirname "$0")"; pwd)"/server_dsp1.xe66"
    rm /lib/firmware/dra7-dsp1-fw.xe66
    ln -s $path /lib/firmware/dra7-dsp1-fw.xe66
    echo 40800000.dsp > /sys/bus/platform/drivers/omap-rproc/unbind
    echo 40800000.dsp > /sys/bus/platform/drivers/omap-rproc/bind
fi

if [ -f "server_dsp2.xe66" ];then
    path=$(cd "$(dirname "$0")"; pwd)"/server_dsp2.xe66"
    rm /lib/firmware/dra7-dsp2-fw.xe66
    ln -s $path /lib/firmware/dra7-dsp2-fw.xe66
    echo 41000000.dsp > /sys/bus/platform/drivers/omap-rproc/unbind
    echo 41000000.dsp > /sys/bus/platform/drivers/omap-rproc/bind
fi

if [ -f "server_ipu1.xem4" ];then
    path=$(cd "$(dirname "$0")"; pwd)"/server_ipu1.xem4"
    rm /lib/firmware/dra7-ipu1-fw.xem4
    ln -s $path /lib/firmware/dra7-ipu1-fw.xem4
    echo 58820000.ipu > /sys/bus/platform/drivers/omap-rproc/unbind
    echo 58820000.ipu > /sys/bus/platform/drivers/omap-rproc/bind
fi

if [ -f "server_ipu2.xem4" ];then
    path=$(cd "$(dirname "$0")"; pwd)"/server_ipu2.xem4"
    rm /lib/firmware/dra7-ipu2-fw.xem4
    ln -s $path /lib/firmware/dra7-ipu2-fw.xem4
    echo 55020000.ipu > /sys/bus/platform/drivers/omap-rproc/unbind
    echo 55020000.ipu > /sys/bus/platform/drivers/omap-rproc/bind
fi

将脚本和启动文件一起放进开发板。


启动运行脚本:


A15和DSP1通讯结果:
./app_host DSP1



A15和IPU1通讯结果:
./app_host IPU1


剩下的两个在此就不在赘述,方法都是一样的。由此我们可以看出,其实每个核心之间的工作状态都是通过MessageQ 组件进行通讯的,以此完成高效的运行。

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

手机版|小黑屋|与非网

GMT+8, 2024-11-26 08:53 , Processed in 0.115233 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.