![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动
文章平均质量分 70
kidd_cj
这个作者很懒,什么都没留下…
展开
-
ftrace工具
内核调试追踪工具原创 2022-09-08 16:47:03 · 144 阅读 · 0 评论 -
基于shell的自动化编译脚本 <一>
1、基于shell的一键式编译脚本<一>多参数传入编译脚本;<<COMMENT如果要写一个编译脚本有很多选项采用如下方式:shift 将传入的参数前移;假如脚本名字是start_compile.sh ;运行命令行: sh start_compile.sh 条件1 条件3 执行输出: 条件1 条件3 end while: case 条件: 条件1) echo "条件1" shift ;; 条件2) echo "条件2"原创 2022-04-26 14:18:08 · 977 阅读 · 0 评论 -
tcpdump抓包
tcpdump -helptcpdump version 4.99.1libpcap version 1.5.3Usage: tcpdump [-AbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [--count] [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ] [ -i interface ] [ --.原创 2022-04-25 10:29:38 · 3754 阅读 · 0 评论 -
tcpdump移植到开发板上
首先注明参考的一些博主们:因为最近在调试1588的时钟同步功能,所以用到了tcpdump抓包工具;第一次使用记录一下,搜索了一下这个工具很强大也很好用,和wireshark一起配合使用特别好用;1、首先了解下tcpdump:对网上的数据报进行截获分析工具,tcpdump可以将网络中传输的数据包头完全解惑下来提供分析。支持【网络层、协议、主机端口的过滤】提供and or not等逻辑语句来进行过滤;一般使用tcpdump抓包然后使用wireshark工具分析;2、嵌入式系...原创 2022-04-25 09:46:09 · 1121 阅读 · 0 评论 -
更改uboot命令行前缀
在配置文件中.config或者在对应平台下的 XXX_defconfig下修改CONFIG_SYS_PROMPT="123123#"u-boot/u-boot-xlnx-xilinx-v2018.3/configs/xxx_defconfigCONFIG_SYS_PROMPT="ffffasdf>"原创 2022-04-19 14:14:37 · 305 阅读 · 0 评论 -
linux i2c 驱动二 IIC控制器
系列文章目录linux i2c 驱动一linux i2c 驱动二提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、IIC调试(不是原创 2022-03-08 16:08:29 · 1964 阅读 · 0 评论 -
设备树 二
设备树基本语法:soc厂商一般会提供.dts文件,我们需要新增或者修改设备树;设备树的头文件 .dtsi文件以zcu102为例: 在内核源码中有三个设备树文件:zynqmp-zcu102-revB.dts zynqmp-zcu102-revA.dts zynqmp-zcu102-rev1.0.dtszynqmp-zcu102-revA.dts: dtsi是dts的头文件 但也可以用#include 引用.h和dts文件#include "zynqmp.dtsi"#include原创 2022-02-28 16:43:41 · 933 阅读 · 0 评论 -
linux 动态库编译链接
创建三个文件:testa.c testb.c testc.c so_test.h使用这三个文件编译动态库libtest.sotesta.c#include "so_test.h"void test_a(){ printf("this is in test_a...\n");}testb.c#include "so_test.h"void test_b(){ printf("this is test_b .. \n");}testc.c#i原创 2022-02-17 15:01:10 · 1514 阅读 · 0 评论 -
c++中解析ini 文件的simpleIni库
simpleIni库简介:一个跨平台库,它提供了一个简单的 API 来读取和写入 INI 样式的配置文件。它支持 ASCII、MBCS 和 Unicode 中的数据文件。它被明确设计为可移植到任何平台,并已在Windows,WinCE和Linux上进行了测试。使用MIT许可证以开源和免费的方式发布。功能:1】加载和保存 INI 样式的配置文件2】自由接受文件格式3】支持char或wchar_t变成接口4】通过用户编写的转换器类支持非标准字符类型或文件编码5】支持以编程方...原创 2022-02-15 20:35:09 · 2692 阅读 · 0 评论 -
块设备驱动 <概念和字符设备区别一>
系列文章目录块设备概念和字符设备区别块设备驱动框架块设备驱动程序及验证提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言驱动分为三大部分:字符设备驱动,块设备驱动,网络设备驱动;字符设备: 以字节为单位的即时数据传输的设备。块设备:以块为单位的数据传输(读写)非随机即时性访问;一、块设备概念及和字符设备区别?块设原创 2022-01-13 10:38:52 · 352 阅读 · 0 评论 -
linux i2c 驱动一
系列文章目录1、i2c协议简述2、i2c驱动框架3、i2c实例目录系列文章目录文章目录前言一、i2c协议简述二、linux 下 i2c驱动框架1.首先掌握如何使用2.理解原理三、实例1、设备树2、驱动代码总结文章目录 前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示..原创 2021-09-21 17:46:36 · 218 阅读 · 0 评论 -
uboot中环境变量 sf
这个命令是 uboot实现了 对flash 的读写初始化功能,挂载在spi总线下;执行sf probe 就是对spi总线和 flash的初始化;命令声明: u_BOOT_CMD大家都知道就是定义uboot模式下的命令行;然后uboot在main_loop下循环检测串口指令来解析调用相应命令U_BOOT_CMD( sf, 5, 1, do_spi_flash, "SPI flash sub-system", "probe [[bus:]cs] [hz] [mode] - init fla.原创 2021-07-03 15:44:15 · 2303 阅读 · 0 评论 -
uboot中给内核传入分区的参数
在uboot 环境变量如何进行配置分区??在uboot源码cmd/mtdparts.c中 提供工了这样一段注释 * Three environment variables are used by the parsing routines: * * 'partition' - keeps current partition identifier * * partition := <part-id> * <part-id> := <dev-id>,p原创 2021-07-03 11:15:29 · 952 阅读 · 0 评论 -
加载ko模块时报错unknown symbol in module, or unknown parameter
创建两个ko, A.ko B.koA.ko中的函数要被B.ko所引用;在A.ko中使用 EXPORT_SYMBOL_GPL(func);在B.ko中使用 func 编译和加载会报错;方法如下:1、将 A.ko编译进内核, 任意目录的makefile中添加 obj -y+= A.koobj -m += B.ko 如果A,B不在一个目录会报错方法一:拷贝A目录中的Module.symvers 到B目录中,之后编译B.ko =========》 测试通过方法二:在...原创 2021-07-02 17:55:00 · 5010 阅读 · 1 评论 -
基于dts的SPI框架 ADC9009驱动
SPI的dts配置:&spi0 { is-decoded-cs = <0>; num-cs = <1>; status = "okay"; device@0{ compatible = "adrv9009_1"; //compatible = "xlnx"; reg = <0x0>; spi-max-frequency = <0x100000>;原创 2021-05-29 15:56:06 · 2009 阅读 · 0 评论 -
xilinx ps-pl间的共享中断如何使用
首先环境介绍:Zynq UltraScale+ 参考文档 ug1085-zynq-ultrascale-trm.pdf需求:使用pl提供使能中断寄存器regEn,通过控制regEN使PL端发送中断,PS接收中断并在用户态处理中断;分析:1、处理中断实在PS端并且在用户态;那就涉及内核通知用户的机制,只有异步通知,通过信号来做比较合理;2、PS使用PL属于内部中断 至于有哪些中断类型参考: ug1085-zynq-ultrascale-trm.pdf 第13节 下载地址3...原创 2021-05-11 19:37:51 · 1761 阅读 · 6 评论 -
周-周内秒转化为utc时间 c语言实现
#include <stdio.h>#include <time.h> const static double gpst0[]={1980,1, 6,0,0,0}; //起始时间#define LEAPS 18typedef struct { /* time struct */ time_t time; /* time (s) expressed by standard time_t */ double se.原创 2021-04-02 16:27:43 · 4609 阅读 · 1 评论 -
单板上查看gpio使用情况
转载:查看GPIO使用情况_weixin_34205076的博客-CSDN博客Linux通过内核查看芯片gpio配置使用情况Dwyane05 2018-05-04 14:30:05 6133 收藏 6文章标签: Linux gpio版权用户空间使用gpio输出试,出错;使用PB08输出1-----对应40:32*(B-A) + 08 = 40# echo 40 > exportsh: write error: Device or resource busy#...转载 2021-03-26 09:15:03 · 681 阅读 · 1 评论 -
i2c_tools记录
i2c_tools是一个帮助调试i2c的开源工具;使用说明:i2c-stub-from-dump i2cdump i2cset i2cdetect i2cget i2ctransfer i2cdetect:直接在板子上敲i2cdetect,就会弹出帮助:可以看到:有命令: i2cdetect -y -a 总线 试一下看看可以看到...原创 2021-03-24 09:32:32 · 905 阅读 · 1 评论 -
输入子系统框架分析 --- 第一节
本模块分为两节:第一节: 分析输入子系统框架 第二节: 输入子系统代码举例第一节内容: 以按键作为输入分析源码框架1\回忆字符设备驱动程序编写步骤:确定主设备号 或者由系统分配记录主设备号 构造file_operations 结构: 包含的相关函数open, read, write, release等 把这个file_operations 结构注册到内核 使用函数 major = register_chrdev(主设备号, 名字, &third_drv_fops)...原创 2021-03-15 17:52:33 · 79 阅读 · 0 评论 -
jz2440 内核启动打印信息
加载完文件系统和内核重启后打印信息:OpenJTAG> print uboot起来之后打印的参数bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0 内核传递参数:b...原创 2021-02-21 10:19:53 · 261 阅读 · 0 评论 -
中断程序之 --定时器使用
按键去抖动引入定时器用法定时器:定时器使用|步骤:定义一个定时器 struct timer_list buttons_timer; 初始化定时器 init_timer(&buttons_timer); 设置定时器 buttons_timer.function = xxx ; buttons_timer.data = xxx; 注册到内核启动定时器 add_timer(&...原创 2021-02-12 17:19:59 · 483 阅读 · 0 评论 -
中断方式按键驱动
目的:通过中断的方式,实现按键相应。app: 打开设备文件,循环读取设备内容。驱动:注册字符设备, 创建设备节点,申请按键中断,按键处理, 实现设备的读取。1、驱动框架2、中断申请3、中断处理#include <linux/module.h>#include <linux/init.h>#include <linux/ioport.h>#include <linux/poll.h>#include <linux/pr原创 2021-02-12 17:01:32 · 228 阅读 · 0 评论 -
第一个驱动步骤
第一个驱动步骤如下:1、理解驱动从应用到内核应该有哪些步骤,如下图app 应用 -》 调用c库 -> c库通过swi触发不同的软中断 调用不同的系统接口->系统接口根据 打开的文件属性调用对应的驱动(VFS干的活)这里的对应驱动如何调用可以先不管;以led驱动举例:步骤是: 打开对应的led设备文件,向设备文件中写入值 开 或者 关灯;应用程序如下#include <sys/types.h>#include <sys/stat.h>.原创 2020-12-05 21:09:43 · 278 阅读 · 0 评论 -
2020-12-05
问题某一个快照所依赖的磁盘原因: 未能锁定文件” 或者某个文件打不开等原因:虚拟磁盘(.vmdk)本身有一个磁盘保护机制,为了防止多台虚拟机同时访问同一个虚拟磁盘(.vmdk)带来的数据丢失和性能削减方面的隐患,每次启动虚拟机的时候虚拟机会使用扩展名为.lck(磁盘锁)文件对虚拟磁盘(.vmdk)进行锁定保护。当虚拟机关闭时.lck(磁盘锁)文件自动删除。但是可能由于您非正常关闭虚拟机,这时虚拟机还没来得及删除您系统上的.lck(磁盘锁)文件,所以当下次您启动虚拟机的时候出现了上述错误。(来自互原创 2020-12-05 20:42:56 · 69 阅读 · 0 评论 -
驱动模块传参数
模块传参:1.头文件: include/linux/moduleparam.h传单个参数:内核模块传单个参数– module_param(name,type,perm)– name:模块参数的名称– type: 模块参数的数据类型(支持int long short uint ulong ushort类型)– perm: 模块参数的访问权限传多个参数module_param_...原创 2019-10-09 21:36:26 · 194 阅读 · 0 评论 -
linux虚拟平台总线注册
虚拟平台总线注册原创文章转载请声明步骤注册设备 掌握注册设备的函数及流程注册驱动 掌握注册驱动的函数及流程平台:讯为电子开发板 exynose 4412设备注册注册函数介绍 5. int platform_device_register(struct platform_device *pdev) 6.所在目录: include/linux/platform_devi...原创 2019-10-05 21:45:57 · 278 阅读 · 0 评论 -
驱动最简单模块代码编译
首先模块代码编译加载需要哪些东西:先看 makefile#!/bin/bash# -m 表示不会 编译到zImage 是生成可加载模块 目标文件obj-m += mini_linux_module.o #表示坐着的kernel源码路径KDIR := /home/topeet/android4.0/iTop4412_Kernel_3.0#当前路径PWD ?= $(shell p...原创 2019-08-02 11:06:45 · 533 阅读 · 0 评论