自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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的两篇官方文档

Device Class Definition for Human interface Devices和 HID Usage Tables两篇官方文章,保存起来,已被更换电脑后用

2019-01-10

read-copy-update

linux锁机制的经典文档,read - copy - update。来自linux社区。

2018-09-25

输入子系统编程模板

尴尬,我自己的某个博客要用。这个东西我不想设置分数的,结果不能为0分。

2018-07-29

51单片机移植的ucosii嵌入式操作系统

对ucosii中不必要的内容进行了裁剪。因为51单片机的idata很小,这份代码用了51单片内部的idata作为当前运行任务的任务栈,其它没被运行的任务的栈则被放置在内存较大的xdata区。但因为51单片机的汇编语句少,简单,可以作为其他处理器移植ucosii的模版和参考,同时也是学习51单片机递增以及高级应用的实例。

2018-07-22

基于51单片机移植的ucosii的代码

对ucosii中不必要的内容进行了裁剪。这份代码用了51单片内部的idata作为任务栈,因为51单片机的idata很小,所以这份代码可以运行的任务数量比较少。但因为51单片机的汇编语句少,简单,可以作为其他处理器移植ucosii的模版和参考。

2018-07-22

基于51单片机写的一个多任务切换的简易OS

里面代码是本人亲自手写的一个基于51单片机的多任务切换代码,核心代码只有不到200行,可以从代码层面方便单片机开发者了解任务切换的原理和使用,里面没有使用任何复杂的算法。

2018-07-22

linux0.11源代码

里面包含有linux0.11版本的原版代码和 赵炯博士对里面所有代码的注释。

2018-07-22

空空如也

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

TA关注的人

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