zynqmp Linux + 裸机 (A53-0 Linux,A53-1 2 3 裸机大数据量实时处理,R5-0 协议处理,R5-1 屏幕显示逻辑等)填坑笔记

fpga 和arm 采用预留内存的方式,采用neon 协处理器只能做到 250M/S 的速度,预留内存采用mmap的方式,当读取内存页的时候采用缺页中断的方式,导致速度拖沓而且预留内存没有进行Linux系统的内存管理(在系统内 memcpy的速度 可以到 5G/S),自己写DMA驱动,虽然可以用Linux 本身的框架,但是结果不确定,
1.首先CPU 涉及Linux的调度损失,可能数据处理的实时性受到影响,即使用cpu的亲和性属性,但是结果还是存在风险
2.DMA 传递到 Linux管理的内存 类似内存拷贝,FPGA的乒乓结构+ DMA,在DDR 会存在叁份拷贝,况且3个通道,会导致内存的极大浪费
3.算法优化,Linux调用库函数,存在层层调用的问题,即使编译器极大优化,我认为跟与在裸机层面的优化 存在差距

现状:
1.实时处理在裸机上运行,算法C 实现,编译器开 -O2 优化,查看汇编代码,效率很高,经测试效果达到预期
2.3个通道分别用3个cpu 处理,读取,处理,结果输出,内存访问完全分开,互不影响
3.一个A53 跑Linux 系统,方便使用第三方库,和其他几个核的交互采用共享内存的方式
4.2个R5 核虽然是实时核,但是主频只有 500M ,且只是 32bit cpu ,经测试算法处理比较拉跨,只能做协议处理,屏幕驱动显示,同步相关的工作

裸机步骤:
1.分别开发裸机程序,并测试通过 (注意各个cpu内存的位置配置)按需求来且不需要太大

2.在裸机端先把除运行Linux系统的CPU的其他核都运行起来,测试是否正常,这可以参考官方AMP 手册,我是参考黑金Vitis 应用教程 双核AMP的使用,重点如下:

Note:前面我们已经建立了一个cpu0 的工程

3.如上建立3个A53 的工程,两个R5的工程,编译通过,且确认已经生成 elf 文件
4.板上验证

注意图中,Application下每个cpu 对应的 elf 是否存在,是否对应

正常情况下,我们配置的cpu 都会运行起来,可以用驱动led 或者串口打印的方式

注意:如果我们配置多个cpu ,且各个cpu的使用了同样的led 或者串口,也就是说一个硬件有多个驱动源,那么生效的是最后加载程序的那个cpu

Linux编译步骤:
1.打开虚拟机配置环境变量,确保可以编译 如:source /opt/pkg/petalinux/settings.sh 个人按自己的开发指导来
2.执行 petalinux-config
在 DTG Seting ---- > Kernel_Bootargs ----> 取消 generate boot args atuomatically
在底下配置填写如下:重点:maxcpus = 1 ,你需要几个核跑Linux就填写几个

console=ttyPS0,115200 maxcpus=1 clk_ignore_unused earlyprintk root=/dev/mmcblk1p2 rw rootwait 

在 Subsystem AUTO Hardware Setting 下配置
1) System Processor ,指定运行Linux 系统的cpu 核心数
2)Memory Setting,配置ddr 参数 ,这里很关键,需要和 裸机那边的配置区别开,冲突了可能启动有问题,我配置到了低2G的空间,高2G 可能存在问题,还没试。下图是我自己的配置,裸机那边ddr 是从 0 地址开始的。

3.取消设备树里和目前地址冲突的预留内存配置
4.编译:执行

petalinux build

5.编译完成,查看生成文件,我一般查看文件生成 的时间确保系统更改导致新文件已生成

6.生成bootimag 把上图红框的文件拷贝出虚拟机,放到裸机程序的工程下,方便打包

注意 :
1.这里bootloader 要用虚拟机下编译出来的 zynqmp_fsbl.elf

最后点击 Create Image 生成 BOOT.bin 替换sd卡里的 BOOT.bin, image.ub 也要替换成虚拟机编译出来最新的

启动:设置板子 sd卡启动,打开调试串口 查看启动,启动过程中如果遇到错误,根据log 定位解决。

附加1:由于我的板子ps 端只有一个串口,裸机和 Linux是不能同时使用的,我是在裸机这里关闭了串口0,在Linux 设置里配置了串口0,linux 启动的log 才可以正常从串口 0 打印

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/263941.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JMeter常见错误分析

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

《PySpark大数据分析实战》-17.云服务模式Databricks介绍运行作业

📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP…

数据结构之进阶二叉树(二叉搜索树和AVL树、红黑树的实现)超详细解析,附实操图和搜索二叉树的实现过程图

绪论​ “生命有如铁砧,愈被敲打,愈能发出火花。——伽利略”;本章主要是数据结构 二叉树的进阶知识,若之前没学过二叉树建议看看这篇文章一篇掌握二叉树,本章的知识从浅到深的对搜索二叉树的使用进行了介绍和对其底层…

