自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 centos 7.3下安装vsftp(内含有视频教程)

1.说明 1)优快云上有很多关于centos配置vsftp的教程,但基本上配置出来不能用,不知道为什么。 2)教程为视频教程,请前往www.sharing-iot.com进行观看,课程名称为centos下搭建FTP。 3)搭建环境为阿里云+centos7.3+vsftp. 4)教程从安装VSFTP开始,到最后测试可用,大家跟着一步一步做,10分钟就好了。PS:一定要仔细,一定要仔细,一定...

2018-09-04 20:10:46 619

原创 十七、Linux设备驱动模型

Linux设备驱动模型概述

2025-12-13 14:58:30 122

原创 十六、一个基本的GPIO驱动程序

前面学习和了解了字符设备和文件系统是怎么关联起来的,这篇文章就来实践一下,加深前面的理解。我们写一个基本的GPIO引脚驱动用于驱动板载的LED灯和蜂鸣器,并在文件系统里面创建字符设备文件节点,用于控制GPIO引脚。

2025-12-07 11:37:41 303

原创 十五、设备文件与设备驱动是如何关联的

在Linux下,一切皆文件,这个说法对于字符设备也是成立的。对于字符设备,我们会在/dev目录下创建一个设备文件(也叫做设备节点),然后读写这个文件就可以实现应用程序与字符设备的交互。但是字符设备文件属于文件系统的范畴,而字符设备驱动属于字符设备子系统的范畴,那么它们是如何配合从而实现从文件系统的层面访问到字符设备的呢?这篇笔记要阐明的就是应用程序如何通过/dev目录下的字符设备文件名找到对应的字符设备驱动并实现与字符设备的交互。

2025-12-02 14:53:06 131

原创 十四、内核模块依赖关系

有的时候,一个内核模块会依赖另一个内核模块,比如引用另一个内核模块导出的参数,调用另一个内核模块提供的函数等等。

2025-12-01 10:22:24 172

原创 十三、Linux内核模块开发基础

对于宏内核,由于服务直接在内核态提供,故用户应用程序的数据可以通过系统调用直接交给内核服务处理,数据拷贝少;按照现代操作系统的内核派系,Linux属于宏内核,其所有的核心功能和服务都在内核里面提供;为了解决宏内核服务功能扩展的问题,Linux引入了内核模块,我们实现了模块功能并将其编译为.ko格式的内核模块文件后,就可以进行动态加载和移除,以此实现内核服务的扩展。对于宏内核,由于其服务也集成在内核里面,故内核镜像大,不易扩展,想添加新的功能需要重新编译内核;如果想查看内核输出的所有消息,可以使用。

2025-11-30 16:00:32 209

原创 十二、驱动开发环境准备

由于我的主机电脑没有固定的有线网口,所以用的USB转接网口,其插拔会影响主机的网络状态,故单独组件了一个brige网络,以免其插拔影响到虚拟机上网功能或者主机与虚拟机的连接。1.由于想用clangd实现vscode + clangd的代码精确跳转,所以需要一个较高的linux内核版本,但是又不想系统占用太大的空间,因此选择操作系统镜像选择debian-12服务器版。ens37:Host-Only,用于主机连接虚拟机,实现SSH和Samba共享等功能,IP = 192.168.189.100。

2025-11-29 14:47:54 249

原创 十一、Linux内核的构建和编译

linux的默认配置文件位于arch/arm/configs目录中,而u-boot的默认配置文件位于根目录下的configs中。

2025-11-25 20:30:48 104

原创 十、UBOOT学习笔记

kbuild配置系统中已经有一套默认的配置参数,对于跟默认值不同的参数,或者需要新增的配置参数,就放在xxx_defconfig配置文件中。根据实验的结果,环境变量使用EMMC还是SD卡取决于启动设备,如果是从EMMC里启动的UBOOT,则默认的当前mmc设备为EMMC,并且从EMMC里加载环境变量;的构建都是用./scripts/Makefile.build,所以接下来探索./scripts/Makefile.build。处,也就是说我们需要烧录的是uboot.imx,而不是uboot.bin。

2025-11-20 09:35:39 849

原创 C++类模板编程练习(从基础到进阶)

C++模板类编程练习

