嵌入式Linux中文站

SPI总线协议及SPI时序图详解

阅读(214)

SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。 SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。 上升沿发送、下降沿接收、高位先发送。 上升沿到来的时候

内核探测工具systemtap简介

阅读(253)

systemtap是内核开发者必须要掌握的一个工具,本文我将简单介绍一下此工具,后续将会有系列文章介绍systemtap的用法。 什么是systemtap 假如现在有这么一个需求:需要获取正在运行的 Linux 系统的信息,如我想知道系统什么时候发生系统调用,发生的是什么系统调用等这些信息,有什么解决方案呢? 最原始的方法是,找到内核系统调用的代码,加上我们需要获得信息的代码、重新编译内核、安装、选择我们新编译的内核重启。这种做法对于内核开发人员简直是梦魇,因为一遍做下来至少得需要1个多小时,不仅破坏了原

Linux运行时I/O设备的电源管理框架

阅读(120)

1. 介绍 对I/O设备的运行时电源管理(运行时PM)的支持,是在电源管理的核心(PM core)下借助于以下方式实现的: 电源管理工作队列 pm_wq ,总线类型(bus types)和设备驱动(device drivers)可以把自己的PM相关的工作项(work items)置于其上。我们强烈建议, pm_wq 用于对所有运行时PM相关的工作项进行排队,因为这使得他们能够与全系统的电源转换(power transitions)进行同步【挂起到RAM(suspend to RAM),休眠(hiberna

内核中断,异常,抢占总结篇

阅读(356)

一、基本概念 中断分为同步中断和异步中断。同步中断是由CPU控制单元产生的,同步是指只有在一条指令执行完毕后,CPU才会发出中断,而不是发生在代码指令执行期间,比如系统调用。而异步中断是由其他硬件设备依照CPU时钟信号产生的,即意味着中断能够在指令之间发生,例如键盘中断。 按照Intel的微处理器手册,同步中断和异步中断也分别称为异常(或者软件中断)和中断。中断大家都比较熟悉,是由硬件设备产生的。异常的产生源有两种:一种是由程序的错误产生的,内核通过发送一个Unix程序员都熟悉的信号来处理异常;第二种时内

硬中断和软中断

阅读(308)

概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。 如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事, 跳到中断处理程序的入口点,进行中断处理。 (1) 硬中断 由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包 的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。 (2) 软中断 为了满足实时系统的要求,中

Linux的notifier机制在TP中的应用

阅读(275)

在linux内核系统中,各个模块、子系统之间是相互独立的。Linux内核可以通过通知链机制来获取由其它模块或子系统产生的它感兴趣的某些事件。 notifier_block结构体在include/linux/notifier.h中定义: struct notifier_block { notifier_fn_t notifier_call; struct notifier_block __rcu *next; int priority; }; priority用来定义优先级,高优先级的处理例程将被优先执行,

Linux RTC驱动模型分析之rtc-sysfs.c

阅读(384)

rtc节点 rtc-sysfs文件主要的操作就是在sys下创建rtc的属性节点,可以方便用户方便快捷的访问,查找问题。下来大概看看sys下的rtc节点,有个直观的认识。 [root@test ~]# cat /sys/class/rtc/rtc0/ date hctosys power/ time dev max_user_freq since_epoch uevent device/ name subsystem/ wakealarm 这是手机上rtc的节点属性,可以看到手机上只有一个rtc0设备。也可

Linux内核使用gdb调试

阅读(378)

这里记录平时使用gdb调试内核KE的步骤和方法. 有不足的地方也请大家指出和完善. 1 必备工具和文件 Gdb,addr2line,vmlinux以及内核coredump文件 在64位平台,gdb和addr2line 分别使用aarch64-linux-android-gdb aarch64-linux-android-addr2line. 2. 调试过程 MTK平台core