ZYNQ Linux
文章平均质量分 83
快跑bug来啦
这个作者很懒,什么都没留下…
展开
-
zynq操作系统:iperf的安装和使用
前言 网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理、网络存在安全漏洞等原因,都会导致网络带宽利用率不高。要找到网络带宽利用率不高的原因,就需要对网络传输进行监控,此时就需要用到一些网络性能评估工具,而Iperf就是这样一款网络带宽测试工具。方便好用,可移植性高一.功能介绍 Iperf能做什么? Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大原创 2022-04-08 20:00:00 · 1940 阅读 · 1 评论 -
国产之路:复旦微zynq调试笔记2--PL网口
复旦微FMQL PL侧网口踩过的坑原创 2021-12-31 10:40:04 · 5935 阅读 · 4 评论 -
zynq操作系统:DDR带宽测试
引言 个别时候,嵌入式设备的DDR除了常规的遍历读写和压力测试外,会有提供读写带宽的需求,下面介绍一种没有精确要求的测法,参考自http://github.com/raas/mbw 原理主要分三部分:memcpy(内存拷贝),dumb(字符拷贝),memblock(内存块)拷贝,通过计算拷贝指定内容的时间来得出内存拷贝速度,时间由系统函数gettimeofday()获得。gettimeofday(): 它获得的时间精确到微秒(1e-6 s)量级。在一段代码前后分别使用gettimeofday可原创 2021-12-30 18:29:50 · 3817 阅读 · 1 评论 -
国产之路:复旦微FMQL调试笔记1:PS网口
调试了一段时间,浅谈复旦微和xilinx之间的一点区别原创 2021-12-21 13:48:16 · 5070 阅读 · 1 评论 -
zynq操作系统: jffs2文件系统的错误异常
前言 JFFS2的全名为JournallingFlashFileSystemVersion2(闪存日志型文件系统第2版),其功能就是管理在MTD设备上实现的日志型文件系统。与其他的存储设备存储方案相比,JFFS2并不准备提供让传统文件系统也可以使用此类设备的转换层。它只会直接在MTD设备上实现日志结构的文件系统。JFFS2会在安装的时候,扫描MTD设备的日志内容,并在RAM中重新建立文件系统结构本身。 除了提供具有断电可靠性的日志结构文件系统,JFFS2还会在它管理的MTD设备上实现“损耗平衡”和“原创 2021-09-07 16:17:09 · 2489 阅读 · 0 评论 -
zynq操作系统: Linux下异步通知的应用
前言 在使用阻塞或者非阻塞的方式来读取驱动中某些值都是应用程序主动读取的,对于非阻塞方式来说还需要应用程序通过 poll 函数不断的轮询。最好的方式就是驱动程序能主动向应用程序发出通知,报告自己可以访问,然后应用程序在从驱动程序中读取或写入数据。 Linux 提供了异步通知这个机制来完成此功能异步通知简介 我们首先来回顾一下“中断”,中断是处理器提供的一种异步机制,我们配置好中断以后就可以让处理器去处理其他的事情了,当中断发生以后会触发我们事先设置好的中断服务函数,在中断服务函数中做具体的处理。,原创 2021-08-25 15:07:54 · 390 阅读 · 0 评论 -
zynq操作系统: Linux下Misc设备的添加应用
前言: Misc 的意思是混合、杂项的,因此misc设备也叫做杂项设备(杂散设备)。Linux系统中大多数设备都有自己归属的类型,例如按键、触摸屏属于输入设备,Linux系统有input子系统框架专门处理这类设备,同样的对于LED设备,有LED驱动框架专门处理LED设备;但是对于adc、蜂鸣器等设备,无法明确其属于什么类型,所以一般把这类设备归属为 misc 设备,对misc设备一般推荐使用misc驱动框架编写驱动程序。MISC 设备驱动简介 所有的 MISC 设备驱动的主设备号都为 10,不同的原创 2021-08-25 14:56:00 · 438 阅读 · 0 评论 -
zynq操作系统 : Linux下LHB155304测试用例
前言 第一种情况的改进和第三种情况,都可以在应用层来做 比如我们可以设置快速读写模式fastmode,在应用层调用这个函数open时,配置寄存器屏蔽掉其他子地址的中断,直接源头上减少信号量,提升操作系统处理效率,退出时在close,恢复正常的配置,以免影响其他业务流程使用 而高频率数据偶尔出现的读写错误,处理PL测对读写时序的修改,也可以通过多读几次数据判断筛选,大大降低错误概率,(目前没有发现过规避后的出错,但是源头上还是需要在FPGA部分更改读写时序) 另外还有个驱动开发时需要注意的是:原创 2021-08-23 17:20:56 · 566 阅读 · 1 评论 -
zynq操作系统: Linux下LHB155304驱动编写
前言 终于腾出手来整理最后升级的1553应用了,作为最底层最需要稳定和安全的保障,对于裸板开发的从0-1,操作系统下的改进几乎相当于1-50了,当然核心思想还是对寄存器的配置以及对内存空间的划分,只是更需要考虑到操作系统调度,操作系统的反应能力以及单一测试工程和最后整体应用中存在差异的情况: 印象里比较深刻的比如裸板的中断及反应能力远远大于操作系统,需要在上层应用中通过对寄存器进行不同于常规的特殊配置来规避过多的消息处理,也就是比如有个流程需要将数据分别存进5-12的子地址,正常来说每个子地址都会收原创 2021-08-23 17:05:50 · 1073 阅读 · 1 评论 -
zynq操作系统:Linux打实时补丁preempt_rt
1下载内核和补丁 运行uname -a可以看到当前内核版本。 补丁地址: https://www.kernel.org/pub/linux/kernel/projects/rt/ 从中选择一个与当前内核版本接近并且更新的补丁下载(系统启动时会自动选择版本更高的内核) 内核地址: http://www.kernel.org/pub/linux/kernel/ 根据下载的补丁版本下载内核,内核版本要和补丁一致。下面以linux-4.14.0内核(xilinx)与patch-4.14.0-rt原创 2021-07-28 18:14:39 · 5036 阅读 · 12 评论 -
zynq操作系统: Linux驱动开发串口波特率 非标准波特率 10mb
前言 上一篇解决了常用的波特率的设置,但是实际使用中,总会遇到些奇葩的甚至串口工具都无法帮到忙的的波特率,比如10兆?研究非标准的波特率时误打误撞,再加上一个残暴的解决办法,终于是给强行凑出来了(Linux内核版本4.14.0)第一步:内核部分需要改3处,相关文件共两个 分别是drivers/tty 目录下 tty_baudrate.c,和/include/uapi/asm-generic 目录下 termbits.h第一处,打开 sparc 宏定义( tty_baudrate.c) 在上原创 2021-04-21 18:10:12 · 2041 阅读 · 8 评论 -
zynq操作系统:Linux驱动开发AXIDMA补充篇 多路DMA
上一篇的一路双通道DMA的正常收发已经成功实现了,但是实际使用的时候大概率会挂载多路dma,那么我们调用的这个模块能不能支持多路的dma便是第一个要解决的问题 首先阅读初始化部分的代码,自然有了第一个猜测,增加多路设备时,在dev目录是否可以生成多个axidma设备?即使不可以,可不可以通过修改解析设备树的部分代码,编写四个模块加载四次呢?(最后没有选择,找到了更简单合适的办法,这个理论上应该也可以吧) dmesg模块加载的信息,发现一行打印,说加载成功了一个收通道一个发送通道,如果只有一个设备原创 2021-04-14 17:22:13 · 6225 阅读 · 21 评论 -
zynq操作系统: Linux驱动开发AXIDMA篇
前言 由于bram形式的速率限制,在同样紧急的时间条件下,还是改回了axidma的方式来降维打击,对于几兆的速率,颇有种杀鸡用牛刀的感觉,没办法,原来的刀就是差一点,牛刀好用是好用但是终究得提升一点内功裸机下的DMA相对是比较简单的,参考之前裸板对于DMA的操作,而对于LINUX下,只能说苦不堪言。先不谈如何实现用户空间的零拷贝DMA传输,光是Linux环境下的DMA传输就已经感觉比较棘手,一方面是对Linux了解不够深入,另一方面则是Linux在相关的使用说明方面的确没有比较好的官方支持。原创 2021-04-12 13:45:20 · 12924 阅读 · 22 评论 -
zynq操作系统: Linux驱动开发串口篇
一.简介 串口( UART)是一种非常常见的外设, 串口在嵌入式开发领域当中一般作为一种调试手段,通过串口将调试信息打印出来,或者通过串口发送指令给主机端进行处理;当然除了作为基本的调试手段之外,还可以通过串口与其他设备或传感器进行通信, 譬如有些 sensor 就使用了串口通信的方式与主机端进行数据交互。根据电平标准的不同,串口可以分为 TTL, RS232,RS485, RS422等这些,虽然它们的电平标准不同,但是却都遵循相同的通信时序协议,所以呢,不管它是什么样的电平标准,对于我们软件而言其驱原创 2021-04-12 11:21:31 · 5928 阅读 · 1 评论 -
zynq操作系统: Linux驱动开发Gpio中断篇
简介 Linux内核中有一套GPIO框架,管理和控制芯片上的GPIO管教,包括配置输入输出,配置电平高低(输出)和获取电平高低(输入),中断管理。只需要通过读取/sys/class/gpio/gpioN/value的值来获取中断。当然也不是简单的read,而是通过epoll、poll、select等这些IO复用函数来控制,对于epoll或者poll,需要监听的事件是EPOLLPRI或POLLPRI,而不是EPOLLIN或POLLIN,对于select,需要将文件描述符放在exceptfds中,而且文件描原创 2021-04-12 11:02:50 · 4688 阅读 · 4 评论 -
zynq操作系统: Linux驱动开发Bram篇
前言 裸奔的驱动已经满足不了更高应用范围需求了,本篇开始更新几篇赶鸭子上架的zynq Linux应用层的驱动开发(基于准备篇)。再加上由于项目的时间紧张关系(重点是有些人不信邪不得不满足的需求),将基于裸板中关于DMA的数据搬移换成了简单的BRAM的形式,好处是可以短时间内做好驱动了,缺点是bram的速率相较于dma实在是太慢了,尤其受到axi总线限制,PL端实测最高速率3.9兆每秒左右,只能说是应个急,短期内可以满足下需求吧,毕竟,对于像我这样根本没有接触过linux的也能很快上手。重点有三个,代码也原创 2021-04-12 10:57:33 · 4103 阅读 · 4 评论 -
zynq操作系统:petalinux的编译使用(下)灵活编译篇1
上篇讲的官方推荐的编译方式,由于前面我们一直都是使用 xilinx 的 petalinux 工具编译镜像文件,例如包括 u-boot、 linux 内核、设备树、 ZYNQ PL 端的 bitstream 文件以及 fsbl 等,虽然 petalinux 功能上比较全面,但是在编译速度上太慢了,而且一旦hdf更换会带来整个工程的重新配置和编译,而且像我这种不细看手册的,甚至连kernel的源码都找不到在哪儿,tmp目录下的完全改了不起作用好不好,于是在没有找到本地kernel源码之前 采取了一种非官方原创 2021-04-04 18:45:55 · 2794 阅读 · 1 评论 -
zynq操作系统:petalinux的编译使用(上)官方推荐篇
常规环境下petalinux的使用(xilinx官方推荐篇)一.最小系统的构建整个开发流程如下,不一定每一步都要执行。通过 Vivado 创建硬件平台,得到 hdf 硬件描述文件;运行 source <petalinux 安装路径>/settings.sh,设置 Petalinux 运行环境(在安装篇已经设置了别名,可以相对简单了)确定一个工作目录,通过 petalinux-create -t project 创建 petalinux 工程;petalinux-create -t原创 2021-04-04 18:33:34 · 9220 阅读 · 2 评论 -
zynq操作系统:petalinux的环境搭建
简介: Petalinux 工具是 Xilinx 公司推出的嵌入式 Linux 开发套件,包括了 u-boot、 Linux,Kernel、 device-tree、 rootfs 等源码和库,以及 Yocto recipes,可以让客户很方便的生成、配置、编译及自定义 Linux 系统。 Petalinux 支持 Versal 、 Zynq UltraScale+ MPSoC、Zynq-7000 SoC 以及 MicroBlaze,可与 Xilinx 硬件设计工具 Vivado 协同工作,大大简化了L原创 2021-04-04 18:14:33 · 2291 阅读 · 0 评论