自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux驱动APP读取键值

在做单片机开发时,要读取 GPIO 按键,我们通常是执行一个循环来不断地检测 GPIO 引脚电平有没有发生变化。。这 4 种方法不仅仅用于 GPIO 按键,在所有的 APP 调用驱动过程中,都是使用这些方法。

2023-11-10 14:05:47 227 1

原创 设备树相关的函数和简单教程

设备树的处理过程是:dtb - > device_node - > platform_device。

2023-11-10 14:01:36 298 1

原创 内核对设备树的处理

platform_device. name 和 platform_driver. driver. name。

2023-11-09 17:04:55 133 1

原创 设备树的格式和属性

根节点也有 compatible 属性,用来选择哪一个“machine desc”:一个内核可以支持 machine A,也支持 machine B,内核启动后会根据根节点的 compatible 属性找到对应的 machine desc(机器描述) 结构体,执行其中的初始化函数。reg 属性的值,是一系列的“address size”,用多少个 32 位的数来表示 address 和 size,由其父节点的#address-cells、#size-cells 决定。它的值是字符串,用来表示节点的名字。

2023-11-08 17:09:00 241 4

原创 设备树的引进和作用

以 LED 驱动为例,如果想更换 LED 的 GPIO 引脚,需要修改程序源码、重新编译驱动、重新加载驱动。在内核中,使用同一芯片的板子,他们使用的外设资源不一样,比如 LED 需要指定哪个引脚,怎么指定?需要在 C 代码中指定。但是随着 ARM 芯片的流行,越来越多·的没有技术含量的资源文件被保存在内核中。所以 Linux 之父 Linus 大发雷霆:“this whole ARM thing is a fcking pain in the ass”。于是 Linux 内核开始引进设备树。

2023-11-01 21:07:55 31 1

原创 总线设备驱动模型

platform_device. name 和 platform_driver. driver. nameplatform_driver. id_table 可能为空,这时就比较这俩。

2023-10-21 11:10:36 19 1

原创 驱动设计思想

比如 board_A.c 使用芯片 chipY,那就可以写出 chipY_gpio.c,它实现芯片 Y 的 GPIO 操作,适用于芯片 Y 的所有 GPIO 引脚。下层的代码分为两个:chip_demo_gpio. c 实现通用的 GPIO 操作,board_A_led. c 指定使用哪个 GPIO, 即“资源”。对于同一个主芯片,操作 led 的步骤是一样的,因此我们可以针对该芯片写出比较通用的硬件操作代码。使用时,我们只需要在 board_A_led. c 中指定使用哪个引脚即可。

2023-10-13 21:30:28 24

原创 Linux驱动入门

【代码】Linux驱动入门。

2023-10-12 22:12:10 17

原创 Linux文件IO

接触过 Linux 的同学都知道,在 Linux 中一切皆文件。所有的文件都是通过"文件 IO"来操作的,所以这很重要。那么 Linux 的文件都是从哪里来的呢?

2023-10-10 17:21:44 17 1

原创 Linux正确的关机方法

为什么要将关机方法呢?不是直接拔掉电源或者直接“x”掉不就关了吗?这种“暴力”的方法在 Windows 下是可以偶尔用一下的,但是在 Linux 下不建议这么做。因为 Windows 是单人假多任务,关机不会对别人有影响。而 Linux 是可能有很多人同时工作,直接关机会对别人产生影响。另外,最大的问题是若不正常关机,则可能会对文件系统造成损坏(因为来不及将数据传回到文件)。由于 Linux 系统的关机/重启是很重大的系统运行,所以很多 distributions(发行版)只有 root 才有权限进行。

2023-09-28 11:48:06 188

原创 Linux线上求助指令

因为 Linux 下的指令有很多,我们不可能每个都记住,所以我们需要查阅相关的说明文档,Linux 是个开源的软件,很多开发者为了让大家能够了解指令会制作很多文件,我们可以用指令直接查阅这些文档。

2023-09-27 17:53:46 26

原创 Linux指令的使用

不过在新版的系统中,由于多了一个“bash_completion”这个软件,这个软件会主动侦测“各个指令可以下达的选项与参数”等行为,所以“文件补全”功能可能会变成“选项、参数补齐”的功能,不一定是“文件补全了”。可以使用[shift]+[Page Up]来往前翻页,使用[shift]+[Page Down]来往后翻页。这个按键的使用频率也很高,当我们输入错误的指令或者参数时,这个指令或者程序会在系统下面“跑不停”,这个时候就可以使用 [Ctrl]-c 来让这个程序 "停掉"了。

2023-09-26 17:48:05 25

原创 Linux磁盘分区

每个分区都有自己的开机扇区(boot sector);图中的系统盘分为第一和第二区;实际的可开机的核心文件是放置在各分区内的;loader 只会认识自己的系统盘内的可开机核心文件,以及其他 loader 而已;loader 可直接指向或是间接将管理权转交给另一个管理程序。

2023-09-25 17:56:04 22 1

原创 Makefile的使用

当我们执行 make clean 时会在文件里找 clean 这个目标,当当前目录下没有 clean 这个文件时会执行下面的命令,但当前目录下有 clean 这个文件时由于有 clean 这个文件且没有依赖文件,就无法判断文件的修改时间导致无法执行 make clean 的操作。是可以的,但是当文件多起来这样会很麻烦,而且使用这样的命令会对所有的文件都处理一次,效率会非常低。就可以知道了,比如a.c 的时间比a.o 的时间新,就表明a.c 被修改了,然后对a.c 单独进行编译就好了。

2023-09-20 14:49:10 25 1

原创 Linux的gcc命令

一个 C/C++文件要经过预处理、编译、汇编、链接才能生成可执行文件。运行:不需要把静态库 libsub. a 放到板子上。在日常交流中通常将"编译"统称为这四个步骤。交叉编译需要在最后加上。

2023-09-17 21:42:06 40 1

原创 1.Obsidian准备工作

Obsidian笔记软件的多端同步

2023-09-13 15:45:48 289 1

空空如也

空空如也

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

TA关注的人

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