自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 玩转STM32-FATFS-2-文件系统读写

11

2022-02-12 12:10:53 369

原创 玩转STM32-FATFS-1-新建工程

一、CubeMX配置1.1、SPI配置测试上板载GD25Q16,CPOL=1,CPHA=1,这里配置上拉SPI引脚。1.2、FATFS配置配置完毕生成工程。二、添加代码2.1、spi flash代码 需要实现读一个sector和写一个sector。2.2、fatfs操作代码...

2022-02-11 10:58:23 329

原创 一、linux应用实验-10.1-搭建web服务器

11

2022-01-12 11:55:21 483

原创 一、linux驱动实验-15.1-4G模块EC20通信

11

2021-12-29 10:01:57 854

原创 一、linux驱动实验-14.1-imx6ull驱动MT7601

一、开发环境和准备资料1.1、开发环境1.2、准备资料MT7601源码:http://链接:https://pan.baidu.com/s/1u8HJett5bmHgWzyktPQdhg 提取码:njt2二、源码移植2.1、解压将下载的源码放在虚拟机目录下解压;2.2、修改MakeFile①、增加linux内核和编译器路径ifeq ($(PLATFORM),PC)# Linux 2.6LINUX_SRC = /home/zk...

2021-12-22 11:20:59 479

原创 一、linux驱动开发-13.1-I2C

问题:我只有设备树匹配时,加载驱动后,probe未匹配,加上传统匹配方式后就能匹配,?

2021-12-13 14:47:36 589

原创 一、linux驱动开发-12.1-PWM

二、驱动编写2.1、设备树修改2.2、使能PMW驱动三、pwm测试

2021-12-10 14:21:46 541

原创 一、linux驱动开发-11.1-INPUT子系统

一、前言linux内核专门做了一个input子系统的框架来处理输入实践。输入设备的本质还是字符设备,只是在其基础上套上了input框架。二、子系统2.1、简介input子系统就是管理输入的子系统,和pinctrl、gpio子系统一样,都是linux内核针对某一类设备而创建的框架,如下:驱动编写只需要关注中间的驱动层、核心层、事件层,分工如下:驱动层:输入设备的具体驱动程序,比如按键驱动程序,向内核层报告输入内容。...

2021-12-08 22:22:05 933

原创 一、linux驱动开发-10.1-MISC驱动

一、前言misc驱动也叫杂项驱动,就是某些外设无法进行分类的时候就可以使用MISC驱动。MISC驱动其实就是字符设备驱动,通常嵌套在platform总线驱动中。二、简介所有的MISC设备驱动的主设备号都为10,不同的设备使用不同的次设备号。MISC设备会自动创建cdev,不需要手动创建,因此可以简化字符设备驱动的编写。2.1、定义MISC设备linux中用miscdevice表示一个MISC设备,如:struct misc...

2021-12-06 21:32:00 291

原创 一、linux驱动开发-9.1-linux自带的led灯

一、前言之前对于led,都是自己去编写驱动,其实向led这样基础的设备,内核已经集成了,linux内核的led驱动采用了platform框架,只需要按照要求添加相应的led节点。二、内核自带led驱动配置2.1、内核配置在linux内核目录下输入make menuconfig进入配置界面:配置保存后,输入make编译。2.2、设备树添加...

2021-12-05 22:53:51 330

原创 一、linux驱动开发-8.2-设备树下platform驱动

11

2021-12-05 20:38:30 765

原创 一、linux驱动开发-8.1-platform设备驱动

一、驱动的分离与分层1.1、驱动的分隔与分离通过驱动的分隔,也就是将主机驱动和设备驱动分隔开来,通过总线就行匹配,当我们向系统注册一个驱动的时候,总线就会在右侧的设备中查找,看看有没有与之匹配的设备,如果有的话就将两者联系起来。同样的,当向系统中注册一个设备的时候,总线就会在左侧的驱动中查找看有没有与之匹配的设备,有的话也联系起来。1.2、驱动的分层驱动分层类似网络的7层模型,不同的层负责不同的内容。...

2021-11-30 22:53:53 2212

原创 一、linux驱动开发-7.3-异步通知实验

11

2021-11-29 21:16:36 480

原创 一、linux驱动开发-7.3-非阻塞IO实验

11

2021-11-28 21:19:43 259

原创 一、linux驱动开发-7.2-阻塞IO实验

一、前言上一节在应用程序中通过read不断读取按键状态,这样就会占用很高的CPU使用率,用top指令查看下:现在换种方法,当按键没被按下的时候休眠,当有按键事件发生的时候才运行,并打印按键值,这样就可以降低CPU利用率。...

2021-11-21 21:12:53 350

原创 一、linux驱动开发-7.1-阻塞和非阻塞IO

一、阻塞和非阻塞IO1.1、简介当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将应用程序对应的线程挂起,直到设备资源可以获取为止。对于非阻塞 IO,应用程序对应的线程不会挂起,它要么一直轮询等待,直到设备资源可以使用,要么就直接放弃。非阻塞访问方式,当设备不可用或者数据未准备好的时候会立即向内核返回一个错去码,表示数据读取失败。 在open函数中用O_NONBLOCK标志打开设备文件1.2、阻塞IO处理方式...

2021-11-21 16:33:46 764

原创 一、linux驱动开发-6.1-中断

