自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (38)
  • 收藏
  • 关注

原创 Linux嵌入式驱动开发18——I2C通信

文章目录I2C简介i2c-dev.hi2c.hTSC2007代码测试设备树I2C简介ls /dev这里拿我们的七寸LVDS屏幕的触摸芯片为例子,通过底座的原理图,可以看到LVDS使用了I2C3的接口i2c-dev.h打开文件/include/uapi/linux/i2c-dev.hi2c_rdwr_ioctl_data 结构体代码如下所示/* This is the structure as used in the I2C_RDWR ioctl call */struct i2

2021-02-28 21:47:16 2217 3

原创 Linux嵌入式驱动开发17——输入子系统

文章目录什么是输入子系统什么是输入子系统/* * Copyright (c) 1999-2002 Vojtech Pavlik * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 as published by * the Free Software Foun

2021-02-28 10:18:03 609

原创 Linux嵌入式驱动开发16——按键消抖实验(内核定时器)

文章目录Linux内核定时器概念Linux内核定时器基础知识Linux内核定时器相关函数时间转换函数ms转换时钟节拍函数us转换时钟节拍函数宏DEFINE_TIMERadd_timer函数del_timer函数mod_timer函数示例代码按键消抖Linux内核定时器概念Linux内核定时器基础知识Linux内核定时器相关函数时间转换函数ms转换时钟节拍函数us转换时钟节拍函数宏DEFINE_TIMERadd_timer函数del_timer函数mod_tim

2021-02-25 21:18:29 1206

原创 Linux嵌入式驱动开发15——等待队列和工作队列

文章目录等待队列阻塞与非阻塞等待队列基础知识等待队列头等待队列相关函数init_waitqueue_head宏wait_event宏wait_event_interruptible宏wake_up宏wake_up_interruptible宏等待队列示例代码分析代码编写验证源码driver.capp.c工作队列什么是工作队列工作队列的工作原理工作队列相关APIDECLARE_WORK宏INIT_WORK宏schedule_work工作队列示例代码分析代码等待队列阻塞与非阻塞等待队列基础知识所以用

2021-02-25 16:32:41 790

原创 Linux嵌入式驱动开发14——中断的原理以及按键中断的实现(tasklet中断下文)

中断中断基础什么是中断?中断上下文Linux中断现在不可以嵌套设备书中的中断节点和相关函数设备树中的中断节点中断相关函数获取中断号相关函数申请中断函数中断处理函数free_irq函数按键中断实验(gpio_to_irq函数获取中断号)配置设备树驱动编写错误排查oops信息结果验证查看中断信息按键中断实验(interrupt-parent和interrupts属性信息获取中断号)中断基础什么是中断?中断上下文Linux中断现在不可以嵌套设备书中的中断节点和相关函数设备树中的中断节点设备

2021-02-24 21:38:52 2184

原创 Linux嵌入式驱动开发13——ioctl接口(gpio控制使用)

文章目录什么是unlocked_ioctl接口?unlocked_ioctl和read/write函数有什么相同和不同unlocked_ioctl接口命令规则命令的合成宏与分解宏合成宏分解宏测试程序使用_IOmodule_leds.cMakefileapp.c结果使用_IOW使用_IOR实验结果完整代码module_leds.capp.c我们从平台总线模型,然后到pinctrl和gpio子系统,会发现步骤逐渐的规范,代码也逐渐的简单,也越来越能体会到linux屏蔽底层硬件的优势。在之前的代码中,在wri

2021-02-22 23:32:43 3870

原创 Linux嵌入式驱动开发12——pinctl和gpio子系统实践操作

文章目录什么是pinctrl和gpio子系统pinctel子系统功能什么是pinctrl和gpio子系统在学习单片机(比如51单片机和STM32)的时候,我们可以直接对单片机的寄存器进行操作,进而达到控制pin脚的目的。而Linux系统相较于一个单片机系统,要庞大而复杂得多,因此在Linux系统中我们不能直接对pin脚进行操作。Linux系统讲究驱动分层,pinctrl子系统和GPIO子系统就是驱动分层的产物。如果我们要操作pin脚,就必须要借助pinctrl子系统和GPIO子系统。pinctrl

2021-02-21 23:50:02 1765

原创 Linux嵌入式驱动开发11——平台总线模型修改为设备树实例

设备树平台总线模型平台总线模型driver.c代码匹配设备树节点dts设备树of_device_id结构体匹配compatible获取设备树节点信息方法一:直接获取结果验证方法二:简介获取分析代码结果验证物理地址到虚拟地址映射of_iomap验证结果平台总线模型之前学习了平台总线模型,对于平台总线模型使用了匹配device和driver的方法,到了设备树中,其实同理,也是需要把我们的driver文件和设备树的节点信息匹配,那么这里就直接使用之前的平台总线模型的测试代码进行改动。平台总线模型driver

2021-02-17 16:50:01 872

原创 Linux嵌入式驱动开发10——设备树开发详解

常用名词解释<1>DT:Device Tree设备树<2>FDT: Flattened Device Tree展开设备树开放固件,设备树起源于OF,所以我们在设备树中可以看到很多有of字母的函数<3>device tree source(dts)设备树代码<4>device tree source, includeDTB(dtsi)????更通用的设备树代码,也就是相同芯片但不同平台都可以使用的代码<5>device tree

2021-02-16 18:05:17 1484

原创 Linux嵌入式驱动开发09——平台总线详解及实战

文章目录平台总线模型介绍平台总线模型介绍什么是平台总线模型?平台总线模型也叫platform总线模型,是Linux内核虚拟出来的一条总线,不是真正的总线为什么会有平台总线模型?平台总线模型的优点怎么编写以平台总线模型设计的驱动?...

2021-02-08 16:43:29 1502

原创 Linux嵌入式驱动——杂项设备驱动 字符设备驱动 小结

2021-02-05 22:20:31 303

原创 Linux嵌入式uboot使用tftp网络启动加载zImage、dtb到内存,文件系统本地启动

文章目录前言1.进入uboot2.uboot基本内容helpprintenv3.bootcmdmmcboot4.tftp服务打开注意5.设置env环境变量电脑的本机IP开发板的从机IPzImagedtb6.手动下载 tftp zImage7.手动下载 tftp ${ftd_addr} ${fdt_file}8.手动 bootz ${loadaddr} - ${fdt_addr} 启动9.操作写入环境mmcbootboot10.saveenv恢复uboot默认设置前言对于uboot还是要好好的理解和学习,

2021-02-05 16:51:48 4386 1

原创 Linux嵌入式驱动开发08——字符设备(步步为营)

文章目录驱动模块传参传递普通的参数 char int传递数组字符设备和杂项设备的区别申请字符类设备号第一种 静态分配设备号dev_t类型第二种 动态分配注销设备号代码验证静态分配代码验证动态分配代码小结注册字符类设备注册杂项设备cdev结构体步骤一:定义一个cdev结构体步骤二:使用cdev_init函数初始化cdev结构体成员变量步骤三:使用cdev_add函数注册到内核步骤四:使用cdev_del函数注销代码设备节点自动创建设备节点步骤一:使用class_create函数创建一个class的类步骤二:使

2021-02-05 15:57:42 1061

原创 WSL运行慢,可能是没有把ubuntu挂载到WSL2(安装步骤)

文章目录启用“虚拟机平台”可选组件安装Ubuntu使用命令行设置要由 WSL 2 支持的发行版启用“虚拟机平台”可选组件以管理员身份打开 PowerShell 并运行:Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform或者直接在这里打开启用这些更改后,你需要重新启动计算机。安装Ubuntu使用命令行设置要由 WSL 2 支持的发行版管理员运行PowerShell查看版本wsl --se

2021-02-03 15:59:35 8391

原创 Linux嵌入式驱动开发07——GPIO驱动过程记录(飞凌开发板)

1. 在/arch/arm/boot/dts/imx6q-pinfunc.h查找/arch/arm/boot/dts打开头文件imx6q-pinfunc.h查找EIM_A17#define MX6QDL_PAD_EIM_A16__GPIO2_IO22 0x0f4 0x408 0x000 0x5 0x02. 在设备树配置文件中添加设备节点定义以及其引脚定义然后,我们要在设备树中添加引脚定义,打开imx6qdl-sabresd.dtsiimx6qdl-sab

2021-02-03 15:35:38 2105

原创 Linux嵌入式驱动开发06——第一个相对完整的驱动实践编写

设计目标使用杂项设备完成一个蜂鸣器的驱动完成一个上层测试应用应用要求:在上层应用中传入参数1为打开蜂鸣器,传入参数0为关闭蜂鸣器分析想要操作蜂鸣器,就要完成read函数 open函数,等等,我们做驱动,大部分情况下也都是使用这几个函数。要完成上层应用的测试,就需要应用层和内核层传输数据,copy_to_user和copy_from_user代码beep.c#include <linux/init.h>#include <linux/module.h>

2021-02-02 22:18:06 1242

原创 Linux嵌入式驱动开发05——物理地址到虚拟地址映射

文章目录裸机中的操作MMU裸机中的操作在单片机和裸机中,对于硬件是这样来操作的unsigned int *p = 0x123456789;*p = 0x987654321;但是这样的操作在Linux上是不行的,在Linux上,如果想要操作硬件,需要先把物理地址转换成虚拟地址,因为Linux使能了MMU,所以我们在Linux上不能直接操作物理地址。MMU使能了...

2021-02-02 18:25:14 1263

原创 Linux嵌入式驱动开发04——应用层和内核层数据传输

文章目录应用层和内核层关系file_operations 文件集readwritepolliocontrolopenclose驱动例子file_operations modules代码编译 加载模块app代码编译验证小结应用层和内核层数据层传输read功能实践file_operations.capp.cwrite功能实践file_operations.capp.c对于Linux,一切都可以是文件文件为对应的操作有打开,关闭, 读写那么设备节点对应的操作有打开,关闭,读写如果我在应用层使用系统IO对

2021-02-02 15:08:08 1966

Linux嵌入式字符设备驱动模块(自动创建设备节点)modules_chrdev_auto

详细教程参考文章https://blog.csdn.net/szm1234/article/details/113615535

2021-02-08

Linux嵌入式飞凌开发板GPIO驱动模块modules_gpio_test

配套教程https://blog.csdn.net/szm1234/article/details/113586118

2021-02-08

Linux嵌入式应用层和内核层数据传输modules_file_operations

配套教程https://blog.csdn.net/szm1234/article/details/113487063

2021-02-08

Linux嵌入式杂项设备驱动模块modules_misc

配套教程https://blog.csdn.net/szm1234/article/details/113419471

2021-02-08

Linux嵌入式驱动模块modules_helloworld

自己编写测试,教程详见文章https://blog.csdn.net/szm1234/article/details/112601700

2021-02-08

QT编写的定时器Time

绝对好使

2021-02-08

QT编写的UDP上位机

绝对好使,配合教程https://blog.csdn.net/szm1234/article/details/112384152

2021-02-08

QT编写的TCP服务器

绝对好使,配合教程https://blog.csdn.net/szm1234/article/details/112384152

2021-02-08

QT编写的TCP客户端上位机

绝对好使,配合教程https://blog.csdn.net/szm1234/article/details/112384152

2021-02-08

STM32F407 HAL库实现EEPROM功能(实战项目中使用)

STM32F407 HAL库实现EEPROM功能(实战项目中使用),CubeMX生成初始化函数之后,对于EEPROM的实现,还是需要修改很多内容,从IIC到EEPROM服务函数,都打包在了资料中

2020-11-16

STM32F407 HAL库添加标准库中的delay函数

STM32F407 HAL库添加标准库中的delay函数,HAL库中只有HAL_Delay()函数实现延时,单位是ms,要实现us延时,不像标准库中delay_us()就可以了,所以增加了这个函数,来方便标准库转移到HAL库中的朋友使用习惯。

2020-11-16

STM32F407 EC11旋转编码器驱动函数

STM32F407 EC11旋转编码器驱动函数,里面写了好多个版本,可以根据需要使用,这个只是实现功能,实际要用,一般都在中断中,按照思路改到中断就可以了。

2020-11-16

AD8361芯片手册.pdf

官方的英文芯片手册,尽量还是看英文吧,虽然费劲。这个芯片针对射频功率的检测还是挺靠谱的,芯片手册主要也是内部结构还有参数等介绍。

2020-11-16

I.MX6Q英文参考手册(NXP官方)

i.mx6开发必备,NXP官网下载还得注册什么的,需要的还是去NXP官网直接下载吧,要是嫌麻烦,直接下载这个也一样。

2020-11-16

udp_echoserver DP83848网络服务函数库

udp_echoserver DP83848网络服务函数库,配合教程完美实现数据的收发,测试平台STM32F407,其他同理

2020-09-01

神经网络九步学习法(真正的深入浅出)

这个神经网络九步学习法是微软亚洲研究院推荐的,从最简单的讲起,彻底搞明白神经网络到底是怎么一会事儿,吃透了这个,后面的所有都是万变不离其宗

2020-08-02

魔笛stm32网络收音机.rar

基于STM32的网络收音机,附说明书,网络音频的实时传输的实现,感兴趣的欢迎一起交流研究,现在怎么还非得五十个字才行,还得凑字数,越来越麻烦了

2020-07-26

STM32超级好用的LM75库函数

这里需要LM75芯片A0 A1 A2全部接地才能用,不然需要更改I2C的地址,STM32下效果非常好

2020-06-13

绝对简单好用的迪文串口屏串口通讯协议库(STM32)

STM32环境下,绝对简单好用的迪文串口屏串口通讯协议库,这个我已经实际用了,实测DMT48270C043_04WN可以完美应用

2020-06-13

PIO_ESP32离线包

PIO_ESP32离线包 VS Code安装platformIO疯狂踩坑记 Arduino环境配置 https://blog.csdn.net/szm1234/article/details/124784452

2022-05-15

13.带FIFO的ADDA实验

配套文章 https://blog.csdn.net/szm1234/article/details/123454871?spm=1001.2014.3001.5501 本实验在DAC FIFO实验的基础上完成 把DAC输出模拟信号自环给ADC的模拟输入 ADC使用25MHz的时钟信号采样 ADC的输出的数据信号,用ILA抓取观察波形 用VIO配置频率字,分别生成1MHz和3MHz的DDS正弦波形,用Matlab分析频谱,验证频率的正确性。

2022-04-03

12.DAC FIFO实验

基于“DDS IP 数字波形合成DAC ” “ ADDA测试” 实验方案 用MMCM 把 合成出100MHz的时钟,让DDS工作在100MHz时钟 让DAC和DAC的接口电路工作在50MHz,此时DAC的采样率为50MHz 在DDS和DAC接口电路之间,放置一个带独立时钟的AXI-Stream-Data FIFO,FIFO两端的时钟分别为DDS的工作时钟100MHz和DAC的工作时钟50MHz DDS的数据输出接口需要有TREADY信号 DAC接口电路需要将FIFO输出端的AXI-S接口转换成DAC的接口格式,自行编写RTL代码完成该功能。 配套文章 https://blog.csdn.net/szm1234/article/details/123454871?spm=1001.2014.3001.5501

2022-04-03

11.DDS ADDA测试工程文件

注意,AN108是34针的插头,注意其插装位置,1脚和zynq底板对齐,不要插错 黑金AN108的低通滤波器通带为0-20MHz左右 基于“DDS IP 数字波形合成DAC ” 实验方案,使用50MHz时钟频率,使用DAC输出正弦波。 把DAC输出模拟信号自环给ADC的输入 使用MMCM分频,给ADC提供25MHz采样时钟 使用ILA捕获ADC的输出数据,不少于2048样点。 使用Matlab分析ADC数据频谱 用VIO更改频率字,生成1MHz和3MHz的正弦信号,用Matlab分析ILA数据验证频谱正确。 配套文章 https://blog.csdn.net/szm1234/article/details/123207043?spm=1001.2014.3001.5501

2022-04-03

10.DDS IP 数字波形合成

使用 Vivado的IPI工具,例化DDS IP DDS需要能够配置频率字(相位增量) DDS工作时钟使用PL的板载50MHz时钟 使用ILA工具观察波形, 使用VIO设定频率字 在ILA的波形窗口里,观察你设定的波形的周期,验证你频率字设定的正确性 把ILA波形导出到CSV文件,波形样点长度不小于2048点,在Matlab里分析波形的频谱,验证你生成波形的正确性。 使用VIO更改频率字,分别生成1MHz和3MHz的正弦波形。使用以上流程,验证你输出波形的正确性。 配套文章 https://blog.csdn.net/szm1234/article/details/123207043?spm=1001.2014.3001.5501

2022-04-03

Win11任务栏里华为电脑管家图标重叠怎么办?HwTrayWnd.dll

Win11任务栏里华为电脑管家图标重叠怎么办?

2021-08-05

WM8960 音频编解码芯片 PCB、SCH、数据手册

WM8960 音频编解码芯片 PCB、SCH、数据手册

2021-05-28

SP3485 RS485半双工芯片 PCB、SCH、数据手册

SP3485 RS485半双工芯片 PCB、SCH、数据手册

2021-05-28

SN75179 R485全双工芯片 PCB、SCH、数据手册

SN75179 R485全双工芯片 PCB、SCH、数据手册

2021-05-28

PCA9306D IIC电平偏移芯片 PCB、SCH、数据手册

PCA9306D IIC电平偏移芯片 PCB、SCH、数据手册

2021-05-28

HR911105A_RJ45 100M网口 PCB、SCH、数据手册

HR911105A_RJ45 100M网口 PCB、SCH、数据手册

2021-05-28

CH455G键盘扫描芯片PCB,SCH,数据手册

CH455G键盘扫描芯片PCB,SCH,数据手册

2021-05-28

AX88772A/B/C USB以太网芯片PCB,SCH,数据手册,参考电路

AX88772 USB以太网芯片PCB,SCH,数据手册

2021-05-28

24LC256 EEPROM存储器PCB,SCH,数据手册

24LC256 EEPROM存储器PCB,SCH,数据手册

2021-05-28

Python疫情数据的爬虫和可视化显示(实现地图数据显示)

配套博文https://blog.csdn.net/szm1234/article/details/112717515,Python疫情数据的爬虫和可视化显示,中国地图可视化显示

2021-02-10

Linux嵌入式驱动开发——平台总线实例modules_platform

配套博文https://blog.csdn.net/szm1234/article/details/113705050

2021-02-08

Linux嵌入式platform设备模块modules_platform_device

配套博文https://blog.csdn.net/szm1234/article/details/113705050

2021-02-08

Linux嵌入式platform驱动模块modules_platform_dirver

配套博文https://blog.csdn.net/szm1234/article/details/113705050

2021-02-08

空空如也

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

TA关注的人

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