首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

第三课:linux内核设备处理

转载请注明文章地址 http://wiki.100ask.org/Linux_devicetree 这一课是设备中最重要一课。...前面我们从内核文档了解到,对于设备,它里面描述信息可以分为这三部分: Linux uses DT data for three major purposes: platform identification...事实内核设备处理,也会分为与其对应三部分: 对于platform identification,将在第02节_对设备中平台信息处理(选择machine_desc)进行分析; 对于runtime...简单处理 现在我们开始第一节,我们要从源头分析,uboot将一些参数,设备文件传给内核,那么内核如何处理这些设备文件呢?...设备只是起一个信息传递作用,对这些信息配置处理,也比较简单,即从设备DTB文件中,把这些设备信息提取出来赋给内核某个变量即可。

1.4K21
您找到你想要的搜索结果了吗?
是的
没有找到

Linux内核设备驱动之内核调试技术笔记整理

/****************** * 内核调试技术 ******************/ (1)内核源代码中一些与调试相关配置选项 内核配置选项中包含了一些与内核调试相关选项,都集中在...有用参数有: -t 显示调用发生时间 -T 显式调用所花费时间 -f 跟踪所有子进程 -p 跟踪特定进程 -o 将输出信息导入特定文件 (5)查看oops消息 oops是内核告知用户有不幸发生最常用方式...通常,发送完oops后,内核会处于一种不稳定状态。...在某些情况下,oops会导致内核混乱,而混乱结果就是死机,这些情况可能包括: *oops发生在持有锁代码中 *oops发生在和硬件设备通讯过程中 *oops在中断上下文中发生 *oops发生在idle...进程(0)或init进程(1),因为内核没有这两个进程没法工作 如果oops在其他进程运行时发生,内核会杀死该进程并尝试着继续运行。

2.1K41

Linux内核LED设备驱动框架【转】

因此,Linux中LED驱动框架把所有LED设备共性给实现了,把不同地方留给驱动工程师去做。...内核在启动过程中,内核需要按照先后顺序去进行初始化操作。因此,内核给是给启动时要调用所有初始化函数归类,然后每个类按照一定次序去调用执行。...这些分类名就叫.initcalln.init,n值从1到8。内核开发者在编写内核代码时只要将函数设置合适级别,这些函数就会被链接时候放入特定段,内核启动时再按照段顺序去依次执行各个段即可。...详见Linux设备管理:sysfs文件系统功能及其应用。 led_class_attrs结构体数组设置了leds设备属性,即led硬件操作对象和方法。...led_brightness (brightness_get)(struct led_classdev led_cdev):该函数用于获取LED设备的当前亮度值,LED驱动框架已实现led_get_brightness

2.5K10

Tina_Linux_Key_快速配置使用指南

/input/keyboard/matrix_keypad.c 修改设备文件 根据R528 原理图来添加对应行和列gpio,分别写在row-gpios 和col-gpios,详细设备文件为: matrix_keypad...设备文件这里示例是R328S3 方案级设备文件: lichee/linux-4.9/arch/arm/boot/dts/sun8iw18p1.dtsi 详细GPADC 配置如下: gpadc:gpadc...4.2 5.4 内核 4.2.1 LRADC-Key 5.4 内核LRADC 驱动功能与4.4/4.9 内核无明显变化,因此下面只介绍设备文件与配置教程。...-5.4 LRADC 按键配置图 4.2.2 GPADC-Key 5.4 内核GPADC 设备配置主要是时钟和中断方面有所改动,board.dts 配置可参考4.9 内核。...这里使用R329 来作为例子,其对应设备节点为: 图5-1: AXP 按键节点图 上报键值为KEY_POWER 116 5.1 4.9 内核 修改设备文件这里以R329-evb1 为例

2.3K30

DRV_05_GPIO按键驱动分析与使用