【经典LeetCode算法题目专栏分类】【第8期】滑动窗口:最小覆盖子串、字符串排列、找所有字母异位词、 最长无重复子串

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推荐--…

110基于matlab的混合方法组合的极限学习机和稀疏表示进行分类

基于matlab的混合方法组合的极限学习机和稀疏表示进行分类。通过将极限学习机(ELM)和稀疏表示(SRC)结合到统一框架中,混合分类器具有快速测试(ELM的优点)的优点,且显示出显着的分类精…

网安面试三十道题(持续更新)(sql注入系列)

61 给你一个网站,一般怎么做渗透测试的 先确定黑盒测试还是白盒测试 黑盒测试 信息收集: 服务器相关---:系统版本,真实IP,开放端口,使用的中间件 指纹信息---有无cdn加速,dns解析记录&#xff0…

ARM GIC(三) gicv2架构

ARM的cpu,特别是cortex-A系列的CPU,目前都是多core的cpu,因此对于多core的cpu的中断管理,就不能像单core那样简单去管理,由此arm定义了GICv2架构,来支持多核cpu的中断管理 一、gicv2架构 GICv2,支持最大8个core。其框图如下图所示: 在gicv2中,gic由两个大模块组成: …

页面级UI状态存储LocalStorage

目录 1、LocalStorageProp 2、LocalStorageLink 3、LocalStorage的使用 4、从UI内部使用LocalStorage 5、LocalStorageProp和LocalStorage单向同步的简单场景 6、LocalStorageLink和LocalStorage双向同步的简单场景 7、兄弟节点之间同步状态变量 LocalStorage是页面级的…

FISCO BCOS 中webase-deploy配置项详细说明

本文整理了webase-deploy的相关配置,例如如何webase启用基于自己搭的链,而不启用默认的两节点链 1.WeBASE 子系统版本 指定了 WeBASE 的各个子系统(web、mgr、sign、front)的版本号为 v1.5.5。 2.Docker 相关配置: docker.mysql 3.如果使用 Docker 安装&…

重温经典struts1之国际化(I18N)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 拿Google网站来举例,在世界上不同国家和地区,登陆Google网站,网站上都会显示本国家语言,它是怎么做到的,就是…

FasterRCNN目标检测

R-CNN 四个步骤: 对输入图片提取候选区(region proposal),每张大约2000个。论文中采用selective search的方法。对每个候选区采用CNN网络提取特征。此处需要将proposal的尺寸缩放成统一的227x227,以匹配CNN网络。最终提取到的特征…

一款外置MOS开关降压型 LED 恒流控制器应用方案

一、基本概述 TX6121 是一款高效率、高精度的降压型大功率 LED 恒流驱动控制器芯片。芯片采用固定关断时间的峰值电流控制方式,关断时间可通过外部电容进行调节,工作频率可根据用户要求而改变。 通过调节外置的电流采样电阻,能控制高亮度 LE…

基于ssm+jsp学生综合测评管理系统源码和论文

网络的广泛应用给生活带来了十分的便利。所以把学生综合测评管理与现在网络相结合,利用java技术建设学生综合测评管理系统,实现学生综合测评的信息化。则对于进一步提高学生综合测评管理发展,丰富学生综合测评管理经验能起到不少的促进作用。…

【运维面试100问】(十一)淡淡I/O过程

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

手把手教你基于 FastGPT 搭建个人知识库

前言 大家好,我是潇潇雨声。我发现在使用 GPT 时,尽管它能够生成一些小红书文案和日志,但内容常常显得空洞缺乏深度。今天我想分享一个解决这个问题的方法,那就是基于开源项目 FastGPT[1]。 我们可以通过向 GPT 提供一些有针对性的…

大数据技术基本功-数据采集

产品指南|DataScale自定义采集器功能介绍产品指南|开发 DataScale Collector​​​​​​​

鸿蒙和各大厂合作,是不是要火起来

今年9月底,在华为秋季全场景新品发布会上,华为常务董事、终端BG CEO余承东宣布,鸿蒙原生应用全面启动,HarmonyOS NEXT开发者预览版将在2024年第一季度开放。 近日,腾讯、阿里、美团、网易,外包大厂中软国际…

从零开始创建GPTs 人人都可以编写自己的ChatGPT产品

在这个人工智能迅猛发展的时代,GPT(生成式预训练变换器)已经成为一项令人兴奋的技术,它打开了创意和知识的新大门。无论你是一名编程新手、一位热爱探索的学生,还是对未来充满好奇的专业人士,GPTs都可以为你…

代码随想录算法训练营Day7 | 233.用栈实现队列、225.用队列实现栈

LeeCode 233 用栈实现队列 本题思路:使用两个栈来实现队列,应该怎么做呢?我们通过画图来分析下 入队列的时候,直接在 stackin 入出队列的时候,肯定是先出 1 ,此时把,stackin 中全部 弹出到 入到…

DBeaver连接hive

1.新建hive连接 其中主机填写hive所在节点地址,端口10000为默认,数据库名不填则是默认default数据库,用户名密码填写hadoop集群中能操作hdfs的用户和密码。 2.编辑驱动,驱动的jar包从安装的hive下的jdbc路径下获取,例…