- 博客(19)
- 资源 (8)
- 收藏
- 关注
原创 设备树学习(十八、番外篇-中断子系统之初始化一个中断控制器)
一、前言上一篇写到,使用设备树的情况下,对所有的中断控制器进行了检索,提取到一个链表中。并对这些中断控制器中所谓的父中断控制器进行检索,并按照等级一次初始化。本文就以一种常见的中断控制器VIC的初始化为例,进行分析。void __init of_irq_init(const struct of_device_id *matches){ ...... ret = des...
2019-02-28 08:15:39 1174
原创 设备树学习(十七、番外篇-中断子系统之内核对中断控制器的解析)
一、介绍关于中断的初始化我们从start_kernel函数开始head_common.S b start_kernel(void); .... local_irq_disable(); /* 关中断 */ .... setup_arch(&command_line); pagi...
2019-02-27 23:52:07 1221
原创 设备树学习(十六、番外篇-中断子系统之IRQ number和中断描述符)
本片继续参考蜗窝大神的文章,且用4.19版本的内核进行透彻的分析。http://www.wowotech.net/sort/irq_subsystem一、前言本文主要围绕IRQ number和中断描述符(interrupt descriptor)这两个概念描述通用中断处理过程。第二章主要描述基本概念,包括什么是IRQ number,什么是中断描述符等。第三章描述中断描述符数据结构...
2019-02-27 00:08:25 1795
原创 设备树学习(十五、番外篇-中断子系统之IRQ Domain介绍)
之前的文章分析过没使用设备树时,中断是如何初始化的https://blog.csdn.net/qq_16777851/article/details/82556519用一句话总结就是,启动过程,通过mach_id找到,machine_desc,之后调用machine_desc->init_irq函数来实现,中断的初始化。这种方式,因为所有的中断都是在代码中写死的,不易修改。 ...
2019-02-26 08:02:39 4651 1
原创 设备树学习(十四、引入设备树对中断的影响)
在老的内核中断是在完全由所谓的板级支持包中指定的,同时相关的寄存器地址这些也都是在代码中写死的。这种代码没法在多个SOC上通用,这个就导致大量的重复代码出现。在2.6.35.7内核中,SMDKV210单板是这样描述的MACHINE_START(SMDKV210, "SMDKV210") /* Maintainer: Kukjin Kim <kgene.kim@samsung....
2019-02-24 19:09:10 1430
原创 设备树学习(十三、有了设备树后新内核对于设备处理的不同之处)
有了设备树之后,内核对设备的处理蜗窝大神也就在它的设备树引入中说了。http://www.wowotech.net/device_model/why-dt.html 这里我把主要的几句话复制总结出来:针对重复的代码问题,如果不同的SOC使用了相同的IP block(例如I2C controller),那么这个driver的code要从各个arch/arm/mach-xxx中独立出来...
2019-02-24 15:53:32 1307
原创 设备树学习(十二、uboot如何给内核传dtb文件)
在通过tag给内核传参时,是只需要知道内核的地址就可以了。因为uboot给内核传的参数一般是放到内存的某个地址,因为tag所占的内存比较小,所以一般都时放在内存的起始地址+0x100的位置之后直接使用,bootm + 内核所在内存的地址bootm <uImage_addr>在使用了设备树之后,一般我们是这样启动的bootm <uImage_addr>...
2019-02-23 14:52:06 7243 1
原创 设备树学习(十一、内核中设备树的操作函数)
内核中开放出来的接口函数的声明大多在include/linux/下面,关于设备树的都是以ofxxx.h形式命名 这里介绍一下各个头文件中是关于那些的函数of_fdt.h // dtb文件的相关操作函数, 我们一般用不到, 因为dtb文件在内核中已经被转换为device_node树(它更易于使用)b. 处理device_nodeof.h ...
2019-02-23 13:42:27 2558
原创 设备树学习(十、在根文件系统中查看设备树)
在设备树第七节中,我们知道了在内核启动时,是把dtb文件所在的内存块保留了下来。而这个内存块是可以在内核中查看的。查看的位置在sys文件系统中。因为dtb文件是二进制文件,所以要用hexdump命令来查看。 hexdump -C /sys/firmware/fdt 部分信息如下,和我们传给内核的dtb文件里的完全一样 当然在/sys/firmware/文件...
2019-02-23 12:54:34 8606 1
原创 设备树学习(九、platform_device和platform_driver如何让匹配)
关于这个问题,我之前在分析2.6内核的时候是已经分析过的。https://blog.csdn.net/qq_16777851/article/details/81350037 同时在总线驱动模型章节也是从基础知识学习,到最终实现过一个简单的bus的,想要深入学习,最好看下面这个专栏。(基于4.x内核)https://blog.csdn.net/qq_16777851/colu...
2019-02-23 00:12:34 3900 3
原创 设备树学习(八、设备节点到平台设备的转换)
一、那些节点可以转换成平台设备?首先,要说明的是设备树最初是为了解决大量重复的platform_device在mach-xx目录下,但在实现的过程重,设备树体现的是一个电路板的信息,添加了bootargs,memory,clock,interrupt等非platform_device的节点,这样就不能对所有的device_node转换成platform_device。(memory,int...
2019-02-22 21:38:10 5198 2
原创 设备树学习(七、dtb到设备节点的转换)
首先我们看一下内核中对一个设备节点的表示struct device_node { const char *name; //节点的名字 const char *type; //device_type属性的值 phandle phandle; //对应该节点的phandle...
2019-02-21 00:09:20 4845 3
原创 设备树学习(六、设备树对运行时配置信息的处理)
上一节学习了在linux启动期间如何找到的最佳匹配的单板machine_desc;‘asmlinkage __visible void __init start_kernel(void) setup_arch(&command_line); mdesc = setup_machine_fdt(__atags_pointer);在setup_machine_...
2019-02-19 22:48:43 1870
原创 设备树学习(五、设备树对平台信息的处理machine_desc)
1. 简介内核提供了一个重要的结构体struct machine_desc ,这个结构体在内核移植中起到相当重要的作用,内核通过machine_desc结构体来控制系统体系架构相关部分的初始化。machine_desc结构体的成员包含了体系架构相关部分的几个最重要的初始化函数。同时一个内核可以支持多块单本,所以一个zImage里可以包含多个machine_desc结构体。他们通常被组织成一个特...
2019-02-18 23:43:59 2727
原创 设备树学习(四、内核head.S对uboot传参的处理)
之前在uboot学习中分析bootm原理的,我们知道了uboot启动内核是通过传入三个参数来启动的。kernel_entry为内核zImage在内存的首地址。之前我们传的三个参数分别是:0,芯片的机器ID,uboot给内核参数tag在内存的首地址r2。 查看上面截图的代码,可以看到r2也可以是另设备树文件(dtb)在在内存的地址。 对于使用tag传参给内核,机器的I...
2019-02-17 20:49:13 4264 2
原创 设备树学习(三、设备树dtb格式和结构)
上一节我们学习了dts文件的格式,dts文件是方便我们书写和读写的格式。本节我们来学习一下经过Device Tree Compiler编译,Device Tree source file变成了Device Tree Blob(又称作flattened device tree)的格式。 首先先给出dtb文件的格式一个dtb文件分为4个段,分别是ftd_header,memory re...
2019-02-15 22:21:45 5658
原创 设备树学习(二、设备树dts/dtsi格式)
说明:后续的博文参考自韦东山老师的设备树视屏,老师用的是2440的开发板,我用的是s5pv210的开发板。原理一样一、前言简单的说,如果要使用Device Tree,首先用户要了解自己的硬件配置和系统运行参数,并把这些信息组织成Device Tree source file。通过DTC(Device Tree Compiler),可以将这些适合人类阅读的Device Tree sou...
2019-02-14 22:17:00 23810 5
原创 从零开始之驱动发开、linux驱动(四十三、移植新的4.19版本的内核)
在kernel.org下载最新版本的内核,我下载的是linux-4.19版本的因为新的内核只支持设备树方式启动,所以打算开始学习设备树。本篇博文不分析任何设备树的东西,只做移植使用。先保证内核可以启动后再开一个专栏学习设备树。同时,19年准备回西安老家换份linux驱动相关的工作,如果看到这篇文章的西安公司有相关职位空缺,可以联系我邮箱。1152016254@qq.com...
2019-02-13 23:08:38 4030
原创 设备树学习(一、设备树基础)
1、设备树的引入Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a fucking pain in the ass”,ARM Linux社区对此作出了回应,引入设备树。ARM Device Tree起源于OpenFirmware (OF),在过去的Linux中,arch/arm/plat-xxx和arch/...
2019-02-13 20:48:56 24479
USB_HID的两篇官方文档
2019-01-10
51单片机移植的ucosii嵌入式操作系统
2018-07-22
基于51单片机移植的ucosii的代码
2018-07-22
基于51单片机写的一个多任务切换的简易OS
2018-07-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人