自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lihuan680680的博客

喜欢Linux平台驱动开发,志同道合的朋友点个关注,互相学习吧

  • 博客(49)
  • 资源 (17)
  • 收藏
  • 关注

原创 Linux---应用层获取usb设备描述信息&通过endpoint地址数据通讯

VID指的是Vendor ID(厂商识别码),用于唯一标识USB设备的制造商。通过VID和PID,可以确定一个具体的USB设备,因为每个设备的VID和PID是唯一的,可以帮助系统识别和与设备进行交互。与我们要搜索的一致,可以判定为我们需要找的设备节点。应用层可以打开USB设备的节点,读取包括USB设备的配置,端口,端点等信息。为该USB设备的节点,我们后续读取USB设备信息以及数据读写操作都是通过这个节点进行的

2023-09-07 20:50:12 1330

原创 程序员的六一儿童节

它是为了保障世界各国儿童的生存权、保健权和受教育权,抚养权,为了改善儿童的生活,为了反对虐杀儿童和毒害儿童而设立的节日。世界上许多国家都将6月1日定为儿童的节日。了解背景之后有点震惊,可能也是因为真相过于残忍,考虑到对孩子们心灵的冲击,所以无论是课本还是老师都很少提及这个节日的背景(反正我小时候老师,包括课本上没有讲过这段历史,不知道现在是否会讲)。作为程序员要过儿童节吗 😂如果有小孩可以陪孩子一起过,如果没有,你要是觉得你还是个宝宝也可以过 😝,在此使用C语言画一幅涂鸦,表达下六一儿童节程序员的心情。

2023-06-03 21:49:01 181

原创 科技发展的那些事儿

科技发展的成就不仅改变了我们的生活和工作方式,也影响了社会的发展和进步,创造了更多的就业机会和经济增长点。iPod是一款便携式音乐播放器,以其简单易用和时尚的设计风格迅速赢得了全球用户的青睐,推动了数字音乐的发展,成为苹果公司的重要产品之一。iPhone是一款革命性的智能手机,以其简洁的设计和先进的功能迅速赢得了全球用户的喜爱,推动了智能手机的普及和发展。Linux是一款开源的操作系统,可以免费使用和修改,其问世改变了计算机科学的发展方向,推动了开源软件的发展,成为后来互联网时代的基石。

2023-05-30 00:14:33 331

原创 可持续能源技术改变世界

气候变化和能源安全是我们必须直面的问题,而可持续能源技术能够提供一个可持续的解决方案。随着技术的不断进步和应用的推广,我们相信可持续能源技术必将成为全球未来能源发展的主力。当然,这需要政府、企业和个人的齐心协力,共同为可持续能源技术的发展注入更多的力量和支持。与传统能源相比,可持续能源在使用过程中不会产生过多的温室气体和其他污染物,同时也不会耗尽地球上的自然资源。可持续能源技术的应用现状正在不断发展。一些国家已经在推广太阳能、风能、水能等可持续能源技术,并制定了一系列政策和规定,以促进可持续能源的发展。

2023-05-29 23:14:56 673

原创 Linux---GUN binutils

什么是GUN binutis?它是一个二进制工具集,默认情况下所有 Linux 发行版中都会安装这些二进制工具。实际大部分人应该是用过这些工具的,我一说大家就知道了。常用的二进制工具包括。工具用途nm列出目标文件中的符号size列出目标文件中各个段的大小和总大小,如数据段,代码段addr2line将程序地址翻译成文件名和行号objcopysection复制和删除objdump显示目标文件的信息和反汇编readelf显示有关ELF文件的信息strip从目标文件中剥离符号。

2023-05-28 22:51:04 756

原创 Linux---phy外设调试(二)

Linux下phy外设调试

2023-05-28 00:08:48 1899

原创 Linux---phy外设调试(一)

Linux下phy芯片的调试

2023-05-21 22:09:48 1865 1

原创 Linux---gcc编译过程与Makefile语法规则

gcc编译过程及Makefile语法规则

2023-05-20 00:38:29 852

原创 Linux---TP外设调试(ti,tsc2046)

另外关于匹配问题我们可以看到驱动文件与设备树都函数compatible = “ti,tsc2046”,所以理论上只要SPI没有问题(SPI是基础),就会正常匹配,我们也可以在驱动文件probe函数中添加打印以辅助判断或者阅读代码通过驱动文件所建立的节点以及对应打印进行判断。经过上面几步,如果一帆风顺的话可以看到/dev/input下面会产生新的event节点,使用手指点击TP,然后查看有无数值变化,如下图我们点击发现event可以正常上报且有变化产生,证明驱动整体是ok。3、tp的中断是否可以正常收到。

2023-05-03 23:22:13 1574

原创 Linux下抓取usb总线数据

