- 博客(1279)
- 资源 (6)
- 收藏
- 关注
原创 关于HPS和FPGA之间的桥接学习笔记(一)
为了实现FPGA和HPS之间的存储器共享和数据传输,Altera SoC FPGA提供了两种方式用于FPGA和HPS通信。分别是FPGA to SDRAM和AXI bridge。FPGA to SDRAM接口是HPS内部的SDRAM控制器提供给FPGA访问HPS内存的接口,AXI bridge是FPGA和HPS之间数据交互的接口,包括f2h、h2f和lw_h2f。下面分别做简要概述:1、FPGA to SDRAM由图可知,FGPA可以通过FPGA to SDRAM接口直接访问HPS端的内
2021-04-28 12:52:44 1677 1
原创 Linux 对内存的直接读写(devmem)
【摘要】 在Linux开发中着实用到的调试工具并不是很多。devmem的方式是提供给驱动开发人员,在应用层能够侦测内存地址中的数据变化,以此来检测驱动中对内存或者相关配置的正确性验证。http://blog.csdn.net/hens007/article/details/7268447这个工具的原理也比较简单,就是应用程序通过mmap函数实现对/dev/mem驱动中mmap方法的使用,映射了设备的内存到用户空间,实现对这些物理地址的读写操作。#include <stdio.h>
2020-12-08 13:42:37 3825
原创 Linux 读写memory操作
1 说明由于开发需要,需要通过memory传输数据,所以使用devmem 方式读写数据,操作linux 内存数据。devmem的方式是提供给驱动开发人员,在应用层能够侦测内存地址中的数据变化,以此来检测驱动中对内存或者相关配置的正确性验证。2 开发环境软件环境: ubuntu 虚拟机、arm-xilinx 交叉编译工具链硬件环境: ZYNQ70103 内存地址说明基本上的内存物理地址都可以访问,但是如果需要ZYNQ的PS 和PL 都能读写数据,需要查看芯片的datasheet,确定哪个
2020-12-08 13:38:00 2258 1
原创 使用码云加速下载github项目
从codesheep中学到的思路众所周知,github上的项目下载都很慢,并且随着项目中文件数量变多,下载过程会大概率失败。但是可以先将Github上的项目存到码云中,再从码云中下载,这个过程可以很快。复制github中的项目地址 打开码云,并且通过github地址创建新的项目 然后就可以下载到本地了SourceTree使用SSH克隆码云项目 如果你下载之后还想和github上的原仓库进行互动,可以通过修改.git文件夹中的config配置文件,将gitee改成github即可 但是,需要注.
2020-11-30 09:41:29 394
原创 C++/C项目
几个C++/C语言编写的项目:cjson网址:https://sourceforge.net/projects/cjson/MyTinySTL网址:https://github.com/Alinshans/MyTinySTLoatpp网址:https://github.com/oatpp/oatppTinyhttpd网址:https://github.com/EZLippi/Tinyhttpd/blob/master/httpd.cnginx网址:http://nginx.org/Redis网
2020-11-30 09:36:27 706
原创 git clone下载代码,解决中途断开下载的方法
问题如下:解决:办法11)运行以下命令进行clone $ git clone--recursivehttps:xxxxxx2)进入项目根目录,继续下载 $cdeigen-git-mirror $ git submodule update --init --recursive方法21)复制你需要的下载链接,如:https://github.com/google/ffcc.git2)打开gitee码云并登录3)点击创建仓库,在创建仓库页面选择导入已有...
2020-11-24 00:33:08 7054 2
原创 QT学习:Qt 捕捉窗口关闭事件与信号的捕捉
有时候我们希望在关闭窗口之前做一些操作,例如保存缓存数据或向用户提示是否关闭窗口等等。由于一般的窗口都是继承自QWidget, 那么我们可以通过覆盖QWidget中的虚函数closeEvent(QCloseEvent* event);来达到这个目的。(1)首先添加依赖库:#include <QCloseEvent>2)接着声明和定义closeEvent函数:a).h文件protected: void closeEvent(QCloseEvent *event.
2020-10-28 23:19:50 3604
原创 m3352linux内核中看门狗喂狗和应用层喂狗方法
1、linux内核模块喂狗方法:#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/sched.h>#include <linux/delay.h>#include <asm/io.h>#include <asm/mach/arch.h>#include <mach/hard
2020-10-28 22:04:48 2060
原创 QT学习:QT文件操作
一、文本读写操作一个简单的文本读写操作文本格式为utf8。开文件显示乱码应该是文件编码问题,使用utf8无此问题(代码运行在linux平台)void MainWindow::on_pushButtonSave_clicked(){ QString fileName = QFileDialog::getSaveFileName(this, tr("保存当前日志"),
2020-10-28 19:14:43 213
原创 QT学习:QT多线程示例+一种通用高并发数据处理最简单思路
波特率115200=115200位/s=11520字节/s(无校验位)多个串口和网络发来的数据,需处理。波特率9600约等于1000个字节/s的数据,尤其在ARM上直接卡–>多线程–>一个线程收数据—>一个线程处理数据当协议一样,要将串口数据解析转为网络端口监听,之前可用tcp通信处理。还可以:各种数据接收后排队存入一个全局变量,再单独开辟一个线程从这个全局变量读取第一个数据,处理完则移除第一个数据。Qt中的链表直接提供了一个takeFirst函数,用while循环读取,在读取的时
2020-10-26 08:04:58 2611 1
转载 QT学习:Qt程序CPU占用率较高的解决办法
Qt程序CPU占用率较高的解决办法分析思路总的来说,Qt程序CPU占用率较高的原因可能有以下几点:1、在paintEvent中调用update函数,造成无限循环2、频繁刷新数据3、复杂的浮点运算4、死循环5、paintEvent里操作太多我遇到这个问题的程序是利用多个子线程(接收子线程)同时接收并解析网口的数据,同时另外一个子线程(融合子线程)对多个子线程解析得到的数据进行融合处理,接收子线程和融合子线程之间通过Qt的信号-槽机制进行数据交互。通过分析发现,各子线程运行之后均处
2020-10-26 08:02:08 4896
原创 QT 学习:QT中的3种指针介绍与使用
QPointerQPointer是Qt提供的一个比较特别的智能指针,和其它智能指针有很大的不同,该智能指针专门为自动释放内存资源而设计的。正文QPointer本质是一个模板类,属于Qt对象模型的特性,它为QObject提供了guarded pointer,当其指向的对象被销毁时,它会被自动置NULL。需要注意的是:QPointer所指向的对象必须是QObject或其派生类对象。因为其对象析构时会执行QObject的析构函数,进而执行QObjectPrivate::clearGuards(t.
2020-10-22 22:53:17 9217
原创 QT学习:Qt中QObject::sender()的用法
当某一个Object emit一个signal的时候,它就是一个sender,系统会记录下当前是谁emit出这个signal的,所以你在对应的slot里就可以通过 sender()得到当前是谁invoke了你的slot,对应的是QObject->d->sender.有可能多个Object的signal会连接到同一个signal(例如多个Button可能会connect到一个slot函数onClick()),因此这是就需要判断到底是哪个Object emit了这个signal,根据sender的
2020-10-22 22:39:27 546
原创 QT学习:QT5的程序打包发布(将QT5的工程项目打包成一个exe程序)
最近,在学习QT5的过程中,想尝试着把自己写的工程程序给打包发布出来,在任何一台windows系统都能运行,这样就不会限于电脑需不需要安装QT安装包了。首先,先介绍自己使用的环境。我使用的QT版本是。我的电脑windows系统是win10专业版的。下面的打包教程,都是亲测可用的。但个人认为,即便是不同的windows操作系统,不同的QT版本,也应该是可以的。希望大家能及时反馈,我好及时更新。第二,介绍一下我所使用的打包工具。一个是QT5自带的windeployqt(这个大家不需要下载安装),另外一个是Eng
2020-10-22 17:45:23 539 1
原创 QT学习:QT教程总结
推荐几个视频课程和文档:讯为嵌入式Qt(有串口调试助手的案例):讯为嵌入式Qt 传智播客Qt(C++跟这位老师学的,逐行逐句讲解是真的细):传智播客Qt Qt基础教程V2.0.doc 文档:Qt基础教程V2.0.doc...
2020-10-22 00:42:18 355
原创 QT学习:QtChart——简单的动态波形图
众所周知Qt 5.7过后Qt添加了官方的Chart库,终于可以用官方的库替代QWT和QCustomerPlot。本文只是简单的融合了几个Qt官方例子。程序运行图如下:文章目录#功能点其实大家来看博客,就是来看有啥功能,能ctrl + C加ctrl + V到自己项目里的,至于原理,有兴趣的同学可以自己去看看Qt源码,所以这里就主要讲一下本例有什么功能:数据动态更新。例子里是定时器,定时更新一个正弦波。 放大缩小。通过鼠标滚轮实现图像放大缩小功能。 比例复原。当你不小心把图像弄丢..
2020-10-21 22:42:18 1737
原创 QT学习:QTcpServer多线程实现
QTcpServer多线程实现目的:每个客户端连接的tcpSocket分别分配一个专门的线程来处理。实现时分别继承QTcpServer和QTcpScoket实现出自己需要的类。继承QTcpServer为每个客户端连接时分配线程,并接受处理tcpScoket的信号和槽、、还有发送信息,储存连接信息等。继承QTcpScoket为处理通信数据和增加信号的参数,以便和tcpServer更好的配合。首先是继承并重写QTcpServer的incomingConnection函数去自己实现tcpsoc
2020-10-21 21:55:49 4121 1
原创 github学习:Github desktop版本教程
文章目录GitHub桌面版的操作 1 下载GitHub桌面版 2 安装 3 github客户端的使用 3.1创建库 3.2修改文件 3.3提交版本conmmit 3.4同步到云端publish 3.5 Github主页上查看Test 4总结 GitHub桌面版的操作GitHub桌面版对于个人用户非常方便,不用去记忆那么多的命令,只需要懂得一些概念,然后点击界面即可。1 下载GitHub桌面版下载客户端,这里推荐大家...
2020-10-21 20:39:09 633
转载 Qt学习:QTimer
简述QTimer类提供了重复和单次触发信号的定时器。QTimer类为定时器提供了一个高级别的编程接口。很容易使用:首先,创建一个QTimer,连接timeout()信号到适当的槽函数,并调用start(),然后在恒定的时间间隔会发射timeout()信号。注意:当QTimer的父对象被销毁时,它也会被自动销毁。|版权声明:一去、二三里,未经博主允许不得转载。详细说明在Qt之模拟时钟中,1秒(1000毫秒)更新一次:QTimer *timer = new QTimer(this.
2020-10-21 17:50:52 2086
原创 外传篇 6 - 从字节流装配文本协议对象------------------狄泰软件学院
1.如何将接收缓冲区中的数据装配成协议对象上一节中提到的unserialize函数用于将一个符合协议规则的字符串装配成为一个协议对象。可是在实际工程开发过程中可能会是一个问题:接收缓冲区中的数据一定是满足协议的定义规则吗? 答案是:不一定2.如果接收缓冲区中的数据不满足协议规则能否将其装配成一个协议对象接收缓冲区中的数据足够 如果数据量足够是否能够装配成不只是一个对象? 剩下的数据如何处理(属于下一个协议对象)? 数据量不足 是否达到协议最小长度(8字节)? 如何处理数据量超.
2020-10-20 19:25:19 200
原创 外传篇 5 - 文本协议的设计与实现------------------狄泰软件学院
1. 发送缓冲区和接收缓冲区的概念缓冲区:暂存数据的内存空间 发送缓冲区:数据先进入发送缓冲区,之后由操作系统发送到远端主机 接收缓冲区:远端数据被操作系统接受后放入接收缓冲区2. 数据粘黏问题接收端无法知道数据的发送方式。3. 应用层协议网络程序设计中期望 每次发送一条完整的消息,每次接收一条完整的消息(发送和接收都是以一条完整的消息为单位进行) 即使接受缓冲区中有多条消息,消息之间有明显的界限,不会出现消息粘粘 消息中增加一...
2020-10-20 19:21:39 202
原创 外传篇 4 - TCP 服务端编程------------------狄泰软件学院
一、TCP 服务端编程二、TCP 服务端编程类的调用三、TCP服务端编程介绍四、QTcpServer的使用方式五、注意事项六、服务端和客户端的交互流程七、示例ServerDemo.cpp#include "ServerDemo.h"#include <QHostAddress>#include <QTcpSocket>#include <QObjectList>#include <QDebug>
2020-10-20 19:15:43 199
原创 外传篇3、 TCP 客户端编程------------------狄泰软件学院
1.Qt中TCP客户端编程对Qt编程而言,网络只是数据传输的通道; Qt提供了QTcpSocket类(封装了TCP协议细节); 将QTcpSocket的对象当做黑盒使用,进行数据首发。1.1QTcpSocket类的继承1.2QTcpSocket的使用连接服务器主机(connectToHost()) 发送数据/接受数据(write()/read()) 关闭连接(close())1.3QTcpSocket的注意事项默认情况下,QTcpSocket使用异步编程的方式 操作完成
2020-10-20 19:03:40 302
原创 学习:通用软件滤波算法-算术平均滤波法
一、处理思想连续采集N组数据,进行算术平均值计算,作为本次数据有效值二、算法实现 #define TARGET_tYPE int #define N 10TARGET_tYPE ADDER = 0; TARGET_tYPE Arithmetic_mean_FILTER(){ for(int i = 0; i < N; i++) { ADDER = ADDER + get_data(); } return (ADDER/N);}
2020-10-20 18:41:01 797
原创 学习:通用软件滤波算法-中值滤波
一、处理思想采集N个数据(N为奇数),排序后取中值,作为本次采集的有效值。排序算法此处采用快速排序。二、C实现#include<stdio.h>#include<stdlib.h>#include <time.h> #define TARGET_tYPE int //数据采集函数TARGET_tYPE get_data(){ //随机数 srand(time(NULL)); return rand()%31;
2020-10-20 18:38:59 413
原创 学习:通用软件滤波算法-限幅滤波法
一、处理思想设置前后两次数据可允许的最大偏差VARIATION_RANGE,每当有新数据到来时和上一个数据进行比较,若在允许偏差范围内,则本次数据有效,反之则无效,使用上一次数据值代替本次数据。函数设计输入参数:上一个数据,当前采集数据函数输出:当前有效数据二、C语言实现/** 文件名:Filtering_algorithm.c* 作者:JYU_hsy* 描述:前10种为常见滤波算法,较为基础;11为论文<基于无线传感网的弱势群体身体信息监测系统的设计>提到.
2020-10-20 18:37:41 609
原创 学习:通用软件滤波算法-前序
一、前言之前使用DS18B20采集温度数据,查看后台数据突然发现了下图的结果由上图得,采集到得温度产生了大于10°C的跳变,而且是到零下,这在室内环境下不可能发生。也就是说,传感器受到了某些干扰,使得采集数据有误。为此,采用软件滤波得方法减少出错得概论。二、常见滤波算法1、限幅滤波法(又称程序判断滤波法)2、中位值滤波法3、算术平均滤波法4、递推平均滤波法(又称滑动平均滤波法)5、中位值平均滤波法(又称防脉冲干扰平均滤波法)6、限幅平均滤波法7、一阶滞后滤波法
2020-10-20 18:36:09 260
原创 学习:通用软件滤波算法-递推平均滤波法
一、处理思想回顾一下算术平均滤波法的处理思想:采集N组数据求算术平均值作为单次数据的有效值。假设N为10,采集某组数据时,若第2次采集时环境已发生较大变化,而我们需要再采集8次数据,才能将数据变化反映到有效值上。可以看出改算法的实时性较差。而当N取不同值时,大致有一下规律:N↑ 实时性↓ 滤波平滑度↑为了解决实时性问题,有一种改进算法:递推平均滤波法其处理思想是:设置一个长度为N的队列,将采集到的数据放到队尾,同时丢弃队首数据;以保证队列中的N个数据都为最新数据。再...
2020-10-20 18:35:14 953
原创 QT移植:银河麒麟(Kylin)完整移植Qt5.9.2, 包含QCharts和QML等全部模块
最近项目接触到国产飞腾服务器,搭载的是我们国家自主的银河麒麟操作系统,系统自带Qt5.6,只有widget那套框架,没有QML也没有QCharts,因此尝试重新编译一个较新和稳定的Qt版本,所以选择了Qt5.9. 在此记录一下, 以便将来再用。Qt源码内的README文档已经把编译安装步骤写得很详细,出了问题第一时间对照文档是否有遗漏或疏忽。一、 准备工作 1、官网下载Qt源码,Qt Creator源码。 http://download.qt.io/archive/qt...
2020-10-17 11:48:17 2638
转载 QT移植:超详细Qt5.9.5移植攻略
导语:目前启扬智能默认提供的Qt版本是4.8,但是现在已经发展到最新的5.9版本。当现有版本的Qt库不能满足实际开发需求时,则需要进行Qt移植。本文就来介绍下如何将Qt5.9.5移植到ARM开发板上。以启扬imx6开发板为例,使用Ubuntu14.04虚拟机作为移植环境。下面跟着我左手右手一个慢动作,开始吧!一、准备工作1、主机环境:Ubuntu14.04;开发板:启扬IAC-IMX6-kit;(如果使用的是Ubuntu12.04,需要将gcc升级到4.8以上)..
2020-10-17 11:47:18 2027
原创 QT移植:i.mx6q 移植Qt5.9.1(完美支持opengl、Qt quick2、QML)
下面就分享下如何打造一个能流畅运行QML的i.mx6Q开发板环境。本人环境如下: 飞凌i.mx6Q开发板,这个板子的Linux系统太老了,很多东西没有,像SD卡升级内核这种后期工厂批量生产的方式就不支持,早知道买NXP官网的了(好像淘宝有另一家用的是新内核)。 开发板图片 Linux 3.0.35内核,就因为是这个老版本,导致多做了些工作,后面有说。 U-Boot 2009.08 Ubuntu 14.04 64位 准备工作官网下载Qt5.9.1.
2020-10-17 11:44:53 2764 1
原创 QT学习:给label添加图片资源
方法一:首先,要在项目里添加一个资源文件。然后给资源文件添加前缀,把我们自己的图片拷贝进去。此处右击可以拷贝图片路径在ui设计界面添加一个label,起名为labelpicture。MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); ui->labelpicture-&.
2020-10-16 11:25:13 16422 4
原创 第八十五课、多线程与界面组件的通信(下)------------------狄泰软件学院
一、多线程与界面组件的通信1、子线程更改界面组件状态的本质(1)、子线程发射信号通知主线程界面更新请求(2)、主线程根据具体信号以及信号参数对界面组件进行修改2、另一种子线程通知主线程的方式 :发送自定义事件(1)、自定义事件用于描述界面更新细节(2)、在主窗口类中重写事件处理函数event(3)、使用postEvent函数(异步方式)发送自定义事件类对象(抛到应用程序的事件队列,然后分发出去)A、子线程指定接收消息的对象为主窗口对象B、在event事件处理函数中更新
2020-10-15 11:24:04 270
原创 第八十四课、多线程与界面组件的通信(上)------------------狄泰软件学院
一、多线程与界面组件的通信1、GUI设计原则(1)、所有界面组件的操作都只能在主线程中完成(2)、因此,主线程也叫UI线程2、子线程对界面组件进行更新的解决方案-----信号与槽(1)、在子线程类中定义界面更新信号(updateUI)(2)、在窗口类中定义更新界面组件的槽函数(setInfo)(3)、使用异步方式连接更新信号到槽函数(updateUI--->setInfo)A、子线程通过发射信号的方式更新界面组件B、所有界面组件对象只能依附主线程MyThr.
2020-10-15 09:17:35 205
原创 第八十三课、另一种创建线程的方式------------------狄泰软件学院
一、历史的痕迹1、注意(1)、面向对象的程序设计实践的早期工程中习惯于通过继承的方式扩展系统的功能2、现代软件架构技术(1)、尽量使用组合的方式实现系统功能(2)、代码中仅体现需求中的继承关系3、通过继承方式实现新的线程类的事实(1)、线程子类仅保护void run()函数不同,接口部分完全相同4、结论(1)、通过继承的方式实现多线程没有任何实际意义(只是为了得到线程入口而已)(2)、QThread对应于操作系统中的线程(3)、QThread用于充当一个线
2020-10-15 09:09:27 230 1
原创 第八十二课、线程的生命周期------------------狄泰软件学院
一、线程的生命周期1、一个工程中的实际(1)、c++对象有生命周期(2)、线程也有生命周期(3)、工程实践中的经验准则要想办法保证:线程对象(QThread对象)的生命周期>对应线程的生命周期问题代码:在栈中定义局部线程对象 t.start()后继承向下执行,然后线程对象销毁,里面的成员变量 i 也销毁,但是run()还未结束,就会操作一个被销毁的对象,程序崩溃二、同步型线程的设计1、概念:线程对象主动等待线程生命周期结束后才销毁2、特点(1)、同时支...
2020-10-15 09:09:16 143
原创 第八十一课、信号与槽的连接方式------------------狄泰软件学院
一、深入信号与槽的连接方式1、深入信号与槽的连接方式(1)、Qt::DirectConnection : 立即调用(2)、Qt::QueuedConnection : 异步调用(3)、Qt::BlockingQueuedConnection : 同步调用(4)、Qt::AutoConnection : 默认连接(5)、Qt::UniqueConnection : 单一连接2、小知识(1)、信号与槽的连接方式决定槽函数调用时候的相关行为3、知识回顾(1)、每一个线程
2020-10-14 17:51:24 284
原创 第八十课、多线程中的信号与槽(下)------------------狄泰软件学院
一、线程体函数开启了事件循环,线程如何正常结束1、QThread::exec()使得线程进入事件循环(1)、事件循环结束前,exec()后的语句无法执行(2)、quit()和exit()函数用于结束事件循环(3)、quit() <---->exit(0),exec()的返回值由exit()参数决定2、注意(1)、无论事件循环是否开启,信号发送后会直接进入所依附线程的事件队列(2)、然而,只有开启了事件循环,对应的槽函数才会在线程中被调用二、什么时候需.
2020-10-14 15:17:47 172
原创 第七十九课、多线程中的信号与槽(中)------------------狄泰软件学院
一、对象的依附性1、对象依附于哪个线程?(1)、默认情况下,对象依附于自身被创建的线程(如对象在主线程main()函数)中被创建,则依附于主线程)2、对象的依附性与槽函数执行的关系?(1)、默认情况下,槽函数在对象所依附的线程中调用执行3、对象的依附性是否可以改变?(1)、QObject::moveToThread用于改变对象的线程依赖性,使得对象的槽函数在依附的线程中被调用执行MyObject.h#ifndef MYOBJECT_H#define MYOB.
2020-10-14 15:10:54 199
原创 第七十八课、多线程中的信号与槽(上)------------------狄泰软件学院
一、多线程中的信号与槽1、QThread类拥有发射信号和定义槽函数的能力(因为QThread继承自QObject)(1)、关键信号A、void start():线程开始运行时发射该信号B、void finished():线程完成运行时发射该信号C、void terminated():线程被异常中发射该信号TestThread.h#ifndef TESTTHREAD_H#define TESTTHREAD_H#include <QThread>class .
2020-10-14 15:02:41 199
qnx spi库资源
2018-06-21
嵌入式Linux SPI总线应用编程.pdf
2018-04-02
iTOP4412-SDIO WiFi移植文档.pdf
2018-02-27
DDR区别与联系
2016-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人