![](https://img-blog.csdnimg.cn/13f8602d0d804bd28a98940c10490ebd.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
ZYNQ数据采集传输系统
如果需要本项目的源码资源或将本项目用于商业用途,请添加微信公众号《嵌入式Linux开发》进行详谈。本项目是本人和另外两个同事共同开发完成,已经验收交付使用。通过本项目可以学习到整个嵌入式系统的开发流程。
优惠券已抵扣
余额抵扣
还需支付
¥99.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
→嵌入式Linux开发
专注于嵌入式Linux下的内核、驱动和系统软件开发。
承接嵌入式软硬件定制开发
展开
-
八、Linux后台服务程序开发(3)
InitSocket函数实现创建TCP服务监听socket,并通过setsockopt函数设置socket地址端口属性为可以重复绑定,这样当socket关闭后bind函数可以绑定释放的地址端口而不报错。Bind函数首先初始化sockaddr_in结构体,赋值端口号和IP地址,然后通过bind函数实现socket套接字和sockaddr_in结构体的绑定。Close函数用于关闭已经打开的监听socket套接字和和客户端通信用的socket套接字。原创 2023-05-15 09:30:00 · 65 阅读 · 0 评论 -
八、Linux后台服务程序开发(2)
8.4 buffer缓存设计buffer.hpp是缓存数据的buffer队列的实现文件,buffer队列主要考虑是通过预先分配好的内存来减少使用过程中申请内存对时间的浪费。buffer的构造函数通过malloc函数每次向系统申请RECV_BUF_SIZE大小的内存空间作为缓存使用,总共申请BUFFER_COUNT个RECV_BUF_SIZE大小的内存,buffer的析构函数会通过free函数释放申请的内存空间push函数首先获取buffer队列的尾指针,然后判断buffer队列是否已经满了,如果没有通原创 2023-05-12 19:41:20 · 101 阅读 · 0 评论 -
八、Linux后台服务程序开发(1)
broadcast.hpp是广播代码实现,InitSocket函数完成UDPsocket套接字的初始化,首先创建socket fd,然后初始化address结构体并绑定端口号8888,然后打开sd卡内存有广播起始IP地址的文件,最后获取板卡wifi芯片的IP地址和MAC物理地址。Close函数用于关闭已经打开的socket fd,关闭已经打开的文件描述符fd,SendBRD函数用于获取sd卡里面文件的IP地址,并向该IP地址发送板卡的wifi芯片的IP地址和MAC物理地址。原创 2023-05-11 11:00:00 · 341 阅读 · 0 评论 -
七、Linux设备驱动开发(4)
FPGA设备驱动卸载函数,通过platform_get_drvdata函数获取设备驱动结构体,通过free_irq释放已经申请的中断号,通过devm_iounmap解除寄存器地址的映射,通过device_destroy释放申请的设备节点,通过class_destroy释放申请的class类设备节点。原创 2023-05-10 10:30:00 · 69 阅读 · 0 评论 -
七、Linux设备驱动开发(3)
接着通过解析设备树文件获取FPGA寄存器的首地址并将首地址物理地址映射成虚拟地址,获取设备树中的FPGA设备驱动中断号,将FPGA写入数据的DDR的物理地址映射成虚拟地址,将FPGA设备驱动结构体加入内核device结构体的私有数据空间,通过request_irq函数向内核申请中断,并绑定中断处理函数和中断触发模式。接着初始化字符设备结构体,绑定字符设备操作函数结构体并将字符设备添加进内核空间,创建class类设备节点,创建device驱动设备节点。接着初始化内核等待队列头,申请内核fifo内存空间。原创 2023-05-09 23:36:09 · 54 阅读 · 0 评论 -
七、Linux设备驱动开发(2)
FPGA设备驱动数据写入函数,将用户空间函数读到的倾角传感器数据和GPS传感器数据写入FPGA指定的寄存器地址空间,FPGA会将这些传感器数据和其它传感器数据以及线阵相机数据按一定的格式共同组成完整的一帧数据。打开FPGA设备驱动函数,主要完成FPGA地址空间配置,线阵相机写触发间隔设置,线阵相机曝光精度设置,输出图像内容设置,线阵相机工作模式设置,线阵相机触发时间设置,最后使能FPGA逻辑开始进行数据采集。FPGA设备驱动数据据读取函数,将FPGA组好的数据帧从内核空间传输到用户空间。原创 2023-05-09 10:00:00 · 48 阅读 · 0 评论 -
七、Linux设备驱动开发(1)
新建fpga_driver目录用于存放fpga设备驱动代码,并将已经编写好验证过的fpga设备驱动源代码文件拷贝到fpga_driver目录。编写FPGA设备驱动Makefile文件用于自动编译fpga驱动代码文件,Makefile内容如下。使能FPGA逻辑,通过向FPGA提供的寄存器写入1通知FPGA开始工作,开始采集相机和传感器数据。以上内容都是一些驱动中定义的可以修改的参数,可以在驱动加载的时候给不同的参数指定不同的值。编写fpga设备驱动源文件fpga_driver.c,内容如下。原创 2023-05-08 09:30:00 · 123 阅读 · 0 评论 -
六、devicetree移植
修改zynq-7000.dtsi文件,增加fpga驱动设备节点,compatible对应的字符串是个人命名的匹配字符串,要和驱动中的匹配,reg对应的是fpga分配的寄存器首地址,interrupts对应的是fpga分配的中断号。修改system-top.dts文件,包含pl.dtsi,增加serial1和serial2节点,serial1连接的是GPS,serial2连接的是倾角传感器。新建pl.dtsi文件,内容如下,主要是添加了倾角传感器驱动,倾角传感器是通过uart来进行控制的。原创 2023-05-07 09:01:11 · 62 阅读 · 0 评论 -
五、根文件系统移植(2)
将ntfs-3g_ntfsprogs-2017.3.23.tgz文件拷贝到ubuntu14.04,ntfs3g库是为了在Linux系统下支持NTFS文件系统,Linux文件系统下默认是不支持NTFS文件系统的,需要通过添加开源库ntfs3g来支持NTFS文件系统。将系统/lib/modules目录下的3.17.0-xilinx目录拷贝到根文件系统下的lib/modules目录下,并删除不需要的3.6.0目录。将编译ntfs3g库生成的目标库文件拷贝到根文件系统的usr/lib目录下。原创 2023-05-06 15:19:54 · 69 阅读 · 0 评论 -
五、根文件系统移植(1)
在hostapd目录下新建两个目录libnl-1.1和openssl-1.0.1c,将之前编译完成后生成的libnl目标目录和openssl目标目录分别拷贝到libnl-1.1和openssl-1.0.1c目录下。修改Makefile文件,首先删除-m64相关的条目,-m64是针对64位二进制码的,如果不注释掉,在当前的编译环境下会报错。移植libnl-1.1,libnl库是hostapd库所依赖的,hostapd库是wifi热点会用到的。out目录下就是编译完成后生成的头文件和库文件。原创 2023-05-05 21:22:43 · 82 阅读 · 0 评论 -
四、kernel移植
配置修改完成后重新编译kernel,arch/arm/boot/目录下的uImage文件就是需要的内核文件。修改drivers/net/wireless/bcmdhd/Kconfig,修改固件和配置文件路径。配置kernel,先对kernel进行清理,然后基于zynq的基础配置生成.config配置文件。至此,kernel的修改配置编译完成了,主要是根据自己的项目需要添加无线和驱动支持。修改支持的ramdisk文件系统的大小。修改支持的压缩格式,去掉XZ压缩。添加80211配置支持。按空格键选中箭头所指。原创 2023-05-04 20:17:40 · 79 阅读 · 0 评论 -
三、u-boot移植
配置u-boot,zynq_zc702_defconfig是官方提供的zc702开发板的配置文件,由于我们的硬件也是基于zynq7020进行开发的,和zc702比较相似,所以这里以zc702的配置文件进行u-boot配置。u-boot-xlnx是xilinx官方维护的u-boot源码,本来应该从xilinx官方地址进行下载,由于速度比较慢,所以这里选择了从国内镜像网站进行下载。编译u-boot,利用之前搭建好的u-boot编译环境对u-boot进行编译。git工具是非常好用的版本管理工具和下载工具。原创 2023-05-03 08:57:58 · 106 阅读 · 0 评论 -
二、项目介绍
主处理器用的是xilinx公司生产的xc7z020CLG484,该芯片是属于xilinx公司的zynq系列。wifi芯片用的是AP6181,支持wifi热点功能,通过zynq处理器的sdio接口引出。GPS芯片用的是ATGM336H-5N,通过zynq处理器的UART接口引出。USB芯片用的是USB3320,支持USB2.0协议线阵相机芯片用的是DS90CR288AMTD,通过FPGA进行连接并采集相机的数据。拉绳传感器用的是MPS-XS-300mm-V1,通过ADS1118接入FPGA。原创 2023-05-01 19:08:09 · 216 阅读 · 0 评论 -
一、环境搭建(2)
VMwareTools可以方便windows系统和linux系统之间拷贝文件,可以直接通过鼠标拖拽的方式将需要传递的文件从Windows系统拷贝到Linux系统。配置环境变量,将交叉编译工具链导出,打开文件/etc/bash.bashrc在最后添加一行。配置环境变量,将交叉编译工具链导出,打开文件/etc/bash.bashrc在最后添加一行。通过命令行进入上图文件所在的目录/media/test/VMare Tools/执行如下命令,可以看到交叉编译工具命令已经生效。此编译工具用于编译u-boot。原创 2023-04-29 07:46:17 · 49 阅读 · 0 评论 -
一、环境搭建(1)
开发环境搭建原创 2023-04-28 18:16:58 · 62 阅读 · 0 评论