一、中断简介内核提供了完善的中断框架,只需要申请中断,然后注册中断处理函数即可。1.1、中断API1.1.1、中断号 每个中断都有一个中断号,通过中断号即可区分不同的中断。1.1.2、request_irq用于申请中断,可能会导致睡眠,因此不能在中断上下文或者其他禁止睡眠的代码中使用,次函数会激活(使能)中断,因此不需要手动去使能中断 。/*@Decription:申请中断@irq:要申请的中断号@handler:中断处理函数@...

2021-11-21 15:07:05 378

原创 一、linux驱动开发-5.1-内核定时器

11

2021-11-21 00:14:31 558

原创 LWIP笔记之一:FreeRTOS基础工程

软件环境:STM32CubeMx V6.3.0,Firmware Package V1.8.4,keil硬件平台:armfly STM32-V6

2021-11-10 20:58:07 386

原创 一、linux驱动开发-4.1-按键输入

1

2021-11-03 22:46:53 116

原创 二、RT-Thread设备与驱动-12-I2C

11

2021-11-01 23:09:21 140

原创 二、RT-Thread设备与驱动-11-WATCHDOG

qq

2021-11-01 23:07:36 104

原创 二、RT-Thread设备与驱动-10-SPI

11

2021-11-01 23:06:48 144

原创 二、RT-Thread设备与驱动-9-RTC

11

2021-11-01 23:06:07 174

原创 二、RT-Thread设备与驱动-8-PWM

11

2021-11-01 23:05:33 115

原创 二、RT-Thread设备与驱动-7-HWTIMER

11

2021-11-01 23:04:56 199

原创 二、RT-Thread设备与驱动-6-CAN

11

2021-11-01 23:04:15 111

原创 二、RT-Thread设备与驱动-5-DAC

11

2021-11-01 23:03:44 132

原创 一、linux应用编程-2.2-并发与竞争实验

一、原子操作实验使用原子操作来实现对led这个设备互斥访问,即一次只允许一个应用访问LED。 主要思想:①、在驱动入口函数处初始化原子变量lock为1;②、每次调用open函数打开设备的时候判断lock的值,如果为负数,则LED正在使用中;③、LED使用完毕,应用程序调用close时候,将lock加1,恢复成初始化值;部分代码如下:static int __init led_init(...

2021-11-01 22:47:11 77

原创 一、linux应用编程-2.1-并发与竞争

一、并发与竞争 并发就是多任务同时访问同一片内存区域,这些任务可能相互覆盖这段内存中的数据,造成数据混乱。 引起并发的原因大致可有分为以下几种:①、多线程并发访问②、抢占式并发访问,正常运行的线程可以被调度程序挂起,重而运行其他线程③、中断并发访问④、多核并发访问 因为并发,带来的问题就是竞争同一片共享数据区域,这个共享数据区域就是需要保护的对象,一般指多个线程都会访问的共享数据...

2021-10-31 09:43:44 151

原创 一、linux驱动开发-3.1-pinctrl和gpio子系统

一、前言 之前做gpio驱动开发的步骤:①、修改设备树、添加相应的节点。节点里设置reg属性,包括需要操作的寄存器。②、获取reg属性中寄存器地址后,初始化寄存器,设置gpio复用及和电气属性。 这一套操作比较繁琐,而且容易出错,因此linux内核对于GPIO这种基本驱动引入了pinctrl和gpio子系统。pinctrl子系统主要工作如下:...

2021-10-30 12:12:27 576

原创 一、linux驱动开发-2.2-设备树下的LED驱动

一、前言 之前都是在.c文件中定义有关寄存器物理地址,然后使用io_remap函数进行内存映射,得到虚拟地址,实现操作寄存器对应的虚拟地址控制GPIO的目的。 现在学了设备树,就用设备树向linux内核传递相关的寄存器物理地址,然后用of函数从设备树中获取需要的属性值,用获取到的属性值来初始化相关的IO。具体的步骤如下: ①、在.dts文件中创建相应的设备节点; ②、利用of函数获取设备树中相关属性; ③、使用获取到的属性值初始...

2021-10-27 21:55:26 260

原创 玩转STM32-硬件定时器

11

2021-10-26 09:21:10 242

原创 一、linux驱动开发-2.1-设备树

111

2021-10-24 22:18:10 1523

原创 一、linux驱动开发-1.4-新字符设备

前几章我们了解了字符设备开发的基本步骤,即:①、在入口函数里使用register_chrdev注册字符设备,在出口函数里使用unregister_chrdev注销该字符设备; ②、利用modprobe加载驱动模块; ③、驱动模块加载成功后,使用mknod创建设备节点。 这一套操作下载着实有点复杂

2021-10-23 20:48:34 402

原创 一、linux驱动开发-1.3-LED实验

一、前言 前面用一个虚拟的chrdevbase设备做了一个字符设备的开发,现在编写一个真正的linux字符设备-led。重点即是linux下引脚控制驱动。在此先了解一下MMU(内存管理单元),MMU的主要功能:①、完成虚拟空间到物理空间的映射; ②、内存保护,设置存储器的访问权限,设置虚拟存储空间的缓冲特性; linux内核启动后会初始化MMU,设置好内存映射,设置好后CPU访问的都是虚拟地址。获取实际硬件寄存器物...

2021-10-23 12:49:20 315

原创 一、linux应用编程-1.1-文件I/O

一、文件描述符二、open三、write四、read五、close六、lseek

2021-10-17 20:45:50 77

原创 一、linux驱动开发-1.2-字符设备实验

11

2021-10-10 22:05:37 308

原创 一、linux驱动开发-1.1-字符设备开发步骤

一、字符设备字符设备就是一个一个字节,按照字节流进行读写的设备,读写数据分先后顺序的。常用的led、按键,i2c,spi,lcd等都是字符设备。

2021-10-07 21:43:05 109

原创 玩转STM32-CAN通信一:环回模式

最近在研究CAN,先拿STM32练练。软件环境:STM32CubeMx V6.3.0,MCU Package V1.8.4,keil硬件平台:神舟IV号开发板STM32F107VCT6一

2021-07-30 16:46:32 3126 1

空空如也

空空如也

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

TA关注的人

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