- 博客(376)
- 资源 (17)
- 收藏
- 关注
原创 xilinx zynq ps端移植wxworks6.9系统
基于a board support package,选择xlnx_zynq7k BSP,编译工具链选择diab,勾选Enable WDB Target Agent,选择next下一步,VxWorks Image Project Multipage Wizard就配置完成。从the New VxWorks Image Project中,profile选择PROFILE_DEVELOPMENT,单击finish。project中选择open development shell打开vxworks脚本编译窗口。
2023-05-30 08:30:00 3419 5
原创 ZYNQ使用10G Ethernet Subsystem万兆网光通信
一,10G Ethernet Subsystem IP原理和硬件定义uiudp_stack是一个“黑盒子”负责处理 ARP 以及 UDP IP 通信协议,上层协议是用户实际收发的有效数据部分,“10G Ethernet Subsystem IP"核负责处理以太网数据通过GTX高速串行接口传输。SFP 屏蔽笼插入千兆 SFP 转 RJ45 电口或者光模块,SFP 信号定义如下图:二,10G Ethernet Subsystem IP 配置1,Ethernet Standa...
2021-11-19 00:32:13 5657 3
原创 复旦微ZYNQ EMIO控制PL LED
1,复旦微ZYNQ FPGA开发工具是Procise,ARM开发工具是IAR;2,它与xilinx ZYNQ不同的是,xilinx移植的是两个ARM CONTEX A9或者高端UTRASCALE 移植的是ARM CONTEX A53,复旦微移植的是四个ARM CONTEX A7;3,xilinx里面PL和PS共用下载器,复旦微PS要单独引出EMIO或者MIO接PS JTAG,且PS JTAG的复位信号接到ps_rst或gpio引脚单独复位;器件选择 fmql,package选择fcbga900
2021-11-18 23:57:25 5704 3
原创 ZYNQ axi uart16550 IP核扩展485接口使用
一,AXI UART 16550简介用于通用接收/发送异步传bai输信息的串口安装在一个称作“UART”的芯片旁边。PC机早期使用UART的型号是8250和16450,这两种型号都不能满足需要。目前普通的PC机使用的是16550的UART,最新型的UART是16650和16750,通常这样的芯片不安装在系统板上。UART16550除了拥有AXI UART Lite的全部功能外,还提供1.5bit和2bit停止位,在可配置波特率的基础上还可以使用外部时钟供给串口接收模块,经测试发现,其波特率可
2020-09-22 00:28:05 16571 15
原创 ZYNQ PL通过EMIO ETHE1外接PHY由GMII转RGMII
1,设置EMIO方式引出ETHE12,从GMII过度到RGMIIGMII:发送 gmii_tx_clk gmii_tx_d[7:0] gmii_tx_en gmii_tx_er接收 gmii_rx_clk gmii_rx_d[7:0] gmii_rx_dv gmii_rx_erRGMII:发送 tx_clk tx_d[3:0] tx_ctrl接收 rx_clk rx_d[3:0] rx_ctrl首先数据总线从时钟单边沿采样8bit转变为了双边沿采样4bit,从88E1
2020-07-29 11:10:59 15915 26
原创 ZYNQ PS-PL数据交互方式总结
一,中断二,IO方式:MIO EMIO GPIO三,BRAM或FIFO或EMIF(1)通过BRAM实现PL/PS之间交互PS 的配置如下图所示。使能 M_AXI_GP0 口,将 FCLK_CLK0 设为 100MHz,使能 PL 至 PS 的中断。AXI BRAM Controller IP 核连接 PS 的 M_AXI_GP0 口和 BRAM,完成 AXI 接口至 BRAM 接口的转换。添加BRAM,将BRAM设置为双口RAM,将PORTA与AXI B...
2020-06-29 18:09:57 16640 4
原创 嵌入式块设备内核驱动
释放磁盘扇区缓存。明确:linux系统分用户空间(用户态)和内核空间(内核态)分配一个gendisk结构体,队列request_queue_t,设置gendisk 结构体的成员注册 gendisk 结构体。用户空间的软件在运行的时候,CPU的工作模式为USER模式,这些软件在运行时,处于用户空间;运行用户空间的软件不能直接访问硬件外设的物理地址 如果要访问硬件外设,必须首先将硬件外设的物理地址映射到用户空间的虚拟地址上用户空间的软件不能直接访问内核空间的代码,地址和数据,用户空间和内核空间的访问必须通过
2020-06-22 23:38:31 1005
原创 ZYNQ 网络通信的四种实现方案
一,ZYNQ MIO以RGMII 接口连接外部PHY芯片实现LWIP网络通信。二,ZYNQ PS 的 ENET0/ENET1 通过 EMIO 的方式扩展至 PL,在 PL 中通过 RGMII 接口连接扩展子卡实现 LWIP 网络通信。在PL中搭建了1个AXI 1G/2.5G Ethernet Subsystem以及1个AXI Direct Memory Access IP 核。这两个 IP核均通过AXI 总线经S_AXI_HP0 口与PS 连接,PS 通过AXI 总线对其进行配置和控..
2020-06-22 11:34:29 15579 11
原创 powerPC4080制作启动文件和SSD读写测试
一,powerPC制作文件系统:1, 准备工作sudo mkdir /local/tftpboot/comx_p4080/ -pcd 4080/sudo cp ./opt/* /opt/ -rfcp COMX_P4080_SRC_V100R00 ~/ -rf(然后原来位置的文件夹就没有用了,或者看成剪切过去的)2,向文件系统中添加文件cd ~/COMX_P4080_...
2020-04-06 14:56:00 2012
原创 linux内核中断机制及中断驱动
1, 计算机为什么有中断机制? 由于外设的处理速度远远慢于CPU的处理速度 为了保证CPU和外设的数据通信正确,一般呢首先可能考虑使用轮询机制(轮询就是死等),如果轮询的时间过程长,会大大降低CPU的利用率(CPU不能干其他的事情,只能等待当前这个硬件)此时还可以考虑使用中断机制,当CPU发现设备没有准备就绪, CPU干其他的事情(比如做一个算法)一旦外设准备好了,外设会给CPU发...
2020-03-28 19:58:47 1139
原创 线扫激光算法原理
一:线扫激光算法原理激光器发出的激光束经准直聚焦后垂直入射到物体表面上,表面的散射光由接收透镜成像于探测器的阵列上。光敏面于接收透镜的光轴垂直。如图:当被测物体表面移动x,反应到光敏面上像点位移为x’。a为接收透镜到物体的距离(物距),b为接收后主面到成像面中心的距离(一般取焦距f),θ为激光束光轴与接收透镜之间的夹角。D为激光光束轴到透镜中心的距离。接收透镜的焦距为f,其余的参数如下图:...
2020-03-12 00:17:07 14178 9
原创 ZYNQ petalinux系统启动文件固化到FLASH
首先明确:petalinux启动文件从FLASH启动系统,也就是将启动文件放入FLASH中。1,vivado配置:2,导入硬件后配置petalinux source /opt/Xilinx/Vivado/2017.4/settings64.sh source /opt/pkg/petalinux/settings.sh petalinux-create --type...
2020-03-10 23:54:53 7487 4
原创 ZYNQ使用AXI_Ethernet编译系统扩展多网口
1,使用内核版本4.9:linux-xlnx-xilinx-v2017.4(1)petalinux-create --type project --template zynq --name lwip 进入lwip文件夹执行:petalinux-config --get-hw-description your_wapper.hdf ,导入硬件。...
2020-03-10 00:33:18 10595 5
原创 QT鼠标事件和按键事件
但也需要注意的是,由于QApplication::postEvent()是基于事件循环的机制进行处理的,所以它并不是实时的,可能会存在一定的延迟。QApplication::sendEvent()和QApplication::postEvent()都是Qt中用于发送事件的函数,它们之间的区别在于事件的处理方式。QApplication::sendEvent(target, event)是直接将事件event发送给目标target,并阻塞当前线程等待目标处理完事件后再继续执行,这个过程类似于一个同步调用。
2024-03-29 09:00:00 95
原创 QT控件之输入窗口控件
义的范围内控制一个值,并且该范围要么是环绕的(例如,从0到359度测量的角度),要么对话框布局需要一个正方形小部件。当 wrapping()为 false(默认设置)时,滑块和刻度盘之间没有真正的区别。QScrollBar 小部件提供垂直或水平滚动条,允许用户访问比用于显示文档的小部件大的文档部分。(12)QDateTimeEdit 类提供了一个用于编辑日期和时间的小部件。(8)QSpinBox允许用户通过单击上/下按钮或按下键盘上的上/下按钮来选择一个值,以增加/减少当前显示的值。用户还可以手动输入值。
2024-03-29 00:15:00 443
原创 QT TCP和UDP网络编程
代表网络概念的QTcpSocket,QTcpServer和QUdpSocket,以及QNetworkRequest,QNetworkReply和QNetworkAccessManager之类的高级类来执行使用通用协议的网络操作。在网络应用中,经常需要用到本机的主机名、IP地址、MAC地址等网络信息,Qt提供了QHostInfo和QNetworkInterface类用于此类信息查询。在程序中使用Qt网络模块,需要在pro项目配置文件加入:QT += network。
2024-03-28 18:56:13 78
原创 QT QInputDialog弹出消息框用法
void open(QObject *receiver, const char *member):打开输入对话框,并将指定的对象(receiver)和成员函数(member)连接起来,以响应对话框中的操作。void setOption(InputDialogOption option, bool on = true):设置输入对话框的选项,如是否显示取消按钮、是否可编辑等。void setDoubleDecimals(int decimals):设置双精度浮点数的精度,即小数点后的位数。
2024-03-28 16:09:57 119
原创 QT布局管理和空间提升为和空间间隔
QFormLayout提供了将输入部件和标签成组排列的布局管理;QGridLayout获取可用的空间(通过其父布局或parentWidget())),将其分为行和列,并将其管理的每个小部件放入正确的单元格中。由于网格布局管理器中的组件也是会随着窗口拉伸而发生变化的,所以也是需要设置组件之间的比例系数的,与QBoxLayout不同的是网格布局管理器还需要分别设置行和列的比例系数。QBoxLayout获取从它的父布局或从parentWidget()中所获得的空间,将其分成一列框,并使每个托管小部件填充一个框。
2024-03-26 16:43:32 256
原创 QT数据类型和容器用法
可以使用 isEmpty() 测试列表是否为空,并且可以调用诸如append(),prepend(),insert(),replace(),removeAll(),removeAt(),removeFirst(),removeLast()和removeOne()之类的函数来修QStringList。QVector使用的是连续的内存空间,针对不改变的对象,即只要求查询,不做插入删除等操作效率高,但是由于自身结构的原因,插入删除甚至包括追加等操作的效率会比QLIst低。个可复制的构造函数和一个赋值运算符。
2024-03-26 08:30:00 1712
原创 QT事件机制
在event()函数中我们可以设置是否接收事件,QEvent类中有accept()函数,表示接收事件并对事件进行处理,ignore()函数,表示不接收该事件。QWidget类是所有窗口类的基类,它重新实现了event()函数,并对一些典型的事件定义了专门处理函数,event()函数会根据事件的类型自动去运行相应的事件处理函数,这些处理函数是pro-tected virtual, 不能被外部调用,但可以被派生类重新实现。事件就是对象,派生自QEvent抽象类,事件的产生,就是创建一个对象。
2024-03-24 15:21:01 818
原创 QT控件之显示控件
(10) QQuick Widget:嵌入式QML工具。(7) Horizontal Line水平线。(4) Calendar Widget日历。9,设置标签的伙伴控件,用于实现键盘快捷键。10,连接此信号以在链接被点击时执行操作。11,连接此信号以在链接被点击时执行操作。12,连接此信号以在链接被悬停时执行操作。(8) Vertial Line垂直线。6,设置文本显示格式,如纯文本、富文本等。7,设置文本交互标志,如可选中、可复制等。
2024-03-24 00:00:00 362
原创 QT文件读写操作和内容提取
对于GUI程序,应该用QGuiApplication,而对于采用了Qt Widget模块的程序,应该使用QApplication,例如:我们使用 Qt Creator 创建的Qt Widget Application都是基于QApplication。QFileInfo类提供与系统无关的文件信息,获取关文件在文件系统中的名称和位置(路径),以及文件的权限和文件类型,文件的大小和上次修改/读取的时间也通过接口获取。式,下面读取和写入文件,先使用QFile这种普通读写,然后转成数据流或者字节流读取,这样。
2024-03-23 16:23:31 991
原创 ubuntu arm qt 读取execl xls表格数据
下载地址:https://sourceforge.net/projects/xlslib/确保你已经安装了基本的编译工具,如gcc和make。下载地址:http://sourceforge.net/projects/libxls/这将编译libxls库并将其安装到系统默认的位置。2,交叉编译xlslib(写xls文件 ARM版)三,加入libxls和xlslib到linux qt中。1,安装libxls(读取xls文件 ARM版)1,安装libxls(读取xls文件 电脑版)编译和安装libxls。
2024-03-23 11:55:59 290
原创 QPainter绘图和QChart图表和QCustomplot绘曲线图
Qt里的所有绘图,比如一个按钮和一个Label的显示,都有绘图系统来执行。绘图系统基于 QPainter、QPaintDevice和QPainEngine类。QPainter是可以直接用来操作绘图的类,而 QPaintDevice和QPainEngine都比QPainter更底层,我们只需要了解一下QPaintDevice和 QPainEngine就行了,用下面一张图来表示它们的关系。用于显示的类,如 Widget、QPixmap、QImage、Qlabel等可视类控件都可以充当绘图区域的“画布”,从 Q
2024-03-22 23:01:31 852
原创 QT tableWidget横向纵向设置
每当QTableWidgetItem的状态发生变化时,itemChanged信号就会被发射,然后连接的lambda函数会被调用,检查该项是否被选中,并输出相关信息。只要把tabPosition的属性改一下就可以了,改到你想要的位置,这时候如果有文字,文字的显示并不是竖排的,可以设置一下tab里的text的文字属性,具体语句可以查看一下帮助文档,也可以贴图,这里我直接通过设置Stylesheet样式表,直接重绘了一下tab标签页的样式,应用在tabBar上统一实现的。//str2 ="学生姓名,男"
2024-03-22 11:50:54 442
原创 Qt读取本地系统时间的几种方式
功能为根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放maxsize个字符。该函数返回向strDest指向的字符串中放置的字符数。typedef struct _SYSTEMTIME //SYSTEMTIME结构体定义。//星期,0为星期日,1为星期一,2为星期二……WORD wMinute。WORD wYear。WORD wHour。
2024-03-21 19:26:00 194
原创 QT信号和槽机制connect用法
在Qt信号槽中使用自定义类型,在不跨线程时使用自定义类型signal/slot来传递,可能不会出现什么问题,一旦涉及跨线程就很容易出错(即文章开头出现的错误)。,以及一些我们自定义的结构体时,在尝试触发某个信号时程序崩溃或者报错:QObject::connect: Cannot queue arguments of type 'xxx'(Make sure 'xxx' is registered using qRegisterMetaType().)。之类的,但当我们想要传递相对比较复杂的参数,例如。
2024-03-21 13:52:35 381
原创 QT增加线程函数步骤流程
(5) 在主界面cpp文件中连接信号和槽,用于接收子线程传递过来的数据,这里的信号是自定义的信号,参数是非基本类型,所以需要对信号进行注册。5,子线程只能处理数据,不能直接在子线程操作界面(否则会崩溃),如果想要操作界面,需要将子线程的数据传递给界面主线程进行操作,这样就用到了我们信号和槽,子线程和主线程之间传递参数。6,线程运行完毕,需要安全退出(线程异常退出有可能导致崩溃),这里安全退出有两种方式,一种是标志位,一种是通过检查线程运行状态,通过quit,wait来实现,这里我们用第二种方式退出线程。
2024-03-20 17:27:54 868
原创 使用modinfo对比内核版本号
例如,modinfo -k 5.4.0-91-generic mymodule。模块名称是modinfo命令的必需参数,应该提供有效的模块名称作为命令的参数。如果要查询的模块不在默认的模块目录中,可以使用-d选项指定模块所在的目录。例如,modinfo -d /path/to/modules mymodule。使用-b选项可以只显示模块文件的基本名称,而不显示完整路径。例如,modinfo -0 -F description,author mymodule | xargs -0 echo。
2024-03-04 18:00:11 235
原创 ubuntu+QT+ OpenGL环境搭建和绘图
编译和链接OpenGL程序:写完OpenGL程序,你g++ application.cpp -o application `pkg-config --cflags --libs opengl`使用以下命令来编译和链接。安装OpenGL依赖项:运行sudo apt install libgl1-mesa-glx命令安装OpenGL所需的一些依赖项。安装OpenGL头文件:运行sudo apt install libgl1-mesa-dev命令来安装OpenGL的头文件。一,安装OpenGL库。
2024-02-27 09:58:42 573
原创 vitis dpu kernel编译和docker环境搭建
进入Vitis-AI目录下的docker文件夹,运行该目录下的dpu-compiler-docker-install.sh, 该脚本会将Vitis-AI Docker 的可运行的镜像直接下载到本地,大小为10GB左右,所需时间取决于网络环境。执行完毕后,会在.elf 文件所在的位置生成在目标板运行yolov3所需的.so文件(DPU Kernel 文件),将其拷贝至实验工程目录下的code/deploy_in_board/Alinx_DNN/ tf_yolov3_vehicle_deploy/。
2024-02-23 23:56:01 237
原创 openGL绘制图形
接下来,通过glCreateProgram函数创建着色器程序对象,使用g1AttachShader函数将顶点着色器和片段着色器附加到着色器程序对象上,使用glLinkProgram函数链接着色器程序,使用glUseProgram函数激活着色器程序。首先,定义绘制图形的函数(在OpenGL的绘制回调函数中调用)和OpenGL的初始化函数(用来设置OpenGL的参数和状态)。在OpenGL中,可以回调函数处理用户输入事件,如键盘事件和鼠标事件和上下左右。主函数用来创建窗口和注册OpenGL的回调函数。
2024-02-18 16:04:22 131
原创 安装ubuntu双系统步骤
7,这里不要选择Chinese,不断往下面拉,选择汉字版本的中文简体和安装ubuntu。安装类型选择最底下的:其他选项,宁可以自己创建,调整分区或者位ubuntu选择多个分区。分区下拉,找最大空闲的那个,也就是空闲566232M的那个,因为我压缩分区也是这个大小。安装好了,开机选择系统,开机第一个是ubuntu系统,第三个win系统。选择两个Chinese,下面的检测键盘布局不要乱按,然后点继续。3,关机,按F2,然后选择第三条enter step进入。6,按F10,然后按回车,相当于保存退出了。
2024-02-18 13:58:36 124
原创 内存块与内存池
(4)如果从现有的内存块中找不到一个自由的内存分配单元(当第1次请求内存,以及现有的所有内存块中的所有内存分配单元都已经被分配时会发生这种情形),MemoryPool就会从进程堆中申请一个内存块(这个内存块包括一个MemoryBlock结构体,及紧邻其后的多个内存分配单元,假设内存分配单元的个数为n,n可以取值MemoryPool中的nInitSize或者nGrowSize),申请完后,并不会立刻将其中的一个分配单元分配出去,而是需要首先初始化这个内存块。相反,它只维护没有分配的自由分配单元的信息。
2024-02-17 20:50:18 937
原创 ubuntu安装搜狗输入法
sudo apt-get remove ibus 清除ibus配置。需要卸载的话 :sudo apt-get purge sogoupinyin。搜狗输入法打不出中文,缺少依赖,依次安装输入法依赖。根据个人需要卸载顶部面板任务栏上的键盘指示。
2024-02-04 18:32:13 239
原创 sdk开发linux应用程序和vitis开发linux应用程序
工程名填写“linux_app”,工程类型选择Others文件夹里面“Xilinx ARM v8 GNU/Linux Executable”“platform project name”栏输入平台工程名“linux_platform”,其他保持默认,next进入下一页面。设备树模板xilinx官方设备树模板的地址:https://github.com/Xilinx/device-tree-xlnx。使用vitis开发Linux应用程序,explorert空白处点击右键“New -> Project…
2024-02-01 10:05:17 119
原创 petalinux2022.2启动文件编译配置
petalinux2021之前的版本里,导入目录components/yocto/下的“environment-setup-aarch64-xilinx-linux” 和 “layers/core/oe-init-build-env”的环境,能使用Yocto的devtool工具。(加入下面内容,先petalinux-build下载完成后才能有源码)制作 BOOT.BIN 启动文件:petalinux-package --boot --fsbl --fpga --u-boot --force。
2024-01-30 22:20:52 144
原创 交叉编译bluez-5.66
monitor/btmon.rst,tools/hciconfig.rst,tools/hciattach.rst,tools/iostest.rst,tools/btattach.rst每个文件中出现1-4处的修改,将auto改为10 10。处理办法:直接删除tools/isotest.rst:75下面的 :align: left这一句。这里是因为,列数不匹配,要输入对应列数的数值。要输入具体的数值,所以这里将auto改为10,10。二,编译:sudo make -j4进行编译。
2024-01-20 18:10:05 687
原创 RK3566环境搭建和烧写方式
第二种,进入uboot或小系统之后,有对应的命令行rbrom或reboot loader,工具端检测到loader模式后,从loader模式切入maskrom模式。3、烧录的镜像如uboot、updateimg等也需要版本对应,另外注意有的开发板厂家在uboot层面配置了keys(加密),比如ZLG,这个时候需要第三方的sdk编译镜像;1、normal模式:正常的启动模式,这个模式无法刷固件,一般板子通电就是这个模式;2、loader模式:刷固件模式,这个模式可以刷各种image;获取SDK前需要安装。
2024-01-09 23:45:18 1445
原创 动态内存分配,引用和类型转换
1)可以将函数返回类型声明为引用,避免函数返回值带来的内存开销,如果一个函数返回类型被声明为引用,那么该函数的返回值就是一个左值。2)引用参数可能意外修改实参的值,如果不希望修改实参本身,可以将形参定义为常引用,提高传参的效率同时还可以接收常量型的实参。1)可以为函数的部分或全部参数指定缺省值,调用该函数时,如果不给实参,就取缺省值作为相应的形参值。1)引用用于函数的参数,可以修改实参的值,可以减小函数调用的开销,避免虚实结合过程中对实参的复制。//error,C++2011中叫右值引用。
2023-12-19 18:23:19 1635
线程加锁程序,pthread-mutex-t
2022-10-18
基于udp协议的通信模型udpServer.c和udpClient.c
2022-10-18
阻塞IO驱动代码和makefile
2022-10-16
AsynchronousIO,异步IO驱动代码和makefile
2022-10-16
非阻塞IO驱动和makefile
2022-10-16
PL-PS的中断驱动程序,带makefile
2022-10-16
vivado(2014+2016+2017+2018+2019+2020都能使用) SRIO licence
2022-10-16
ZYNQ AD9361的裸机SDK配置代码
2022-10-15
QPSK调制解调代码MATLAB仿真
2022-10-15
BPSK调制解调MATLAB代码
2022-10-15
16QAM 是正交移幅键控调制
2022-10-15
单载波频域均衡(SC-FDE) 的设计
2022-10-15
2PSK调制解调原理,MATLAB代码
2022-10-15
2FSK调制解调实验,MATLAB代码
2022-10-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人