linux
文章平均质量分 70
疯狂的蕉尼基
将来的你会感谢现在努力的自己。
展开
-
MQTT客户端应用编程及接口分析
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。接口类型头文件备注非现程安全线程安全。原创 2023-05-15 13:46:29 · 2287 阅读 · 1 评论 -
Linux下的can 设备测试
can 设备在Linux下的使用及编程, 含有C参考代码, python 参考代码。以及配置方式等内容,适合初学接触进行设备调试的人员。原创 2023-04-07 11:12:43 · 2604 阅读 · 0 评论 -
Linux下快速创建大文件文件
在计算机世界中,稀疏文件是一种特殊文件,具有不同的表观文件大小(它们可以扩展到的最大大小)和真实文件大小(为磁盘上的数据分配了多少空间)。fallocate 命令则不会创建稀疏文件,而且它的速度更快,这也是我比较推荐使用 fallocate 创建大文件的原因。dd 命令是实际写入硬盘,文件产生的速度取决于硬盘的读写速度,根据文件的大小,该命令将需要一些时间才能完成。参数所指定的文件如果不存在,那么该命令会创建这个文件。fallocate 命令是我比较推荐的创建大文件的方法,因为它创建大文件的速度是最快的。原创 2022-12-13 09:44:40 · 2344 阅读 · 0 评论 -
STM32F1xx LTC299 模块驱动代码
LTC2991用于监控系统温度、电压和电流。通过I2C串行接口,8个显示器可以单独测量提供电压和可配对的差动测量电流感电阻或温度感应晶体管。其他测量方法包括内部温度和内部VCC。内部10ppm参考值最小配套部件的数量和所需面积。可选择的地址和可配置的功能提供了LTC2991的灵活性各种需要温度、电压或电流数据的系统。LTC2991适合在需要亚毫伏电压分辨率的系统中,1%的电流测量和1摄氏度的温度精度或三者的任何组合。原创 2022-11-17 14:53:49 · 1719 阅读 · 0 评论 -
FIO 磁盘性能测试
IO 吞吐表示在指定时间内,完成的 IO 读写数据字节数,它的值和每次 IO 读写的数据大小有密切关系,也从而会影响 IOPS,比如每次读写数据块较大,从而最大化的降低了寻道带来的开销,从而提高吞吐,但是此时 IOPS 就会减小;用户和系统时间,以及该线程所经历的上下文切换次数、系统和用户时间的使用情况,最后是主要和次要页面错误的数量。IOPS 指的是每秒可以完成的 IO 服务的次数,一次 IO 服务主要的耗时是寻道时间上,如果是大量的随机 IO,那么每次寻道时间都处于上限值,IOPS 下降;转载 2022-10-18 14:31:59 · 7726 阅读 · 1 评论 -
linux下fdisk命令实战案例之详解
linux 下fdisk 命令实现案例详解转载 2022-09-08 16:59:34 · 1968 阅读 · 0 评论 -
Uboot spi-nor 设备信息定义及3地址模式和4地址模式的理解
Uboot spi nor flash 设备的使用和测试以及调试,部分代码的讲解。原创 2022-09-08 10:59:20 · 2458 阅读 · 0 评论 -
Linux DM9000 Ethernet 网络驱动移植适配流程(8位数据, 挂载EMIF下 )
本文讲解了linux 下如何对dm9000进行移植适配,以及遇到的问题的解决方法, 该dm9000挂载至emif 下, 并且只用了8位有效数据位。原创 2022-08-16 10:59:01 · 811 阅读 · 0 评论 -
ARM+SD2405 IIC_RTC驱动编写及IIC通讯协议
主要分析Sd2405 IIC 通信协议及代码的基本功能实现、原创 2022-07-20 13:54:43 · 1958 阅读 · 0 评论 -
ftrace工具的介绍及使用
ftrace 工具使用的笔记文档原创 2022-07-01 16:24:19 · 4392 阅读 · 0 评论 -
内核空间利用jiffies和HZ进行时间统计
利用jiffies 和HZ 进行时间统计的的方法原创 2022-06-14 10:12:16 · 564 阅读 · 0 评论 -
Linux DMA 框架介绍,demengine.c文件
Linux DMA 框架介绍(demengine.c)1.介绍从我们的直观感受来说,DMA并不是一个复杂的东西,要做的事情也很单纯直白。因此Linux kernel对它的抽象和实现,也应该简洁、易懂才是。不过现实却不甚乐观(个人感觉),Linux kernel dmaengine framework的实现,真有点晦涩的感觉。为什么会这样呢?如果一个软件模块比较复杂、晦涩,要么是设计者的功力不够,要么是需求使然。当然,我们不敢对Linux kernel的那些大神们有丝毫怀疑和不敬,只能从需求上下功夫了:转载 2021-08-28 14:08:09 · 667 阅读 · 0 评论 -
Linux DMA Engine framework
这三个有关讲DMAENGINE的文章,讲的都很详细,以前不懂得再看一遍都有了鲜明的印象。大家可以去学习一下。Linux DMA Engine framework(1)_概述Linux DMA Engine framework(2)_功能介绍及解接口分析Linux DMA Engine framework(3)_dma controller驱动...原创 2021-09-08 17:31:00 · 190 阅读 · 0 评论 -
Linux DMA 内dwc_prep_slave_sg函数与device_prep_dma_cyclic函数
什么是sgsg 就是 scatter-gather,分散-集中传输一般情况下,DMA传输一般只能处理在物理上连续的buffer。但在有些场景下,我们需要将一些非连续的buffer拷贝到一个连续buffer中(这样的操作称作scatter gather,挺形象的)。对于这种非连续的传输,大多时候都是通过软件,将传输分成多个连续的小块(chunk)。但为了提高传输效率(特别是在图像、视频等场景中),有些DMA controller从硬件上支持了这种操作。注2:具体怎么支持,和硬件实现有关,这里不再多说(转载 2021-09-08 16:20:34 · 1124 阅读 · 0 评论 -
Intel I350T4网卡 + ARM 开发板 的使用及出现的问题解决。
zacha@Superman:~/igb/igb-5.7.2/src$ make#@+ echo "*** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but" ; echo "*** the signing key cannot be found. Module signing has been" ; echo "*** disabled for this build." ; make ccflags-y="" -C "/lib/modul原创 2021-09-28 10:45:02 · 1393 阅读 · 1 评论 -
带你编写一个最简单的linux下的字符设备驱动
编写hello驱动代码编写makefile编译和加载hello驱动编写应序测试hello驱动驱动代码如下 helloDev.c,这是一个最小、最简单的驱动,我去掉了其他的不相干代码,尽量让大家能了解驱动本身。#include <linux/module.h>#include <linux/moduleparam.h>#include <linux/cdev.h>#include <linux/fs.h>#include <linux/w转载 2021-10-15 17:44:16 · 285 阅读 · 0 评论 -
linux DMA 物理地址虚拟地址的映射方法(mmap)
linux DMA 物理地址虚拟地址的映射方法最近在研究linux DMA的使用,做了很多的测试验证,也踩了很多坑,因为日常工作原因 ,我对linux kernel 的研究确实不是很多,也是工作原因,最近花时间在研究linux DMA,说起来蛮惭愧的,下面把我踩得坑做一下间的描述DMA传输的所需的地址是物理地址而非虚拟地址用户层如果想要做DMA传输,需要将物理地址和虚拟地址进行映射(mmap方法)malloc 返回的地址是虚拟地址,不能用于DMA的传输,地址映射完后,可以用memset 进行初值赋原创 2021-09-07 17:26:36 · 4536 阅读 · 0 评论 -
Linux DMA Engine framework
Linux DMA Engine framework1. 前言本文是DMA Engine framework分析文章的第一篇,主要介绍DMA controller的概念、术语(从硬件的角度,大部分翻译自kernel的document[1])。之后,会分别从Provider(DMA controller驱动)和Consumer(其它驱动怎么使用DMA传输数据)两个角度,介绍Linux DMA engine有关的技术细节。2. DMA Engine硬件介绍DMA是Direct Memory Access转载 2021-09-08 15:58:14 · 311 阅读 · 0 评论 -
Linux有关用户空间和内核空间的知识梳理
Linux有关用户空间和内核空间的知识梳理今天做了个蠢事,就是通过指针在内核空间和用户空间做了数据的传递,结果导致了Segmentation fault错误的产生,研究了半天,猛然恍悟,内核空间和数据空间无法通过指针进行数据的传递。下面是是对相关知识点的再次梳理:Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。用户空间的内存映射采用段转载 2021-09-03 14:49:38 · 417 阅读 · 0 评论 -
Xilinx XDMA 数据传输sgdma 驱动代码分析
Xilinx XDMA 数据传输sgdma 驱动代码分析我的之前两篇文章有介绍到上位机软件的逻辑该如何控制,驱动代码的框架是怎样的,驱动的整体逻辑在linux系统中是如何实现的,感兴趣的小伙伴可以去考古。Xilinx XDMA 上位机应用程序控制逻辑Xilinx XDMA驱动代码分析及用法XDMA 传输的核心部分代码是cdev_sgdma.c ,利用DMA进行数据传输,传输方式为sgdma的传输方式,1、SG-DMA介绍Scatter-Gather DMA ,分散/集中映射是流式 DMA 映射的原创 2022-05-24 17:41:24 · 11349 阅读 · 20 评论 -
sleep() 函数,没想象种那么简单、(sleep 与 clock的碰撞使用)
sleep() 函数,没想象种那么简单、问题提出最近在测性能相关的东西, 所以在统计程序执行耗时,我个人习惯用clock()函数获取时间做统计。然后看到一份做测试代码,代码在时间统计的中间即:start–end中间,加入了sleep()函数。#include <stdio.h>#include <unistd.h>#include <time.h>int main(void){ clock_t start,end; start =cloc原创 2022-05-09 15:50:37 · 504 阅读 · 0 评论 -
测试Xilinx XDMA性能的方法
Getting the Best Performance with Xilinx’s DMA for PCI Express上面连接是官方讲解如何测试xdma性能的方法,讲解的十分详细。 感兴趣的朋友可以下载。原创 2022-03-28 14:39:33 · 2146 阅读 · 4 评论 -
linux常用的解压缩文件的命令
linux常用的解压缩文件的命令.tar解包:tar -xvf filename.tar打包:tar -cvf filename.tar dirtname.tar.gz解包:tar -xzvf filename.tar.gz打包:tar -czvf filename.tar.gz dirtname.zip解压:unzip filename.zip压缩:zip filename.zip dirtname.rar解压:rar x filename.rar压缩:rar a filen原创 2022-03-25 16:20:15 · 1660 阅读 · 1 评论 -
Linux Python 版本切换方法
Linux Python 版本切换方法切换python版本update-alternatives --display python如果出现以下错误:update-alternatives: 错误: 无 python 的候选项,那么按下面的流程操作。#查看多个python版本#ls /usr/bin/pythonpython2.7 python3.6#添加Python2可选项,优先级为2sudo update-alternatives --install /usr/bin/python原创 2022-03-23 09:37:21 · 4390 阅读 · 0 评论 -
Xilinx XDMA驱动代码分析及用法
Xilinx XDMA驱动代码分析及用法先简单的介绍一下,赛灵思的XDMA的驱动是用于做什么的、他的主要功能就类似与网卡pcie接口的网卡驱动、用于控制主机与fpga设备进行pcie的通讯。通讯的主要方式是设备文件的读写,这里不清楚的同学可以看一下我上一篇文章。通过控制设备文件的读写,操作驱动与fpga设备进行数据传输。1、目录结构zacha@Superman:~/nfs/xdma-debug/dma_ip_drivers-master/XDMA/linux-kernel$ tree -C.├──原创 2022-03-18 14:51:47 · 24844 阅读 · 126 评论 -
Xilinx XDMA 上位机应用程序控制逻辑
Xilinx XDMA 上位机应用程序控制逻辑1. 驱动安装的参数关于驱动的编译和安装这里就不多讲了,无非就是make 和 insmod 。这里讲一下驱动安装时,控制驱动属性的几个参数:1.中断模式static unsigned int interrupt_mode;module_param(interrupt_mode, uint, 0644);MODULE_PARM_DESC(interrupt_mode, "0 - Auto , 1 - MSI, 2 - Legacy, 3 - MSI-x原创 2022-03-06 15:30:38 · 7594 阅读 · 11 评论 -
Linux I2C RTC 适配(BQ32002)
Linux I2C RTC 适配(BQ32002)1、硬件连接从硬件电路图可以看到,bq32002挂在了 i2c1上。2、Enabling Driver SupportBQ32002 属于TI 32K系列的RTC, linux kernel 一般都有适配,所以我们只需要将对应的设备驱动开启,以及配置好对应的dts文件,同时,可以关闭原有芯片内部RTC、就可以了。Configure kernel with “make menuconfig”Menuconfig LocationSymbol:原创 2022-02-26 15:41:07 · 1078 阅读 · 0 评论 -
XDMA ubuntu 16.04 64位驱动编译报错,缺少pci_enable_msix函数
我在ubuntu 16.04 64位系统下编译XDMA驱动“Xilinx_Answer_65444_Linux_Files”,报了一个错误。xdma-core.c:4321:8: error: implicit declaration of function ‘pci_enable_msix’ [-Werror=implicit-function-declaration] rc = pci_enable_msix(pdev, lro->entry, req_nvec);原因是ubuntu原创 2022-02-11 15:09:32 · 2993 阅读 · 1 评论 -
Linux arm 4.19.65 usb wifi(rtl8821cu) 适配工作
arm Linux usb wifi(rtl8821cu) 适配工作1. 环境介绍开发板环境:bash Linux arm 4.19.65 #1 SMP Wed Jan 12 14:14:38 CST 2022 armv7l armv7l armv7l GNU/Linux交叉编译器:arm-linux-gnueabihf-驱动:WG217rtl8821CU_WiFi_linux_v5.8.1.1工具:wpa_supplicant 、wpa_cli、 iwlist、iwconfig、hostapd原创 2022-01-13 17:28:20 · 13082 阅读 · 0 评论 -
【igb驱动交叉编译】igb_main.c:10044:7: error: implicit declaration of function ‘isdigit’
最近igb编译驱动发现了这个问题:zacha@Superman:~/igb/igb-5.7.2/src$ make#@+ echo "*** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but" ; echo "*** the signing key cannot be found. Module signing has been" ; echo "*** disabled for this build." ; make ccflags-y原创 2022-01-11 10:56:38 · 2709 阅读 · 0 评论 -
Linux性能测试工具
在Linux Benchmark Suite Homepage网站上列举了诸多Linux性能测试工具,包括CPU/RAM/ROM/Cache/net等性能测试。lmbench测试工具这个工具集中包含以下几种测试工具,我们主要使用到bw_mem工具进行Memory read和write测试。Bandwidth benchmarks(带宽测试)Cached file readMemory copy (bcopy)Memory readMemory writePipeTCPLate原创 2022-01-07 14:48:01 · 16548 阅读 · 3 评论 -
Pcie(igb)网卡调试总结:tx uint hang异常解决方法
前段时间做pcie网卡的适配工作,使用的网卡是Intel 1350; 环境是ARM利用ismod xx.ko 安装上驱动后,会产生一个内核警告的异常,然后之后的通讯就会持续产生tx unit hang的问题。这个问题的原因找了很久,也没有找到原因,最后反馈给芯片厂家,那边反馈说,他们的芯片不支持MSIX的终端模式。但是很多pcie的网卡设备默认都是MSIX的中断模式,所以去驱动源码产看将MSIX的中断模式修改为MSI,然后重新编译驱动进行测试。利用lspci 命令查看驱动设备的情况,可以看原创 2022-01-06 14:32:44 · 3318 阅读 · 1 评论 -
如何编写有利于编译器优化的代码
如何编写有利于编译器优化的代码在嵌入式开发中,代码的体积和运行效率非常重要,代码体积往往和芯片的FLASH、RAM容量对应,程序的运行效率也要求在相应能力的处理器上运行。在大多数情况下,成熟的开发人员都希望降低代码体积、提高代码运行效率,然而具体该怎么做呢?本篇文章将以国际知名编译器厂商IAR Systems的编译器为例,来解答开发人员在实际工作中常常遇到的问题,工程师朋友们可以在IAR编译器上进行实践验证。在嵌入式开发中,代码的体积和运行效率非常重要,代码体积往往和芯片的FLASH、RAM容量对应,程转载 2021-11-10 09:26:07 · 295 阅读 · 0 评论 -
Glibc Error: `_obstack@GLIBC_2.2.5‘ can‘t be versioned to common symbol ‘_obstack_compat‘
Error: `_obstack@GLIBC_2.2.5’ can’t be versioned to common symbol '_obstack_compat’原因:https://www.lordaro.co.uk/posts/2018-08-26-compiling-glibc.htmlThis was another issue relating to the newer binutils install. Turns out that all was needed was to initi原创 2021-10-11 11:18:06 · 2035 阅读 · 0 评论