linux驱动
文章平均质量分 62
缥缈孤鸿_jason
一个平凡的码农
展开
-
PCIE配置空间设置
通过设置pcie配置空间重新训练链路速率原创 2022-07-12 11:27:53 · 6598 阅读 · 1 评论 -
飞腾FT2000-4 GPIO设置方法
飞腾FT2000-4CPU GPIO设置方法原创 2022-06-10 17:09:30 · 2330 阅读 · 3 评论 -
nvme驱动架构分析1
分析了nvme驱动最主要的组成部分原创 2022-04-21 19:54:19 · 3213 阅读 · 1 评论 -
pcie设备bar地址空间映射到用户空间的方式
该程序通过指定pcie设备的vendor id和device id能够将设备的bar空间映射到用户空间,用户空间可以通过映射后的地址对bar进行读写操作,方便驱动调试。代码如下:#include <errno.h>#include <getopt.h>#include <fcntl.h>#include <inttypes.h>#include <locale.h>#include <stdio.h>#includ原创 2022-03-21 16:02:02 · 3842 阅读 · 11 评论 -
大页内存使用方式
linux系统下有时进行dma传输时需要申请连续物理内存空间,当需要申请大于4M的连续物理内存时可以使用大页内存地址。要使用 HugePages,首先要向内核声明可以使用的 HugePages 数量proc/sys/vm/nr_hugepages 文件保存了内核可以使用的 HugePages 数量我们可以使用以下命令设置新的可用 HugePages 数量:echo 20 > /proc/sys/vm/nr_hugepages上面命令设置了可用的 HugePages 数量为 20 个(也就.原创 2022-03-21 15:33:22 · 1361 阅读 · 0 评论 -
linux下用户空间操作物理内存地址
用户空间下通过将物理地址进行映射后进行读写操作,方便驱动调试。代码dev_mem.c如下:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <errno.h>#include <signal.h>#include <fcntl.h>#include <ctype.h>#inc原创 2022-03-21 15:25:15 · 861 阅读 · 0 评论 -
linux设备树分析3-生成platform_device
上篇讲了从dtb文件转换成device_node树,本篇分析device_node生成platform_device平台设备的过程。平台设备生成入口:在arch/arm64/kernel/setup.c文件中,入口函数为:arm64_device_init->of_platform_populateof_platform_populate在drivers/of/platform.c中定义:int of_platform_populate(struct device_node *roo原创 2021-09-07 15:56:33 · 1015 阅读 · 0 评论 -
linux设备树分析2-创建device_node树
二进制格式dtb设备树文件需要先转化成设备节点device_node结构,然后再将device_node转换成平台设备platform_device。device_node在文件 include/linux/of.h中:struct device_node { const char *name; /*保存节点名称属性*/ const char *type; /*节点类型*/ phandle phandle; /*节点句柄,该成员可以用于节点引用*/ const char *full_nam原创 2021-09-03 14:22:39 · 2893 阅读 · 0 评论 -
linux设备树分析1-设备树格式
随着linux的发展,代码越来越庞大,但创始人linus 觉得提交的代码很大一份是描述各种设备的,这部分代码对内核本身来讲意义并不大,为了将linux内核中大量的设备描述相关代码进行精简,从3.0版本起引入了设备树。dts设备树通过节点和其中的属性来描述设备,节点间可以进行嵌套,整个板子的所有设备包含在根节点中,根节点中的各子节点分别描述各个具体设备。根节点格式:/ {property=value;property=<value>;…};其中property表示属原创 2021-08-25 09:07:16 · 717 阅读 · 0 评论