
ARM Driver
江南3708
好好学习,天天向上。
展开
-
Linux 输入子系统
转载地址:http://www.cnblogs.com/myblesh/articles/2367648.html输入子系统由驱动层、输入子系统核心、事件处理层三部分组成。一个输入事件,如鼠标移动、键盘按下等通过Driver->Inputcore->Event handler->userspace的顺序到达用户控件的应用程序。 驱动层:转载 2017-09-28 09:23:16 · 329 阅读 · 0 评论 -
hello.ko---Makefile
hello.ko的Makefile文件与普通的hello.c编译成hello可执行文件有些不同。hello.ko是要进行交叉编译,所谓的交叉编译是在本机上编译的程序不在本机上运行,在其他机器上执行。Makefile:obj-m := hello.oexport ARCH=armexport CROSS_COMPILE=arm-none-linux-gnueabi-KERDI原创 2017-11-20 16:20:13 · 7042 阅读 · 0 评论 -
内核编译obj-m和obj-y的区别
在内核编译时,主要涉及一下文件:kernel/arch/arm/configs/*.defconfig kernel/driver/*/Makefilekernel/driver/*/Kconfig如果我们想要往内核中增加新的节点,还要涉及到设备树文件,kernel/arch/arm/boot/dts/在进行模块编译时,主要有两个选项,obj-m和obj-y,而与内核密切相关的原创 2017-11-20 17:18:21 · 39145 阅读 · 1 评论 -
hello.ko---linux设备驱动程序
Hello World 模块#include #Include static int __init hello_init(void){printk("This is my first driver module-hello.ko\n");printk("Hello World\n");return 0;}static void __exit he原创 2017-11-20 15:44:20 · 364 阅读 · 0 评论 -
linux内核驱动编译
在内核编译obj-m和obj-y的区别一文中,我们提到内核编译所涉及的文件,其中kernel/driver目录下的Makefile文件与Kconfig文件与驱动编写密切相关。下面我们对这两个文件进行讨论。我们以 kernel/driver/i2c/目录下的文件为例进行说明。在内核源码目录下,内核编译后会生成一个 .config文件,在.config文件中,我们发现有的选项是y,即编译进内核原创 2017-11-21 13:28:44 · 1010 阅读 · 0 评论 -
Linux中网络接口简介
原文地址:http://soft.chinabyte.com/os/327/11628327.shtml1、linux的网络接口之扫盲 (1)网络接口的命名 这里并不存在一定的命名规范,但网络接口名字的定义一般都是要有意义的。例如: eth0: ethernet的简写,一般用于以太网接口。 wifi0:wifi是无线局域网,因此wifi0一般指无转载 2017-11-21 15:04:22 · 2753 阅读 · 0 评论 -
eMMC的MMC模式与SPI模式
原文地址:http://blog.51cto.com/laokaddk/1248818MMC存贮卡可以分为MMC和SPI两种工作模式,MMC模式是标准的默认模式,具有MMC的全部特性。而SPI模式则是MMC存贮卡可选的第二种模式,这个模式是MMC协议的一个子集,主要用于只需要小数量的卡(通常是1个)和低数据传输率(和MMC协议相比)的系统,这个模式可以把设计花费减到最小,但性能转载 2017-11-23 14:53:09 · 6387 阅读 · 0 评论 -
linux内核中的GPIO系统之(1):软件框架
一、前言作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务。对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非常简单的任务,例如GPIO driver、LED driver。往往CPU datasheet的关于GPIO或者IO ports的章节都是比较简单的,非常适合刚入行的工程师。虽然GPIO子系统相关的硬件比较简单,没有复杂的协议,不过,对于软件抽象转载 2018-01-01 19:12:14 · 474 阅读 · 0 评论 -
linux内核中的GPIO系统之(2):pin control subsystem
一、前言在linux2.6内核上工作的嵌入式软件工程师在pin control上都会遇到这样的状况:(1)启动一个新的项目后,需要根据硬件平台的设定进行pin control相关的编码。例如:在bootloader中建立一个大的table,描述各个引脚的配置和缺省状态。此外,由于SOC的引脚是可以复用的,因此在各个具体的driver中,也可能会对引脚进行的配置。这些工作都是比较繁琐转载 2018-01-01 19:15:35 · 471 阅读 · 0 评论 -
Linux内核中的GPIO系统之(3):pin controller driver代码分析
一、前言对于一个嵌入式软件工程师,我们的软件模块经常和硬件打交道,pin control subsystem也不例外,被它驱动的硬件叫做pin controller(一般ARM soc的datasheet会把pin controller的内容放入GPIO controller的章节中),主要功能包括:(1)pin multiplexing。基于ARM core的嵌入式处理器一般会提转载 2018-01-01 19:17:52 · 611 阅读 · 0 评论 -
linux内核中的GPIO系统之(4):pinctrl驱动的理解和总结
1. 前言本站之前的三篇文章[1][2][3]介绍了pin controller(对应的pin controller subsystem)、gpio controller(对应的GPIO subsystem)有关的基本概念,包括pin multiplexing、pin configuration等等。本文将基于这些文章,单纯地从pin controller driver的角度(屏蔽掉p转载 2018-01-01 19:22:03 · 2361 阅读 · 1 评论 -
linux内核中的GPIO系统之(5):gpio subsysem和pinctrl subsystem之间的耦合
1. 前言按理说,kernel中gpio subsystem和pinctrl subsystem的关系应该非常清楚:pinctrl subsystem管理系统的所有管脚,GPIO是这些管脚的用途之一,因此gpio subsystem应该是pinctrl subsystem的client(也可叫做backend、consumer),基于pinctrl subsystem提供的转载 2018-01-01 19:23:57 · 657 阅读 · 0 评论 -
Linux动态频率调节系统CPUFreq之一:概述
随着技术的发展,我们对CPU的处理能力提出了越来越高的需求,芯片厂家也对制造工艺不断地提升。现在的主流PC处理器的主频已经在3GHz左右,就算是智能手机的处理器也已经可以工作在1.5GHz以上,可是我们并不是时时刻刻都需要让CPU工作在最高的主频上,尤其是移动设备和笔记本电脑,大部分时间里,CPU其实工作在轻负载状态下,我们知道:主频越高,功耗也越高。为了节省CPU的功耗和减少发热,我们有必要根据转载 2018-02-07 10:06:23 · 408 阅读 · 0 评论 -
Linux动态频率调节系统CPUFreq之二:核心(core)架构与API
上一节中,我们大致地讲解了一下CPUFreq在用户空间的sysfs接口和它的几个重要的数据结构,同时也提到,CPUFreq子系统把一些公共的代码逻辑组织在一起,构成了CPUFreq的核心部分,这些公共逻辑向CPUFreq和其它内核模块提供了必要的API,像cpufreq_governor、cpufreq_driver等模块通过这些API来完成一个完整的CPUFreq体系。这一节我们就来讨论一下核心转载 2018-02-07 10:09:15 · 350 阅读 · 0 评论 -
Linux动态频率调节系统CPUFreq之三:governor
在上一篇文章中,介绍了cpufreq的core层,core提供了cpufreq系统的初始化,公共数据结构的建立以及对cpufreq中其它子部件提供注册功能。core的最核心功能是对policy的管理,一个policy通过cpufreq_policy结构中的governor字段,和某个governor相关联,本章的内容正是要对governor进行讨论。/*******************转载 2018-02-07 10:10:54 · 1134 阅读 · 0 评论 -
Linux电源管理(4)_Power Management Interface
1. 前言Linux电源管理中,相当多的部分是在处理Hibernate、Suspend、Runtime PM等功能。而这些功能都基于一套相似的逻辑,即“Power management interface”。该Interface的代码实现于“include/linux/pm.h”、“drivers/base/power/main.c”等文件中。主要功能是:对下,定义Device PM相关的回调函数...转载 2018-03-06 09:40:48 · 416 阅读 · 0 评论 -
Linux电源管理(6)_Generic PM之Suspend功能
1. 前言Linux内核提供了三种Suspend: Freeze、Standby和STR(Suspend to RAM),在用户空间向”/sys/power/state”文件分别写入”freeze”、”standby”和”mem”,即可触发它们。内核中,Suspend及Resume过程涉及到PM Core、Device PM、各个设备的驱动、Platform dependent PM、CPU co...转载 2018-03-06 09:42:37 · 594 阅读 · 0 评论 -
Suspend to RAM和Suspend to Idle分析,以及在HiKey上性能对比
1. Linux内核suspend状态Linux内核支持多种类型的睡眠状态,通过设置不同的模块进入低功耗模式来达到省电功能。目前存在四种模式:suspend to idle、power-on standby(Standby)、suspend to ram(STR)和sudpend to disk(Hibernate),分别对应ACPI状态的S0、S1、S3和S4。State in LinuxLab...转载 2018-04-23 10:13:35 · 6949 阅读 · 1 评论 -
clk_get_rate函数
在 kernel/include/linux/clk.h中定义函数原型:unsigned long clk_get_rate(strcut clk *clk);含义:获得时钟源(clock source)的当前时钟频率(HZ),前提是此时钟源已经enable。而对于clk_get_rate函数而言,其实是从clk_get得到的某设备结构体中获得该设备的时钟频率。clk_get在原创 2017-11-20 14:02:35 · 3742 阅读 · 0 评论 -
clk_get函数介绍
定义:kernel/include/linux/clk.h实现:kernel/drivers/clk/clkdev.c使用该函数时,我们一般第一个参数传入NULL,第二个参数是我们要查找的硬件上的那部分时钟。在kernel目录下,使用 grep -wrn "clk_get"命令,可以查找到内核中clk_get函数使用的地方。在传入dev=NULL时,该函数调用clk_get_s原创 2017-11-20 14:39:55 · 4452 阅读 · 0 评论 -
主板芯片组与内存映射
[转]: 主板芯片组与内存映射 原文标题:Motherboard Chipsets and the Memory Map原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]转载 2016-12-21 11:48:57 · 449 阅读 · 0 评论 -
U-boot分析与移植(1)----bootloader分析
转载地址:http://www.cnblogs.com/wi100sh/p/4255072.html一、Boot Loader 概念就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境,他就是所谓的引导加载程序(Boot Loader)。转载 2017-08-11 17:04:42 · 393 阅读 · 0 评论 -
FastBoot BootLoader Recovery 模式解释
转载地址:http://www.mamicode.com/info-detail-532540.html标签:理论上,所有的Android设备都存在着Fastboot/Bootloader模式,不过,由于android操作系统的开源特性,各厂商的对 自家的相关Android设备都有着各自不同的Fastboot/Bootlader模式。当然,并非所有的厂商的都转载 2017-08-11 16:39:36 · 7629 阅读 · 0 评论 -
嵌入式系统Boot Loader启动全过程详解
本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软件设计的主要任务以及结构框架等内容。一. 引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot转载 2017-08-08 10:22:16 · 12656 阅读 · 2 评论 -
ARM-Linux程序开发
原文地址:http://www.cnblogs.com/beer/archive/2011/05/05/2037449.html目录一、Arm-Linux程序开发平台简要介绍... 31.1程序开发所需系统及开发语言... 31.2系统平台搭建方式... 4二、Linux开发平台搭建... 52.1安装虚拟工作站... 52.2安装Linux虚拟机... 5转载 2017-08-02 16:04:01 · 863 阅读 · 0 评论 -
OP-TEE初探
原文链接:http://blog.youkuaiyun.com/lhjncut/article/details/49907453首先介绍一下TEE,以及它与TrustZone的关系。摘录一段维基百科上对TEE(https://en.wikipedia.org/wiki/Trusted_execution_environment)的定义:The Trusted Execution Environ转载 2017-08-14 09:43:44 · 786 阅读 · 0 评论 -
i2c驱动程序全面分析,从adapter驱动程序到设备驱动程序
转载地址:http://blog.youkuaiyun.com/lizuobin2/article/details/51694574开发板 :mini2440内核版本:linux2.6.32.2驱动程序参考:韦东山老师毕业班i2c内容概括: 1、adapter client 简介 2、adapter 驱动框架 2.1 设备侧转载 2017-08-18 09:28:30 · 306 阅读 · 0 评论 -
linux下I2C驱动架构全面分析
转载地址:http://blog.youkuaiyun.com/wangpengqi/article/details/17711165I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线。 因此,I2C总线被非常广泛地应用转载 2017-08-16 20:03:52 · 288 阅读 · 0 评论 -
I2C编程接口
转载地址:http://blog.youkuaiyun.com/g_salamander/article/details/80646271、通信接口i2c发送或者接收一次数据都以数据包 struct i2c_msg 封装[cpp] view plain copystruct i2c_msg { __u16 addr;转载 2017-08-16 19:29:37 · 430 阅读 · 0 评论 -
I2C总线协议
转载地址:http://blog.youkuaiyun.com/subkiller/article/details/6854910 1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(multimastering),任何时间点只能有一个主控。 总线上每个设备都有自己的一个addr,共7个b转载 2017-08-16 19:12:55 · 295 阅读 · 0 评论 -
i2c 协议解析
转载地址:http://blog.youkuaiyun.com/g_salamander/article/details/80166981、基本概念 主机 初始化发送,产生时钟信号和终止发送的器件 从机 被主机寻址的器件 发送器 发送数据到总线的器件 接收器转载 2017-08-15 19:26:08 · 484 阅读 · 0 评论 -
ARM LINUX 启动过程分析
转载地址:http://www.cnblogs.com/wxb20/p/6266313.htmlARM Linux启动过程分析是本人要介绍的内容,嵌入式 Linux 的可移植性使得我们可以在各种电子产品上看到它的身影。对于不同体系结构的处理器来说Linux的启动过程也有所不同。本文以S3C2410 ARM处理器为例,详细分析了系统上电后 bootloader的执行流程及 ARM转载 2017-08-15 16:15:55 · 335 阅读 · 0 评论 -
ARM寄存器
转载地址:http://blog.sina.com.cn/s/blog_491f02870100hxna.htmlARM寄存器介绍 (2010-03-30 22:05:28)转载▼标签: 杂谈 ARM处理器模式用户模式(User):ARM处理器正常的程序执行状态快速中断模式(FIQ):用于高转载 2017-08-28 15:09:10 · 296 阅读 · 0 评论 -
linux RTC 驱动模型分析
原文地址:http://blog.youkuaiyun.com/yaozhenguo2006/article/details/6824970linux RTC 驱动模型分析 RTC(real time clock)实时时钟,主要作用是给Linux系统提供时间。RTC因为是电池供电的,所以掉电后时间不丢失。Linux内核把RTC用作“离线”的时间与日期维护器。当Linux内核启动时转载 2017-09-12 11:30:07 · 277 阅读 · 0 评论 -
android 休眠唤醒机制分析(一) — wake_lock
转载地址:http://blog.youkuaiyun.com/g_salamander/article/details/7978772Android的休眠唤醒主要基于wake_lock机制,只要系统中存在任一有效的wake_lock,系统就不能进入深度休眠,但可以进行设备的浅度休眠操作。wake_lock一般在关闭lcd、tp但系统仍然需要正常运行的情况下使用,比如听歌、传输很大的文件等。本文主转载 2017-09-13 20:17:03 · 451 阅读 · 0 评论 -
内核设备树简介-1
设备树:用于实现驱动代码与设备信息相分离。引入设备树之后,驱动代码只负责处理驱动的逻辑,关于设备的具体信息存放到设备树文件中。如果只是发生硬件接口信息的变化而没有驱动逻辑的变化,驱动开发者是需要修改设备树文件信息,不需要改写驱动代码。一:设备树框架每个设备树文件都有一个根节点,每个设备都是一个节点;节点间可以嵌套,形成父子关系,这样就可以方便的描述设备间的关系;每个设备的属性都原创 2017-11-17 19:50:22 · 528 阅读 · 0 评论 -
内核设备树简介-2
设备树组成: 设备树包含 DTC(device tree compiler)、DTS(device tree source)、DTB(device tree blob)dts & dtsi 通过dtc,生成DTB(device tree blob),设备树二进制文件,BootLoader在引导内核时,会预先读取.dtb到内存,进而由内核解析;dts和dtsi位于原创 2017-11-17 19:58:56 · 552 阅读 · 0 评论 -
Linux电源管理(五)thermal
thermal子系统概述thermal子系统是内核提供的温控管理框架,一套软件温度解决方案,配合ic内部温度传感器,对ic温度进行管控,保证系统稳定性。thermal系统多用于对ic内部的重点发热模块的功能管控,如cpu、gpu。thermal sensor驱动负责读取硬件温度sensor的温度,并传给thermal 子系统,thermal子系统将根据调控对象的温度,决定是否触发对应的冷...转载 2019-05-28 16:25:30 · 2985 阅读 · 0 评论