在linux环境下抓取usb数据

2023-03-18 17:05:50 1919 1

原创 Linux应用之参数解析函数---getopt()与getopt_long()

在Linux应用程序中往往运行时会带入参数,例如./xxx_tool -f filename -d portnum,这里-f 和-d后面都带有参数,再比如最基础的命令ls,- -help之后告诉你一大堆可使用的参数(如下图),例如短参数-a, 长参数–all。这里提及一个概念:在Linux命令行参数可以分为两类,一类是短选项,参数前加一个杠"-“,如-a -A都是,另外一类是长选项,长选项在参数前连续加两个杠”–",如–all,–author都表示长选项。

2023-03-11 22:04:56 670

原创 程序员的世界杯

在这个被定义为诸神黄昏的世界杯中,不断有真神转身远去,无论是苏亚雷斯,内马尔,还是C罗,都逃不过岁月这把刀,正所谓没有人永远18岁,但永远有人18岁,这便是竞技体育的残酷与魅力吧。

2022-12-13 20:47:56 217

原创 使用seq_file接口导出内核数据到应用层---seq_open()/single_open()

今天介绍另外一种方法---使用seq_file接口,关于该类接口在内核Documentation/filesystems/seq_file.txt中有详细的介绍,相比较于之前的方法其优势可以向应用层导出比较多的数据,例如大于1个PAGE_SIZE,同时驱动文件中我们不用关注复杂的缓冲区管理,这些内核自己处理,属于比较成熟的内核接口。

2022-11-24 11:40:18 753

原创 ##__VA_ARGS__与##args的用法

本文主要涉及##__VA_ARGS__与##args的用法

2022-11-14 15:53:25 3645 1

原创 Linux添加开机自启动应用

主要介绍如何在Linux系统中添加开机自启动的应用。

2022-11-05 17:19:07 1063

原创 Linux内核日志调试方法

本文档主要介绍在Linux系统下常用的一些内核日志调试方法 oops: 内核告知用户有不幸发生的最常用的方式。 进程上下文:进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈上的内容,当内核需要切换到另一个进程时,它需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。 中断上下文中:就是硬件通过触发信号,导致内核调用中断处理程序,进入内核空间,这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。

2022-10-24 10:45:58 3496 2

原创 Linux监控串口数据并写入文件-C语言demo

【代码】Linux监控串口数据并写入文件-C语言demo。程序是基于Linux操作系统,监控串口是否有数据,如果有数据就写入到文件系统中。Demo涉及串口初始化,poll函数监控,以及文件读写操作。

2022-10-08 16:45:01 1206

原创 Linux---wifi驱动移植及调试(SSV6x5x)

南方硅谷ssv6x5x驱动移植

2022-03-16 00:11:40 4424 2

原创 Linux中strace工具用法及跟踪分析应用

Linux中strace工具用法及跟踪分析应用

2022-02-27 23:39:46 2551

原创 Ubuntu内核源码修改编译及加载验证

Ubuntu系统内核源码修改编译及加载验证

2022-02-27 22:51:22 1706

原创 ALSA架构应用程序aplay及amixer调用关系(应用层到内核驱动)

ALSA架构应用程序aplay及amixer调用关系(应用层到内核驱动)

2022-02-22 18:23:55 1021

原创 指数基金总结

指数基金估值及总结

2022-02-22 18:22:30 403

原创 ALSA驱动asoc框架之Platform

ALSA驱动asoc框架之Platform

2022-02-22 18:20:23 1153

原创 ALSA驱动asoc框架之Codec

一、Nau8810芯片系统框架图由系统框架图可以看出,输入端为差分MIC输入,输出端可以为MOUT或Speaker。Codec对外硬件接口通过Audio I/O和Digital I/O,其中Audio I/O一般传输的是音频信号为I2S或PCM,Digital I/O为控制信号一般为I2C。芯片引脚分布如下:二、Codec注册

2022-02-22 18:15:34 1508

原创 ALSA驱动asoc框架之machine(二)

ALSA驱动asoc框架之machine(二)

2022-02-22 18:12:16 2812

原创 ALSA驱动asoc框架之machine(一)

从前面内容我们知道ALSA 驱动 asoc 框架主要包括 codec driver、 platform driver、 machine driver,其中machine是连接codec driver及platform driver的桥梁,我们本节内容来看看platform driver驱动。

2022-02-22 18:08:25 2596

原创 音频ALSA架构简介

ALSA(Advanced Linux Sound Architecture)即高级 Linux 声音架构。嵌入式移动设备的音频子系统目前主要是ALSA 驱动 asoc 框架,其中包括 codec driver、 platform driver、 machine driver 等。

2022-02-22 18:06:18 9075 1

原创 Linux---ALSA音频工具arecord、aplay、amixer使用