2025-04-25 14:19:46 281

原创 九、异常处理(Exception Handling)

本篇文章是《ARM Cortex-A v7》编程手册第九章—Exception Handling的学习笔记。

2024-03-12 21:31:25 2469

原创 八、访存顺序(Memory Ordering)

这篇文章记录了ARM架构中跟存储系统相关的学习笔记,包括存储类型,存储顺序,内存屏障等内容。

2024-02-02 21:20:00 1459

原创 七、内存管理单元(MMU)

本篇文章讲解了ARMv7里面的MMU知识以及MMU在操作系统里面的使用

2024-01-30 13:45:01 1238

原创 七、使用隐式规则(Using Implicit Rules)

本篇文章是《GNU Make》官方文档的第10章—Using Implicit Rules的学习笔记。

2024-01-26 21:30:45 679

原创 六、文本处理函数

本篇文章是《GNU Make》官方文档的第八章—Functions for Transforming Text的学习笔记

2024-01-17 21:38:04 889

原创 五、使用条件指令

本篇文章是《GNU Make》官方文档的第7章—Conditional Parts of Makefiles的学习笔记。

2024-01-13 11:14:25 597

原创 四、使用变量

本片文章是《GNU Make》官方文档第六章—How to Use Variables的学习笔记。

2024-01-08 20:50:03 937

原创 三、写配方(Recipes)

本片文章是《GNU Make》官方文档第五章—Writing Recipes in Rules的学习笔记。

2023-12-31 17:42:43 1578 1

原创 二、写规则(Rules)

本篇文章是《GNU Make》官方文档的第四章—Writing Rules的学习笔记。

2023-12-28 17:52:51 2110

原创 一、GNU Make基础

本篇学习笔记主要总结了《GNU make》里面前三章部分的一些重要知识点,引入了一些重要的概念,为方便后续章节的学习打下基础。

2023-12-20 21:37:03 1821

原创 六、Cache — 缓存

本篇笔记为《Cortex-A(armV7)编程手册》第8章 - Caches的学习心得,总结了Cache的基本原理和Cortex-A系列处理器的Cache结构知识。

2023-12-09 18:25:59 1625

原创 五、汇编语言和指令集

本篇笔记记录了指令集部分的学习心得体会

2023-11-09 21:51:21 322 1

原创 四、关于LDR伪指令

该笔记探讨和验证了LDR伪指令的工作原理,PC偏移值的计算方法。

2023-10-24 21:47:50 1446

原创 三、CP15协处理器

本篇笔记大概介绍了协处理器的概念,以及ARMv7-A架构里面的CP15协处理器的使用,寄存器的访问方法。

2023-10-21 17:50:52 561 1

原创 二、Cortex-A系列处理器模式和内核寄存器

本文是对ARM架构的处理器模式和CPU寄存器学习后的详细总结

2023-10-21 15:56:53 674 1

原创 一、烧录代码镜像到IMX6ULL上去运行

本文详细介绍了IMX6ULL启动设备的概念,分析了IMX6ULL的几种启动模式,以及如何生成和烧录代码镜像到启动设备。

2023-10-08 21:52:53 932 2

原创 八、INPUT子系统和内核自带的GPIO按键驱动

INPUT子系统和Linux内核自带的GPIO按键驱动

2023-04-17 17:35:17 735

原创 七、Linux的几种中断处理技术

总结归纳了Linux的几种中断处理技术

2023-04-17 16:31:53 368

原创 六、Linux的同步与互斥机制

介绍了Linux同步与互斥的一些基本知识

2023-03-31 16:14:11 181

原创 五、应用程序从驱动获取数据的几种方式

应用程序访问驱动的几种IO操作方式

2023-03-30 21:26:55 589

原创 四、引入总线设备驱动的概念,基于平台驱动的LED字符设备驱动

基于平台驱动实现的Linux LED字符设备驱动,支持多个LED灯,从基本的字符设备驱动的自定义设备结构体来表示一个LED,过渡到到使用通用的平台设备来表示一个LED灯

2023-03-04 12:16:18 191

原创 三、最终的LED字符设备驱动,体现驱动程序分层和分离的设计思想

