子类_Kernel
文章平均质量分 71
KrisFei
工作记录.
展开
-
[笔记分享] [SPI] MSM8X60 SPI 小结
SPI 连接当MSM作为master的时候,SPI可以用来支持触摸屏。如下图:SPI 架构SPI主要由以下几个块构成,也可从图上看出: 1. 寄存器组状态和控制。提供内部总线接口,寄存器接口和核心控制。 2. 输出FIFO。保持所有输出数据。 3. 移位寄存器。提供串并和并串转换。 4. 输入FIFO。保持所有输入数据。 5. 时钟控制。给移位寄存器提供全局时钟和复位信号。 6原创 2017-08-20 23:47:53 · 843 阅读 · 0 评论 -
[笔记分享] [OS] Linux设备模型之驱动注册
overview这一章我们说下驱动是如何注册的。当然,我们这里和第三章一样,用platform上的的msm framebuffer platform_driver来举例,源文件为msm_fb.c。platform_driver结构如下: 由于name = “msm_fb”,后面会分析到,它将成为一个目录的名字,即/sys/bus/platform/msm_fb,而且也是用来和设备匹配的重要参数原创 2017-08-24 17:28:10 · 553 阅读 · 0 评论 -
[笔记分享] [OS] Linux的进程管理
Platform: msm8x60 Kernel: 2.6进程是不局限于一段可执行代码,还要包括其他资源,如打开的文件、信号、处理器状态、地址空间、数据及一个或者多个线程。多个进程可执行同一个程序。多个进程可共享打开的文件、地址空间之类资源。 线程是进程中的活动对象,每个线程都有独立的进程栈、程序计数器和寄存器组。内核调度的对象是线程,而不是进程。兄弟线程间共享地址空间、文件系统等资源。进程描述原创 2017-08-25 11:28:34 · 381 阅读 · 0 评论 -
[笔记分享] [OS] Linux的进程调度
Platform: msm8x60 Kernel: 2.6介绍多任务操作系统都可以让程序的并发执行,这种功能通过进程调度来实现。Linux提供了抢占式的多任务模式,由调度程序决定什么时候可以被抢占。策略进程分I/O消耗和处理器消耗型两种。I/O消耗型如键盘活动,处理器消耗型如视频解码。调度策略采用复杂的算法来决定哪个进程投入运行。一般都倾向于I/O消耗型进程。优先级有两种: 1. nice值原创 2017-08-25 13:23:35 · 393 阅读 · 0 评论 -
[笔记分享] [OS] Linux的中断处理
Platform: msm8x60 Kernel: 2.6介绍Linux将中断分为中断上半部和下半部。上半部用来处理紧急的和硬件操作相关的,下半部用来处理能够被允许推迟完成的中断处理部分。两者之间的界限依情况划分。 异常和中断不同,必须考虑时钟的同步,也称同步中断,如除0、缺页等。这里我们只讨论异步中断。中断处理程序注册注册函数如下:irq:要分配的中断号 handler: 中断处理函数,中原创 2017-08-25 13:34:26 · 957 阅读 · 0 评论 -
[笔记分享] [OS] Linux的内核同步
Platform: msm8x60 Kernel: 2.6介绍内核中可能由下列原因造成并发执行: 1. 中断。可在任何时刻发生。 2. 软中断和tasklet。能在任何时候唤醒它们。 3. 内核抢占。任务可能被另一个任务抢占。 4. 睡眠。在内核里睡眠会唤醒调度程序。 5. 多处理器。两个处理器执行相同代码。为此下面介绍解决并发的处理方法。有原子操作、自旋锁和信号量。其他我们用得较少,原创 2017-08-25 13:47:55 · 413 阅读 · 0 评论 -
[笔记分享] [OS] Linux的时间管理
介绍内核有大量函数基于事件驱动的。如对屏幕进行周期刷新,对运行时间和当前日期时间的管理等。 周期性时间多是由系统定时器驱动,也就是产生了定时器中断。 下面是一些利用时钟中断周期工作的任务: 1. 更新系统运行时间 2. 更新实际时间 3. 检查进程是否用尽时间片 4. 运行超时动态定时器 5. 更新资源消耗和处理器时间的统计值时间表示系统定时器频率用HZ定义,在系统启动时按照HZ对硬件原创 2017-08-25 13:55:28 · 650 阅读 · 0 评论 -
[笔记分享] [OS] Linux的内存管理
Platform: msm8x60 Kernel: 2.61.1 介绍 在内核中分配内存不像用户空间分配内存那么简单,如果分配出错,就会导致整个系统崩溃,而且内核内存没用户空间那么奢侈。1.2 页 内核管理内存以页为单位,这个也是基于MMU来划分的。在32位体系上, 大小为4K。用struct page表示:1.3 区 由于硬件限制,内核因此将内存划分为几个区,不同设备访问不同区域,如下:原创 2017-08-25 14:11:09 · 506 阅读 · 0 评论 -
[笔记分享] [DT] device tree之背景
Platform: MSM8X39 OS: Android4.4为什么需要device tree?以前每次porting一个新的平台时,需要重新配置平台的platform如machine type信息,然后重新build kernel才能适用于其他平台。随着当前嵌入式需要支持的平台越来越多,board-xxx.c这类文件也越来越多,kernel变得越来越庞大,不易Boss们维护。 还有那么的原创 2017-09-07 16:28:24 · 533 阅读 · 0 评论 -
[笔记分享] [DT] device tree之结构
Platform: MSM8X39 OS: Android4.4Overview:DT是以节点node的方式来描述的,每个node有property/value pairs的方式来描述device。除了root node没有parent之外,每个Node只有一个parent node。 如下是官方的一个简单例子,包含了platform, cpu, memory.实际Qualcomm用法原创 2017-09-07 16:36:13 · 634 阅读 · 0 评论 -
[笔记分享] [DT] device tree之属性
Platform: MSM8X39 OS: Android4.4之所以说它标准是因为规范里就有对它的定义,然后有对应的接口可以读取解析。当然 你也可以自己添加自定义的properties.compatibleProperty: compatible Value type: <stringlist> Des: 该属性被系统用来选择哪个driver来驱动device。 Value可以原创 2017-09-07 16:54:06 · 1818 阅读 · 0 评论 -
[笔记分享] [OS] Linux设备模型之设备注册
overview大部分device和driver都被包含在一个特定bus中,platform_device和platform_driver就是如此,包含在 platform_bus_type中。这里就以对platform_bus_type的调用为主线,浅析platform_device的注册过程,从而理解linux设备模型。platform_bus_type用于关联platform device和原创 2017-08-24 17:14:39 · 1255 阅读 · 1 评论 -
[笔记分享] [OS] Linux设备模型之基础概念
要想理解设备模型,首先需要知道它由哪些基本数据构成。包含有kobject、kset、device、device_driver、 bus、class、subsystem。下面分别介绍。kobject 主要函数: void kobject_init(struct kobject *kobj, struct kobj_type *ktype); int kobject_add(struct kobj原创 2017-08-24 16:44:12 · 488 阅读 · 0 评论 -
work queue in Linux 2.3.36
新work queue工作机制 工作队列(workqueue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。Linux的work queue在2.6.0 到2.6.19以及到2.6.36工作队列发生了一些变化。本文主要对新版本做一些分析。原创 2012-08-10 16:40:33 · 3181 阅读 · 0 评论 -
[笔记分享] [SPI] SPI 协议小结
1 Overview 本文先介绍了SPI协议的工作原理,然后再介绍了MSM8x60上SPI的特点。2 SPI 2.1 简介 同步外设接口(SPI)是由摩托罗拉公司开发的全双工同步串行总线,该总线大量用在与EEPROM、ADC、FRAM和显示驱动器之类的慢速外设器件通信。 SPI(Serial Peripheral Interface)是一种串行同步通讯协议,由一个主设备和一个或多个原创 2017-08-20 23:44:29 · 731 阅读 · 0 评论 -
[笔记分享] [中断] 中断申请释放以及上下半部
1.1 介绍 Linux将中断分为中断上半部和下半部。上半部用来处理紧急的和硬件操作相关的,此时所有当前中断线都被禁止,包括其它CPU。下半部用来处理能够被允许推迟完成的中断处理部分,此时中断是开启的。上下半部之间的界限依情况划分。 而异常和中断不同,必须考虑时钟的同步,也称同步中断,如除0、缺页等。这里我们只讨论异步中断。 1.2 中断注册/释放 1.2.1 注册函数 request_原创 2017-08-20 23:21:52 · 1912 阅读 · 0 评论 -
[笔记分享] [中断] MSM7201 Interrupt study report
OverviewScope本文主要介绍MSM7201平台中断机制,适合大多数开发平台。开头还介绍了一般ARM中断的原理。另外还分别介绍了MSM7201的PIC和VIC两种控制器来控制中断的原理以及他们的不同部分。 具体的MSM8x60的中断是如何处理的(包括原理、寄存器设置等)相关的文档还没找到。不过原理应该和MSM7201是差不多的。注意MSM7201和MSM8x60不同部分对中断的影响: 1原创 2017-08-20 17:58:33 · 691 阅读 · 0 评论 -
[笔记分享] [GPIO] MSM8x39 GPIO 软件部分小结
平台: MSM8X39 OS: Android4.4 Kernel: 3.10.28GPIO SW:Overview:在之前的msm8926平台以及以前的平台 ,GPIO 作为一个整体存在,也就是说是一个GPIO子系统,不区分是控制什么功能。而在未来的msm8939/msm8994平台,GPIO模块引起了kernel支持的pinctrl系统。出现pinctrl系统的原因应该是开发者想把GPI原创 2017-08-19 21:48:19 · 2091 阅读 · 0 评论 -
[笔记分享] [GPIO] MSM8x39 GPIO 硬件部分小结
平台: MSM8X39 OS: Android4.4 Kernel: 3.10.28术语及缩写:TLMM: Top-Level Mode Multiplexer. 此模块提供了一种机制可以让一组GPIO pads共享使用不同的功能。另外,对于 pin的缩写定义,有如下表格作参考。 这里要说明的”H”: 是指pin可以接高电压,例如3.0V,不过它的驱动能力最大只能到8mA了。GPIO H原创 2017-08-19 21:30:09 · 3289 阅读 · 0 评论 -
[笔记分享] [eMMC] 内核eMMC分区及对应名字读取
Chipset: msm8926 OS: Android4.4 Kernel: 3.4.0在N久之前的会议上留下了两个问题: 1. 内核在加载emmc驱动时是如何知道当前有几个分区的? 2. 如何知道/dev/mmcblkXpX对应的是哪个分区呢?读取分区加载sd/emmc驱动的时候,有如下流程: 来看看Check_partition(): 核心的部分是check_part这个结构体原创 2017-08-18 12:32:29 · 10275 阅读 · 4 评论 -
[笔记分享] [SD] SD读写测试程序
读写1M或者1K所花时间测试,测试文件默认放在/sdcard/sd.test(由于sdcard目录是fuse产生的,性能会收到影响,见下一篇文章 [RK3288][Android6.0] Fuse将被SDCardFS替换 ,所以建议换个目录)/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under th原创 2017-08-15 22:55:54 · 1534 阅读 · 0 评论 -
[笔记分享] [SD] 块设备驱动学习小结
Chipset: msm8926 OS: Android4.4 Kernel: 3.4.0相关概念:块设备与字符设备区别: 1. 以块传输,字符设备以字节为单位。 2. 有对应缓冲区。 3. 可以随机访问。可以不按传输顺序访问,比如访问的是1/10/3/2扇区,可以调整为1/2/3/10扇区。此设计是为了机械类块设备如硬盘设计的,对于SD/EMMC可以直接访问。Struct bloc原创 2017-08-15 22:44:33 · 853 阅读 · 0 评论 -
[笔记分享] [SD] msm8926 sd 探测流程
Platform: msm8926因为粘贴格式不对齐问题,所以截图了,字体太小在线或者下载放大。原创 2017-08-15 22:16:48 · 482 阅读 · 0 评论 -
[笔记分享] [SD] SD卡种类介绍
MMC:Multimedia card.7 pin。分MMC和SPI两种工作模式。SPI是MMC协议的一个子集,主要用于低数据传输率的系统,可以减少cost. RS-MMC:只是小型号的MMC。SD:Secure Digital Card. 数据传送和物理规范由MMC发展而来,比MMC稍微厚一点,与MMC兼容。 相对MMC增加了2 Pin作为数据线。 有CPRM功能(数据加密)。 SD1原创 2017-08-13 22:29:58 · 6130 阅读 · 0 评论 -
[笔记分享] [DT] device tree之中断
Platform: MSM8X39 OS: Android4.4overview设备使用中断通过interrupt-parent来指定interrupt source, 可以通过前面说的phandle来表示。 Interrupt source作为一个interrupt controller存在。当没有指定interrupt-parent时,DT会假设当前interrupt node是parent原创 2017-09-07 17:05:06 · 1399 阅读 · 0 评论