首页 » 智能 » TMS320C6678 ZYNQ 双核ARM通信案例开拓手册之matrix_multiply案例_案例_法式

TMS320C6678 ZYNQ 双核ARM通信案例开拓手册之matrix_multiply案例_案例_法式

落叶飘零 2024-12-29 06:52:58 0

扫一扫用手机浏览

文章目录 [+]

2 matrix_multiply案例

2.1 案例功能

TMS320C6678 ZYNQ 双核ARM通信案例开拓手册之matrix_multiply案例_案例_法式 TMS320C6678 ZYNQ 双核ARM通信案例开拓手册之matrix_multiply案例_案例_法式 智能

2.2 操作解释

TMS320C6678 ZYNQ 双核ARM通信案例开拓手册之matrix_multiply案例_案例_法式 TMS320C6678 ZYNQ 双核ARM通信案例开拓手册之matrix_multiply案例_案例_法式 智能
(图片来自网络侵删)

2.3 关键代码

2.3.1 linux_demo代码解释

2.3.2 freertos_demo代码解释

2.3.3 baremetal_demo代码解释

3 内存分配解释

4 案例编译解释

4.1 CPU0运用程序编译

4.2 CPU1裸机与FreeRTOS程序编译

前 言

本文紧张先容ZYNQ基于OpenAMP框架的双核ARM通信案例的利用解释,CPU0(Master)运行Linux系统,CPU1(Remote)运行裸机或FreeRTOS程序。
CPU0利用remoteproc加载CPU1程序,并对CPU1进行配置。

图 1

matrix_multiply案例开拓手册是基于创龙科技 TI TMS320C6678 + Xilinx Zynq-7045的高速多路高清视频采集处理平台,采取DSP+FPGA+ARM架构。

SOM-TL6678ZH核心板正面图

​SOM-TL6678ZH核心板背面图

TL6678ZH-EVM评估板资源图1

​TL6678ZH-EVM评估板资源图2

表 1

1 matrix_multiply案例1 案例功能

案例功能:CPU0随机天生两个矩阵并利用RPMsg向CPU1发送数据,CPU1吸收到数据后进行矩阵乘法运算,再利用RPMsg向CPU0回传运算结果,然后CPU0通过串口终端输出运算结果。

2 操作解释

将CPU1裸机或FreeRTOS可实行文件复制到评估板文件系统“/lib/firmware/”目录下,并实行如下命令加载CPU1程序。

Target# echo matrix_multiply.elf > /sys/class/remoteproc/remoteproc0/firmware

Target# echo start > /sys/class/remoteproc/remoteproc0/state

图 29

实行如下命令加载RPMsg驱动,并在“/dev/”目录下天生RPMsg设备节点。

Target# modprobe rpmsg_user_dev_driver

图 30

将CPU0运用程序可实行文件复制到评估板文件系统,并实行如下命令通过RPMsg与CPU1进行通信。

Target# ./mat_mul_demo

图 31

输入1,并按回车键进行测试。

图 32

输入2,并按回车键退出测试。

图 33

实行如下命令,停滞CPU1程序。

Target# echo stop > /sys/class/remoteproc/remoteproc0/state

图 34

3 关键代码

由于本案例大部分代码与echo_test案例基本同等,因此代码解释可参考echo_test案例代关键代码章节,下面对部分代码进行补充解释。

2.3.1 linux_demo代码解释

(1) 打开RPMsg驱动设备节点,创建ui_thread_entry、compute_thread_entry线程。

图 35

2.3.2 freertos_demo代码解释

(1) 在app()中进行矩阵乘法运算,并向CPU0回传运算结果。

图 36

3.3 baremetal_demo代码解释

(1) 在数据读取函数rpmsg_read_cb()中,对从CPU0吸收到的数据进行判断,并进行不同处理(关机或回传数据),实现通信和生命周期管理。

图 37

3.4内存分配解释

PS端DDR容量为1GByte,内存地址分配如下:

表 2

如需修正CPU1程序(OpenAMP-remote app)内存地址空间范围,可通过变动设备树文件、资源表rsc_table.c及链接文件lscript.ld对内存地址空间进行重新分配。
三者需同步修正并保持同等,以确保固件程序链接地址与设备树配置的elf_ddr_0对应。
所利用的资源(内存和virtio设备资源)不能超出设备树文件配置的内存范围。
TL6678ZH-EVM评估板利用的设备树文件为tl6678zh-evm.dts,该设备树文件会调用tlz7x-easyevm.dts,因此实际需修正的文件为tlz7x-easyevm.dts。

图 38 设备树文件tlz7x-easyevm.dts配置

图 39 设备树文件tlz7x-easyevm.dts配置

图 40 CPU1程序资源表rsc_table.c配置

图 41 CPU1程序链接文件lscript.ld配置

案例编译解释4.1 CPU0运用程序编译

请参考“ZYNQ Linux开拓环境搭建”文档配置好交叉编译工具链,并将CPU0运用程序源码目录拷贝至Ubuntu,然后在源码目录下实行如下命令进行编译。

Host# make CC=arm-linux-gnueabihf-gcc

图 42

由于matrix_multiply案例利用线程干系函数,编译时需增加-pthread编译选项。

Host# make CC=arm-linux-gnueabihf-gcc CFLAGS=-pthread

图 43

4 .2 CPU1裸机与FreeRTOS程序编译

请参考“ZYNQ PS端裸机与FreeRTOS案例开拓手册”进行工程编译。
由于案例路径发生改变后会无法识别到BSP源文件,编译前请参考如下操作更新BSP源文件。

双击案例xxx_bsp目录下的system.mss,在弹出的界面点击“Re-generate BSP Source”。

图 44

点击Yes重新更新BSP源文件后,即可正常编译。

图 45

图 46

补充解释

案例工程默认已增加“-DUSE_AMP=1”编译选项。
增加此编译选项后,仅许可CPU0对GIC、L2等共享资源初始化。

如新建工程,可参考如下方法进行设置。

(1) 右击BSP包,点击Board Support Package Settings。

图 47

(2) 点击“ps7_cortexa9_1 -> extra_compiler_flags”,增加“-DUSE_AMP=1”编译选项。

图 48

​ 如需获取案例源码、TL6678ZH-EVM评估板或其他产品详细资料,欢迎留言或者私聊!

标签:

相关文章

万科IT客服,构建智慧社区,助力美好生活

随着科技的飞速发展,信息技术已经渗透到我们生活的方方面面。在我国,万科集团作为一家具有社会责任感的企业,始终致力于为业主打造智慧、...

智能 2024-12-30 阅读0 评论0

上海IT实习,介绍未来职业发展的金钥匙

随着我国经济的快速发展,IT行业已成为我国最具活力和潜力的行业之一。近年来,越来越多的应届毕业生选择投身IT行业,而上海作为我国经...

智能 2024-12-30 阅读0 评论0

上海IT测试行业的崛起与挑战

随着我国经济社会的快速发展,信息技术(IT)行业逐渐成为推动经济增长的重要引擎。上海,作为我国的经济、金融和科技创新中心,IT测试...

智能 2024-12-30 阅读0 评论0