ZYNQ移植ARM CMSIS_DSP库

2023-10-23 14:45
文章标签 移植 arm zynq dsp cmsis

本文主要是介绍ZYNQ移植ARM CMSIS_DSP库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

移植方法

Vitis中新建一个Application Project,选择HelloWord模板。按下面步骤移植CMSIS_DSP:

  1. 下载CMSIS_DSP,拷贝如下文件夹到Vitis工程:
    • Source
    • Include
    • PrivateInclude
    • ComputeLibrary (only if you target Neon)
  2. 对Source路径下和文件夹同名的.c文件(如,BasicMathFunctions.c),设置为不编译(右键Properties,Exclude resource from build),当然直接删除亦可。
  3. 设置头文件目录:
    在这里插入图片描述
  4. 添加CMSIS头文件依赖。从CMSIS下载CMSIS_5/CMSIS/Core_A /Include/路径下的头文件,拷贝到Include目录。
  5. 链接math库:
    在这里插入图片描述
    6. 添加编译选项
    -mfpu=neon-vfpv4 -mcpu=cortex-a9 -mfloat-abi=hard 注意这里使用-mfpu=neon-vfpv4而不是-mfpu=neon,详见here和xapp1206文档。
    在这里插入图片描述 7. 设置编译宏,开启NEON加速 在这里插入图片描述
    8. 设置多线程编译
    DSP库还是比较大的,单核编译一次要挺久,可开启多线程编译。
    在这里插入图片描述

测试

测试用例
使用DSP库例子中的FFT例程来测试库文件编译的正确性。将arm_fft_bin_data.c拷贝到src路径,将arm_fft_bin_example_f32.c的内容移植到helloworld.c中。若正确执行,将打印SUCCESS。
性能
不开启NEON时,这个1024点FFT计算耗时49us,开启NEON后,只需24us,快了近一倍。

参考文献

Maybe Error: Multiple definition in DSP package #696
Multiple Definitions Error When Using CMSIS DSP Library with SSP 2.0.0
MicroZed Chronicles: NEON & SIMD
xilinx sdk(2017.4版)如何编译neon的汇编指令,如vmul指令?谢谢!
Error Using Neon
vivado sdk添加头文件

这篇关于ZYNQ移植ARM CMSIS_DSP库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/268515

相关文章

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

bash: arm-linux-gcc: No such file or directory

ubuntu出故障重装了系统,一直用着的gcc使用不了,提示bash: arm-linux-gcc: No such file or directorywhich找到的命令所在的目录 在google上翻了一阵发现此类问题的帖子不多,后来在Freescale的的LTIB环境配置文档中发现有这么一段:     # Packages required for 64-bit Ubuntu

编译linux内核出现 arm-eabi-gcc: error: : No such file or directory

external/e2fsprogs/lib/ext2fs/tdb.c:673:29: warning: comparison between : In function 'max2165_set_params': -。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。 。。。。。。。。 host asm: libdvm <= dalvik/vm/mterp/out/Inte

Cortex-A7:ARM官方推荐的嵌套中断实现机制

0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版 1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断,开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中,硬件原生是不支持嵌套中断的,这从Cortex-A7中断向量表中仅为外部中断设置了一个中断向量可以看出。本文介绍ARM官方推荐使用的嵌套中断实现机

ARM 虚拟化介绍

0.目录 文章目录 0.目录1.概述 1.1 Before you begin 2.虚拟化介绍 2.1 虚拟化为什么重要2.2 hypervisors的两种类型2.3 全虚拟化和半虚拟化2.4 虚拟机和虚拟CPUs 3.AArch64中的虚拟化4.stage 2 转换 4.1 什么是stage 2 转换4.2 VMIDs4.3 VMID vs ASID4.4 属性整合和覆盖4.5模拟

RT-Thread(Nano版本)的快速移植(基于NUCLEO-F446RE)

目录 概述 1 RT-Thread 1.1 RT-Thread的版本  1.2 认识Nano版本 2 STM32F446U上移植RT-Thread  2.1 STM32Cube创建工程 2.2 移植RT-Thread 2.2.1 安装RT-Thread Packet  2.2.2 加载RT-Thread 2.2.3 匹配相关接口 2.2.3.1 初次编译代码  2.2.3.

SylixOS ARM平台下内存对齐访问

1.内存对齐 1.1     内存对齐概要 现代计算机中内存空间都是按照byte划分的,从理论上讲对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 1.2     内存对齐作用和原因 各个硬件平台对存储空间的处理上有很大的不同。一些平

ubuntu22.04 qemu 安装windows on arm虚拟机

ubuntu22.04 qemu 安装windows on arm虚拟机 iso: https://uupdump.net/ https://massgrave.dev/windows_arm_links vivo driver: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/

libmad音频解码库-Linux交叉编译移植

下载并解压libmad-0.15.1b.tar.gz 下载链接:https://downloads.sourceforge.net/mad/libmad-0.15.1b.tar.gz $tar -xvf libmad-0.15.1b.tar.gz$cd libmad-0.15.1b 1、先执行下面的命令:这条命令是为了适配高版本的gcc,因为高版本的gcc已经将-fforce-mem去除了:

arm linux lua移植

lua: lua home 1.下载lua源码 lua下载 lua-5.3.4.tar.gz 2.解压: tar xvf lua-5.3.4.tar.gz 3.修改makefile and luaconf.h $修改 lua-5.3.4/Makefile #INSTALL_TOP= /usr/local INSTALL_TOP= $(shell pwd)/out #修改安装目录(当前目录/o