经过进一步分层后的Linux LED驱动框架,将最初的LED驱动拆分为通用的系统级LED驱动框架 + 芯片相关的芯片级驱动 + 板级相关的板级驱动,体现了Linux驱动的分层设计思想和面向对象的接口抽象

2023-02-28 18:11:10 190

原创 二、改进后的LED字符设备驱动,体现驱动程序分层设计思想

经过分层后的Linux LED驱动框架,将最初的LED驱动拆分为通用的系统级LED驱动框架 + 芯片相关的芯片级驱动,体现了Linux驱动的分层设计思想和面向对象的接口抽象能力。

2023-02-28 16:55:23 148

原创 一、一个最基本的LED字符设备驱动

一个入门级别的LED字符设备驱动,不使用任何框架,简单粗暴,支持多个LED灯

2023-02-28 12:23:54 395

原创 基于IAP实现的STM32F系列固件升级(远程升级 + SD卡升级)

基于IAP技术对STM32系列芯片进行固件更新和升级,包括远程升级和SD卡,U盘升级等。

2022-10-30 19:29:06 3499

原创 内核自带的基于GPIO的LED驱动学习(三)

LED设备的创建

2022-10-16 11:53:04 783 6

原创 深入分析linux内核的内存分配函数devm_kzalloc

深入分析Linux内核里面的内存分配函数devm_kzalloc,了解其内存分配和自动释放的过程。

2022-10-04 12:21:14 11947 3

原创 内核自带的基于GPIO的LED驱动学习(二)

内核自带LED驱动的PROBE函数分析

2022-10-02 11:39:38 928

原创 内核自带的基于GPIO的LED驱动学习(一)

这篇博文主要分析了LED驱动的入口函数。

2022-09-26 20:48:51 688

嵌入式Linux LED字符设备驱动,基于平台驱动实现,使用设备树定义LED灯资源,引入pinctrl和gpio子系统

基于platform总线实现的LED字符设备驱动程序,使用设备树定义LED灯资源,引入pinctrl子系统配置GPIO引脚,引入gpio子系统获取和操作GPIO引脚。

2023-03-15

嵌入式Linux按键驱动,支持短按和长按检测

使用平台驱动框架,基于按键中断和内核定时器实现按键和长按检测,支持休眠-唤醒,POLL机制,异步通知和非阻塞的IO操作。

2023-03-15

Linux LED字符设备驱动,基于平台驱动的LED字符设备驱动,支持多个LED灯,体现Linux驱动的分层设计思想

整个驱动分为三个部分,板级驱动(led_dev.c)定义板级资源,芯片级驱动(led_imx6ull.c)定义了芯片相关的结构和操作,系统级驱动(leddrv.c)定义了字符设备相关的接口。更改硬件只需要替换led_dev.c,更换芯片需要替换led_dev.c和led_imx6ull.c

2023-03-04

Linux LED字符设备驱动,基于平台驱动的LED字符设备驱动,支持多个LED灯,没有体现分层设计思想

基于平台驱动的基本的LED字符设备驱动,支持多个LED灯,整个驱动分为两部分,一部分定义资源led_dev.c,一部分定义操作led_drv.c,未体现Linux驱动分层设计思想

2023-03-04

嵌入式Linux字符设备驱动-分层后的LED字符设备驱动-系统级驱动+芯片级驱动

基于最基本的Linux LED字符设备进行改进,在原来的基础上将驱动进行分层设计,拆分出通用的部分作为系统级驱动,剩余的跟芯片相关的部分作为芯片级驱动,以后系统级驱动和芯片级驱动可单独维护,互不影响。体现Linux驱动分层设计思想,以及面向对象的接口抽象。

2023-03-02

经过进一步分层后的Linux LED字符设备驱动,系统级驱动 + 芯片级驱动 + 板级驱动

经过进一步分层后的Linux LED字符设备驱动,进一步体现Linux驱动的分层设计思想,整个驱动 = 系统级驱动 + 芯片级驱动 + 板级驱动

2023-03-02

一个最基本的Linux LED字符设备驱动,支持多个LED灯

一个最基本的Linux LED字符设备驱动,纯字符设备驱动,不适用任何框架,支持多个LED灯。

2023-03-02

空空如也

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

TA关注的人

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