Linux---ALSA音频工具arecord、aplay、amixer使用

2022-02-22 17:49:32 7805

原创 Linux---input输入子系统设备驱动写法 input_allocate_device()、input_event()、input_sync()

Linux---input输入子系统设备驱动写法 input_allocate_device()、input_event()、input_sync()

2022-02-22 17:46:14 3359 5

原创 Linux---驱动属性文件添加、DEVICE_ATTR宏、device_create_file()及sysfs_create_group()

#include <linux/module.h>#include <linux/fs.h>#include <linux/errno.h>#include <linux/miscdevice.h>#include <linux/kernel.h>#include <linux/major.h>#include <linux/mutex.h>#include <linux/proc_fs.h>#i

2021-11-14 12:19:40 5157 1

原创 Linux字符设备驱动新写法

Linux 社区推荐使用动态分配设备号,在注册字符设备之前先申请一个设备号,系统会自动给你一个没有被使用的设备号,这样就避免了冲突。卸载驱动的时候释放掉这个设备号即可,设备号的申请函数如下:int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name)函数 alloc_chrdev_region 用于申请设备号,此函数有 4 个参数:dev:保存申请到的设备号。baseminor:

2021-11-14 12:17:41 510

原创 Linux---应用层RTC测试程序与时间相关函数time()、gmtime()、localtime()使用

一、时间相关函数说明time_t time(time_t *timer)函数功能: 得到当前日历时间或者设置日历时间参数说明: timer=NULL时得到当前日历时间(从1970-01-01 00:00:00到现在的秒数);timer=时间数值时,用于设置日历时间;如果 timer不为空,则返回值也存储在变量 timer中。函数返回: 当前日历时间time_t是一个unsigned long类型。struct tm *gmtime(const time_t *timer)函数功能: 使

2021-11-14 12:16:50 1863

原创 Linux---自旋锁spinlock、信号量semaphore、互斥锁mutex介绍及各自对应使用场景

一、Linux 锁的介绍Linux中按照大类分为2种锁,睡眠锁和自旋锁。其中睡眠锁就是无法获得锁的时候,当前线程进入休眠状态,包括信号量semaphore、互斥锁mutex。自旋锁就是当无法获得锁时,不会休眠,一直循环等待,只有一种spinlock。

2021-11-14 12:15:27 3245

原创 Linux---select()实现高精度延时与alarm()定时器

一、select函数int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);设置timeout的值,而将其他参数都置为NULL,当内部时间耗尽后select便会退出。二、select延时程序实例#include <stdio.h>#include <stdlib.h>#include <time.h>#inclu

2021-10-24 12:04:33 1418

原创 Linux应用层定时器timer使用---timerfd_create()、timerfd_settime()、timerfd_gettime()

一、timerfd相关函数及说明#include <sys/timerfd.h>int timerfd_create(int clockid, int flags);int timerfd_settime(int fd, int flags, const struct itimerspec *new_value, struct itimerspec *old_value);int timerfd_gettime(int fd, struct itimer

2021-10-21 22:45:03 4210

原创 Linux---MISC杂项驱动

