
#学习成长
文章平均质量分 76
ForestShy
这个作者很懒,什么都没留下…
展开
-
Linux驱动APP读取键值
在做单片机开发时,要读取 GPIO 按键,我们通常是执行一个循环来不断地检测 GPIO 引脚电平有没有发生变化。。这 4 种方法不仅仅用于 GPIO 按键,在所有的 APP 调用驱动过程中,都是使用这些方法。原创 2023-11-10 14:05:47 · 303 阅读 · 1 评论 -
设备树相关的函数和简单教程
设备树的处理过程是:dtb - > device_node - > platform_device。原创 2023-11-10 14:01:36 · 524 阅读 · 1 评论 -
内核对设备树的处理
platform_device. name 和 platform_driver. driver. name。原创 2023-11-09 17:04:55 · 195 阅读 · 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 · 432 阅读 · 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 · 90 阅读 · 1 评论 -
总线设备驱动模型
platform_device. name 和 platform_driver. driver. nameplatform_driver. id_table 可能为空,这时就比较这俩。原创 2023-10-21 11:10:36 · 55 阅读 · 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 · 75 阅读 · 0 评论 -
Linux驱动入门
【代码】Linux驱动入门。原创 2023-10-12 22:12:10 · 56 阅读 · 0 评论 -
Linux文件IO
接触过 Linux 的同学都知道,在 Linux 中一切皆文件。所有的文件都是通过"文件 IO"来操作的,所以这很重要。那么 Linux 的文件都是从哪里来的呢?原创 2023-10-10 17:21:44 · 60 阅读 · 1 评论 -
Linux线上求助指令
因为 Linux 下的指令有很多,我们不可能每个都记住,所以我们需要查阅相关的说明文档,Linux 是个开源的软件,很多开发者为了让大家能够了解指令会制作很多文件,我们可以用指令直接查阅这些文档。原创 2023-09-27 17:53:46 · 65 阅读 · 0 评论 -
Linux指令的使用
不过在新版的系统中,由于多了一个“bash_completion”这个软件,这个软件会主动侦测“各个指令可以下达的选项与参数”等行为,所以“文件补全”功能可能会变成“选项、参数补齐”的功能,不一定是“文件补全了”。可以使用[shift]+[Page Up]来往前翻页,使用[shift]+[Page Down]来往后翻页。这个按键的使用频率也很高,当我们输入错误的指令或者参数时,这个指令或者程序会在系统下面“跑不停”,这个时候就可以使用 [Ctrl]-c 来让这个程序 "停掉"了。原创 2023-09-26 17:48:05 · 64 阅读 · 0 评论 -
Linux磁盘分区
每个分区都有自己的开机扇区(boot sector);图中的系统盘分为第一和第二区;实际的可开机的核心文件是放置在各分区内的;loader 只会认识自己的系统盘内的可开机核心文件,以及其他 loader 而已;loader 可直接指向或是间接将管理权转交给另一个管理程序。原创 2023-09-25 17:56:04 · 79 阅读 · 1 评论 -
Makefile的使用
当我们执行 make clean 时会在文件里找 clean 这个目标,当当前目录下没有 clean 这个文件时会执行下面的命令,但当前目录下有 clean 这个文件时由于有 clean 这个文件且没有依赖文件,就无法判断文件的修改时间导致无法执行 make clean 的操作。是可以的,但是当文件多起来这样会很麻烦,而且使用这样的命令会对所有的文件都处理一次,效率会非常低。就可以知道了,比如a.c 的时间比a.o 的时间新,就表明a.c 被修改了,然后对a.c 单独进行编译就好了。原创 2023-09-20 14:49:10 · 50 阅读 · 1 评论 -
Linux的gcc命令
一个 C/C++文件要经过预处理、编译、汇编、链接才能生成可执行文件。运行:不需要把静态库 libsub. a 放到板子上。在日常交流中通常将"编译"统称为这四个步骤。交叉编译需要在最后加上。原创 2023-09-17 21:42:06 · 91 阅读 · 1 评论