drivers\input\keyboard\gpio_keys.c 设备 IMX6ULL:Linux-4.9.88/arch/arm/boot/dts/100ask_imx6ull-14x14...设备示例 2.1 设备讲解 属性: 必备:compatible = "gpio-keys"; 可选: autorepeat: 表示自动重复,按下按键不松开,驱动会自动重复上报按键值 对于每一个...GPIO按键,都是一个子节点,有这些属性: gpios:使用哪个GPIO interrupts:对应中断 linux,code:对应按键值 注意:gpios和interrupts至少要保留一个,...gpios来描述用到引脚 gpio_keys_irq_isr:设备用interrupts来描述用到引脚 3.2 gpio_keys_gpio_isr分析 理想状况是:按下、松开按键,各产生一次中断.../bin 4.2 配置内核 QEMU内核里已经配置了GPIO按键设备,只需要编译出gpio_keys驱动程序即可。

1.9K20

【调试笔记】韦东山:在100ask_imx6ull移植使用六轴传感器ICM20608

我们需要阅读源码来确定设备上述4点内容。 1.2 ICM20608设备 100ASK_IMX6ULL开发板,ICM20608接在哪一个SPI控制器? ?...1.3 SPI控制器驱动程序 1.3.1 找到驱动程序 根据上述设备信息,在Linux内核源码目录下搜"fsl,imx6ul-ecspi",就可以找到SPI控制器驱动程序: book@100ask:...我们得找到设备处理代码,看看它是怎么从设备中设置cs_gpios,搜“cs_gpios”,得到: ?...在SPI设备节点中,用reg属性指定使用cs-gpios哪个片选(从0开始),如下: reg = ; 你看,我们只关心设备,似乎没怎么看驱动程序啊。...(我们曾经提供一个补丁,它处理是cs-gpio属性,最新版本内核已经去除了这个补丁,使用drivers/spi/spi.c处理是cs-gpios属性) 然后在开发板安装驱动程序: [root@imx6ull

2.2K20

Linux内核设备驱动之内核时间管理笔记整理

/****************** * linux内核时间管理 ******************/ (1)内核时间概念 时间管理在linux内核中占有非常重要作用。...(3)jiffies 全局变量jiffies用于记录系统启动以来产生节拍总数。 启动时,jiffies初始化为0,此后每次时钟中断处理程序都会增加该变量值。...(struct timeval *tv); current_kernel_time()该函数可用于获得timespec #include struct timespec current_kernel_time...:用户空间程序调用read函数从设备读数据,但设备中当前没有产生数据。...直到某些事件发生后,如设备接收到数据,则将进程重新设为运行态并进入运行队列进行调度。 休眠函数头文件是,具体实现函数在kernel/wait.c中。

2.6K31

第一课:linux设备引入与体验(基于linux4.19内核版本)

接下来我们要编译驱动程序,编译测试程序,并在单板测试一样。...dev这面有设备链表 drv这面也有驱动结构体链表 通过match函数进行对比,如果相同,则调用drv中probe函数 第05节_使用设备时对应驱动编程 本节介绍怎么使用设备怎么编写对应驱动程序...只是平台设备构建区别,以前构造平台设备是在.c文件中,使用设备构造设备节点原本不存在,需要在dts文件中构造节点,节点中含有资源 dts被编译成dtb文件传给内核内核会处理解析dtb...commpatible属性必须是 jz2440_led 才可以和驱动匹配成功 我们写驱动的人应该写一个文档,告诉写应用程序的人设备节点应该怎么编写 对于内核自带驱动文件,对应设备文档一般放在...网上搜索 实在不行就研究驱动源码 一个好驱动程序,它会尽量确定所用资源,只把不能确定资源留给设备,让设备来指定。

1.8K31

YolactEdge:首个开源边缘设备实时实例分割(Jetson AGX Xavier: 30 FPS)

YolactEdge 是第一个可在小型边缘设备以实时速度运行有竞争力实例分割方法。...在550x550分辨率图像,以ResNet-101为主干网YolactEdge 在Jetson AGX Xavier运行速度高达30.8 FPS(在RTX 2080 Ti运行速度为172.7...YolactEdge: Real-time Instance Segmentation on the Edge (Jetson AGX Xavier: 30 FPS, RTX 2080 Ti: 170...作者已经提供了YouTube VIS 、COCO数据集训练众多模型: ? ? 可以直接跑起来。 对于做研究同学来说,作者也提供了简单方便在主流数据集评估方法,方便改进后模型比较。 ?...另外,该代码提供了详细在已有和新数据集训练方法,方便做工程同学自己训练。 相关演示Demo: 总之,对于做实例分割同学来说,YolactEdge是近期非常值得参考算法。 ?

95840

用于物联网设备Linux发行版

11.06.18-Lunix-Distributions-1068x656-1.jpg 传统,在选择用于部署Linux发行版时,面临着很多麻烦。...这种发行版例子有Gentoo、Android和Yocto。 通常,这些基于源发行版通常对于嵌入式基于Linux设备尤其是IoT设备是首选。...鉴于当今普遍存在使用英特尔架构机器作为构建机器以及将ARM体系结构用于IoT产品情况,跨构建支持对于IoT设备至关重要。...以容器为中心发行版 传统Linux方法只提供内核外部所有平台单个统一用户空间。新模型是关于将用户空间组成一个“容器(containers)”集合。...BSP是包含Linux内核本身,设备驱动程序和用于启用硬件平台部分。它从一个更高级别开始,需要一个以docker支持为基础可运行Linux系统。

2.2K20

Linux 设备(DTS)深入理解

设备出现 一节说过设备出现是为了解决内核中大量板级文件代码,通过 DTS 可以像应用程序里 XML 语言一样很方便对硬件信息进行配置。...关于设备出现其实在 2005 年时候就已经在 PowerPC Linux 里出现了,由于 DTS 方便性,慢慢地被广泛应用到 ARM、MIPS、X86 等架构。...,我们就要写大量类似代码,当年 Linus 看到内核里有大量类似代码,很是生气并且在 Linux 邮件列表里发了份邮件,才有了现在设备概念,至于设备出现到底带来了哪些好处,先看一下设备文件...从上幅图里不难看出,其实设备出现在软件模型上相对于之前并没有太大改变,设备出现主要在设备维护上有了更上一层楼提高,此外在内核编译使内核更精简,镜像更小。...设备文件格式是 dts,包含头文件格式是 dtsi,dts 文件是一种程序员可以看懂格式,但是 Uboot 和 Linux 只能识别二进制文件,不能直接识别。

22.2K53

我眼中Linux设备(四 中断)

一般情况中断产生设备数量要多于中断控制器,多个中断产生设备中断都由一个中断控制器处理,这种多对一关系也很像一个树形结构,所以在设备中,中断也被描述成,叫中断。...以下表述时候为了明确是在说中断,在父节点和子节点前边我们都加上“中断”二字,是为了防止和设备父节点、子节点混淆(虽然大部分情况设备父子关系就是中断父子关系,但是因为存在特例,所以我们还是强调是中断父子关系...因为他中断父设备可能和设备设备不同,那么用interrupt-parent属性指向他中断父设备。...根据中断特性,一个设备中是有可能有多个中断。 以上是中断在设备中如何描述规则,听起来是挺复杂,但只要理解了就很简单,为了帮助理解我们举一个实际例子。...属性将下边所有设备中断映射到一个gic下边中断

2.4K70

【深度】韦东山:GPIO和Pinctrl子系统使用

下图是在100asK_imx6ull运行结果,通过对比设备可知gpiochip96对应gpio4: ?...在驱动代码不需要我们做任何事情。 GPIO本身需要确定引脚,这也需要在设备里指定。 设备树节点会被内核转换为platform_device。...如果连文档都没有,那只能参考内核源码中设备文件,在内核源码目录arch/arm/boot/dts目录下。 最后一步,网络搜索。 Pinctrl子节点样式如下: ?...3.3 在设备中添加GPIO信息 先查看电路原理图确定所用引脚,再在设备中指定:添加”[name]-gpios”属性,指定使用是哪一个GPIO Controller里哪一个引脚,还有其他Flag...在probe函数中获得GPIO 核心代码是第87行,它从该设备(对应设备设备节点)获取名为“led”引脚。在设备中,必定有一属性名为“led-gpios”或“led-gpio”。

9K74

内核中断系统中设备

irq_type) .map(hwirq,virq) (map就是建立联系作用,若是子中断,去设置父中断) 第04节_示例_在S3C2440使用设备描述中断体验 我们这节课之前所使用设备内核是一个阉割版本...\source_and_images\第5,6课源码及映像文件(使用了完全版设备)\内核补丁及设备 先解压原始内核(source_and_images\kernel): tar xzf linux...这个驱动程序就不现场编写了,毕竟我们主题是讲设备,而不是讲怎么写驱动程序。 源码路径 我们在以前按键驱动程序基础修改按键驱动程序。.../buttons_test & 然后按键 第06节_内核设备中断信息处理过程 中断结构 从硬件结构看, 处理过程分上下两个层面: 中断控制器, 使用中断设备; 从软件结构看, 处理过程分左右两个部分...    a.1 在设备描述     a.2 在内核驱动 b.

1.1K31

Linux MIPI DSI LCD设备驱动开发调试细节学习笔记(一)

时钟通道专用于在高速传输数据过程中传输同步时钟信号。此外,一个主机端可允许同时与多个从属端进行通信。(摘抄自网友) 那么,在Linux中调试MIPI LCD需要注意哪些细节呢?...,就是通用MIPI接口LCD驱动,它在Linux内核中位于driver/gpu/drm/panel目录下,对应文件是:panel-simple.c。...一般使用通用MIPI LCD驱动,我们只需要根据自己选购参数进行配置即可,也就是只需要配置设备即可顺利完成点屏操作,那么如何来配置相关参数呢?...这里我用是瑞芯微RV1109方案,在此借用荣品LCD设备我们来学习下它设备参数: &dsi { status = "okay"; rockchip,lane-rate = ;...Linux内核为我们提供了丰富文档: 有了这些文档,我们再来看上面设备树节点内容就简单多了,当然我们也可以结合代码来理解这些参数含义: 先列举一些重要参数: 1、enable-gpios

11.6K64

Linux 基础网络设备详解

这时在内核程序里,netdev_rx_handler_register()被调用,一个用于接受数据回调函数被注册。以后每当这个从设备收到数据时都会调用这个函数可以把数据转发到 Bridge 。...图 2 .VLAN 设备工作过程 如图所示,Linux 里 802.1.q VLAN 设备是以母子关系成对出现,母设备相当于现实世界中交换机 TRUNK 口,用于连接上级网络,子设备相当于普通接口用于连接下级网络...Linux 支持 VLAN 硬件加速,在安装有特定硬件情况下,图中所述内核处理过程可以被放到物理设备完成。...5) 由于对端 VETH 设备被加入到了 bridge0 ,并且内核发现它收到一个报文,于是报文被转发到 bridge0 。...Linux 配置网络设备命令举例 以 Redhat6.2 红帽 Linux 发行版为例,如果已安装 VLAN 内核模块和管理工具 vconfig,TAP/TUN 设备管理工具 tunctl,那么可以用以下命令设置前述网络设备

4.5K63

NVIDIA 悄悄升级了JetPack ,居然变了这么多?

特色一: 增强了Jetson AGX Xavier和Jetson Xavier NX安全引导功能,将加密支持扩展到内核内核dtb和initrd。...特色二: 支持磁盘加密以保护Jetson AGX Xavier、Jetson Xavier NX和Jetson TX2系列静态数据。 ——这个其实和L4T无关, 是Linux本身就有的功能....特色三: 对于Jetson TX2系列、Jetson TX1和Jetson Nano模块以及开发套件,支持从USB驱动器或NVME根文件系统加载内核设备和initrd。 ——这个就厉害了!...因为以前有客户反映, 加了NVME硬盘后, 只能当成数据盘,而不能从该盘启动(即, 载入内核, 设备, RAMDISK, 根文件系统等等)。现在这次更新可以了....特色五: 更新所有Jetson Nano开发包引导固件,将引导固件重新定位到集成QSPI-NOR。开发工具包中microSD卡将仅用于未来操作系统/应用程序存储。

1.3K40
领券