一、MISC 驱动简介MISC 驱动其实就是最简单的字符设备驱动,所有的 MISC 设备驱动的主设备号都为 10,不同的设备使用不同的从设备号。MISC 设备会自动创建 cdev,不需要像我们以前那样手动创建,因此采用 MISC 设备驱动可以简化字符设备驱动的编写。我们需要向 Linux 注册一个 miscdevice 设备, miscdevice是一个结构体定义在文件 include/linux/miscdevice.h 中,内容如下:struct miscdevice { int minor

2021-10-06 21:42:08 353

原创 Linux---Pinctrl子系统与GPIO子系统

一、Pinctrl子系统pinctrl子系统主要完成工作:1、获取设备树中 pin 信息2、根据获取到的 pin 信息来设置 pin 的复用功能3、根据获取到的 pin 信息来设置 pin 的电气特性,比如上/下拉、速度、驱动能力等pinctrl子系统源码目录:drivers/pinctrl,主要涉及 2 个对象: pin controller、 client device。前者提供服务:可以用它来复用引脚、配置引脚。后者使用服务:声明自己要使用哪些引脚的哪些功能,怎么配置它们driver

2021-10-06 16:31:27 2140

原创 使用Ubuntu挂载解析ubi文件与使用mkfs.ubifs、ubinize制作ubi文件

一、应用背景客户嵌入式系统启动即Crash,由于特殊原因没有打开抓取dump的功能,所以无法知晓客户系统Crash的原因。但基本确认是客户在文件系统中添加自己的应用程序启动后导致的,我们拿到故障机后导出rootfs分区对应ubi文件,需要将其挂载,然后排查核心文件是否被修改或者损坏或者其他原因导致Crash(因为原嵌入式系统挂载即Crash,我们需要使用Ubuntu挂载,然后排查)。UBI文件系统不能直接挂载,而是要用 nandsim 模拟出一个 mtd 设备,而且这个 mtd 设备要与 ubi 镜像的

2021-09-17 12:14:05 6064

原创 Linux休眠与唤醒---wakelock唤醒锁与autosleep功能使用

一、Linux系统休眠在嵌入式设备中由于省电功耗等原因我们需要让系统在不忙的时候进入休眠模式,Linux pm core提供给我们wakelock及autoslepp内核休眠机制。autosleep 和 wakelock是并行存在,只有 wakelock 唤醒锁全部释放且 autosleep 为 enable 时候系统才能进入休眠;二、autosleep功能节点路径为/sys/power/autosleep,该值为mem表示打开autoslepp功能,如果值为off表示关闭。如果没有此节点路径,我

2021-09-11 17:59:37 5576

原创 typedef定义函数指针及注册回调函数的一般步骤

1、typedef定义一个自定义类型的函数指针2、定义及初始化函数指针并将指针赋值为NULL3、定义注册函数,将入参的函数指针赋值给第2步我们定义的函数指针变量(该指针一般为全局变量,至少本文件全局可见)。4、编写我们自定义类型函数指针对应的函数实现。5、main函数中先注册回调函数,然后使用全局的函数指针即可调用我们已注册的第4步编写的函数实现。具体实例如下:#include<stdio.h>typedef void (*my_function_CallBackFun)(in

2021-09-08 10:57:23 904 1

alsa-lib 1.2.6源码

alsa-lib 1.2.6源码

2022-02-17

alsa-utils 1.2.6源码

alsa-utils 1.2.6源码

2022-02-17

rtl8189ES_linux_v5.8.9.tar.gz

RTL8189 wifi驱动源码,已在高通平台编译通过,测试AP和STATION模式均正常。

2021-08-01

linux ssv6x5x驱动快速编译方法.txt

linux ssv6x5x驱动快速编译方法

2021-08-01

南方硅谷ssv6x5x 驱动移植用户指南.doc

wifi芯片SSV6158驱动移植指南

2021-08-01

wifi-ssv6158.zip

南方硅谷SSV6158 wifi芯片驱动源码(linux平台)

2021-08-01

SPI网卡DM9051参考设计电路.rar

DM9051 SPI转网卡设计电路参考

2021-08-01

lnx_dm9051_dts_Ver2.2zcd.rar

DM9051网卡驱动(SPI转网卡芯片,支持DTS设备树的LINUX平台驱动源码)

2021-08-01

i2c-tools-4.2.tar.xz

Linux i2c测试工具源码,可make编译成自己平台的i2c-tool工具

2021-07-18

Office2010.cjstyles.7z

Office2010.cjstyles适用于Inno编译或者其他编译器缺少该部分环境组件。该组件主要用于Xtreme Skin Framework动态效果图。

2020-12-07

Office2007.cjstyles.7z

Office2007.cjstyles适用于Inno编译或者其他编译器缺少该部分环境组件。该组件主要用于Xtreme Skin Framework动态效果图。

2020-12-07

HLK学习笔记.docx

本资料主要介绍了Windows HLK,HLK测试环境,HLK部署方案,HLK测试工作流程,在测试服务器上安装 Controller 和 Studio,创建计算机池,相关认证及测试失败疑难解答

2020-04-16

NDIS拨号原理(华为).pdf

NDIS拨号原理(华为),华为内部资料,主要讲解了NDIS简介,NDIS层次划分,NDIS业务流程及NDIS部分问题解答。

2020-04-16

dosfstools.zip

解决Linux操作系统中缺乏用于块设备操作的mkdosfs及dosfsck命令。根据附件中的 dosfstools.src.tar.gz 文件,用文件传输工具上传到服务器解压,然后make CC=arm-linux-gcc编译,把得到的可执行mkdosfs文件cp到我们的 /work/nfs_root/first_fs/usr/sbin/目录下即可使用。

2019-07-14

[嵌入式Linux.C语言应用程序设计].华清远见培训(完整版PDF-带书签).zip

嵌入式 L inux C 语言应用程序设计,华清远见嵌入式培训中心 编著,本书共13章(完整版PDF,带书签)

2019-06-01

s3c2440开发板Jlink烧写配置

解决原s3c2440a_embedclub.jflash配置不能适配多种Flash类型的问题,可自适应开发板flash类型,可通过JLINK加载该配置实现下载supervivi及其他bootloader。

2017-10-30

海信TLM4777说明书

海信老款电视机使用说明书,型号为TLM4777,05年上市,支持高清电视显示

2017-10-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除