LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

上一页 1 ··· 5 6 7 8 9 10 11 下一页

2017年10月18日

Python/Jupyter Notebook以及可视化的运用

摘要: 最近陆陆续续使用Jupyter Notebook和Python可视化做了一些小工具,用于提高开发效率。 这里将其归类总结一下,作为学习的记录。 阅读全文

posted @ 2017-10-18 14:42 ArnoldLu 阅读(1301) 评论(0) 推荐(0) 编辑

2017年10月16日

Zephyr学习专题

摘要: 1 前言 本来想学习Zyphyr的Power Management,但是看着看着就被带进去了。 你看功耗,里面的suspend涉及到时间补偿相关的吧,然后就涉及到了Kernel Clocks/Timers/Thread Sleeping。 然后你得知道内核运行情况,想去获取消息,就得熟悉内核的Log 阅读全文

posted @ 2017-10-16 10:00 ArnoldLu 阅读(6108) 评论(0) 推荐(0) 编辑

2017年10月14日

Zephyr的Threads

摘要: Threads介绍了一个线程的创建、调度以及删除过程。 阅读全文

posted @ 2017-10-14 15:27 ArnoldLu 阅读(656) 评论(0) 推荐(0) 编辑

Zephyr的Shell

摘要: 1 前言 通过Shell可以跟子系统打交道,子系统也可以提供很多接口供外部设置和读取信息。 下面就Shell的Kconfig配置、Shell的使用以及如何新建一个Shell命令展开。 可以说Shell是一窥内核究竟的管道,有了这个管道能使开发事半功倍。 有时为了开发和调试需求,还需要新增命令。 2 阅读全文

posted @ 2017-10-14 14:52 ArnoldLu 阅读(1836) 评论(0) 推荐(0) 编辑

Zephyr的Logging

摘要: 1 前言 刚接触Zephyr,两眼一抹黑,光是阅读代码对系统没什么概念。还需要通过一些日志了解系统的运行机制,以及各种内核行为。 这就需要借助系统的Logging,大体分为两部分System Logging和Kernel Event Logger。 下面就分别介绍System Logging和Ker 阅读全文

posted @ 2017-10-14 11:39 ArnoldLu 阅读(1750) 评论(0) 推荐(0) 编辑

2017年10月12日

Zephyr的Time、Timer、sleep

摘要: 正如Linux下一样,关于时间的系统函数可以分为三类:时间值、睡眠一段时间以及延迟执行。 在Zephyr上对应是什么样子呢?带着这个疑问,去了解一下这些函数。 以及他们与suspend之间的关系? 是否计入suspend时间?(计入-在到期后立即执行;不计入-需要唤醒后继续睡眠剩下时间)。 是否具备 阅读全文

posted @ 2017-10-12 18:41 ArnoldLu 阅读(4830) 评论(0) 推荐(0) 编辑

2017年10月11日

Zephyr的Power Management

摘要: 1 关于Zephyr Zephyr是Linux基金会维护的微内核项目,来源于WindRiver向Zephyr捐赠的Rocket RTOS内核。主要用于开发针对物联网设备的实时操作系统。 Zephyr操作系统很小、具有扩展性并且专为小型物联网设备设计,它的模块化设计使不论采用哪个架构创建物联网方案,都 阅读全文

posted @ 2017-10-11 14:58 ArnoldLu 阅读(1908) 评论(0) 推荐(0) 编辑

2017年9月30日

在Workload Automation中实现suspend分析

摘要: 1. 背景 这里涉及到两个工具analyze_suspend.py和Workload Automation。 下面analyze_suspend.py简称为ASPY,Workload Automation简称为WA。 ASPY着重于对Suspend/Resume流程进行分析,然后得出每个阶段的分析结 阅读全文

posted @ 2017-09-30 15:27 ArnoldLu 阅读(1556) 评论(0) 推荐(0) 编辑

2017年9月26日

Linux kernel的中断子系统之(九):tasklet

摘要: 返回目录:《ARM-Linux中断系统》。 总结: 二介绍了tasklet存在的意义。 三介绍了通过tasklet_struct来抽想一个tasklet,每个CPU维护一个tasklet链表tasklet_vec/tasklet_hi_vec,然后介绍了如何定一个一个tasklet(静态/动态),以 阅读全文

posted @ 2017-09-26 23:33 ArnoldLu 阅读(2285) 评论(0) 推荐(0) 编辑

Linux kernel的中断子系统之(七):GIC代码分析

摘要: 返回目录:《ARM-Linux中断系统》。 总结: 原文地址:《linux kernel的中断子系统之(七):GIC代码分析》 参考代码:http://elixir.free-electrons.com/linux/v3.17-rc3/source 一、前言 GIC(Generic Interrup 阅读全文

posted @ 2017-09-26 23:32 ArnoldLu 阅读(5180) 评论(0) 推荐(1) 编辑

Linux kernel的中断子系统之(八):softirq

摘要: 返回目录:《ARM-Linux中断系统》。 总结:中断分为上半部和下半部,上半部关中断;下半部开中断,处理可以延迟的事情。下半部有workqueue/softirq/tasklet三种方式。 二介绍了为何要分top half和bottom half?workqueue/softirq/tasklet 阅读全文

posted @ 2017-09-26 23:32 ArnoldLu 阅读(5054) 评论(1) 推荐(0) 编辑

Linux kernel的中断子系统之(六):ARM中断处理过程

摘要: 返回目录:《ARM-Linux中断系统》。 总结:二中断处理经过两种模式:IRQ模式和SVC模式,这两种模式都有自己的stack,同时涉及到异常向量表中的中断向量。 三ARM处理器在感知到中断之后,切换CPSR寄存器模式到IRQ;保存CPSR和PC;mask irq;PC指向irq vector。 阅读全文

posted @ 2017-09-26 23:31 ArnoldLu 阅读(3175) 评论(0) 推荐(0) 编辑

Linux kernel的中断子系统之(五):驱动申请中断API

摘要: 返回目录:《ARM-Linux中断系统》。 总结:二重点区分了抢占式内核和非抢占式内核的区别:抢占式内核可以在内核空间进行抢占,通过对中断处理进行线程化可以提高Linux内核实时性。 三介绍了Linux中断注册函数request_threaded_irq,其实request_irq也是对reques 阅读全文

posted @ 2017-09-26 23:29 ArnoldLu 阅读(2108) 评论(0) 推荐(0) 编辑

Linux kernel的中断子系统之(四):High level irq event handler

摘要: 返回目录:《ARM-Linux中断系统》。 总结:从架构相关的汇编处理跳转到Machine/控制器相关的handle_arch_irq,generic_handle_irq作为High level irq event handler入口。 一介绍了进入High level irq event han 阅读全文

posted @ 2017-09-26 23:28 ArnoldLu 阅读(2730) 评论(0) 推荐(0) 编辑

Linux kernel的中断子系统之(三):IRQ number和中断描述符

摘要: 返回目录:《ARM-Linux中断系统》。 总结: 二描述了中断处理示意图,以及关中断、开中断,和IRQ number重要概念。 三介绍了三个重要的结构体,irq_desc、irq_data、irq_chip及其之间关系。 四介绍了irq_desc这个全局变量的初始化,五是操作中断描述符相关结构体的 阅读全文

posted @ 2017-09-26 23:26 ArnoldLu 阅读(2816) 评论(1) 推荐(0) 编辑

Linux kernel的中断子系统之(二):IRQ Domain介绍

摘要: 返回目录:《ARM-Linux中断系统》。 总结:一、二概述了软硬件不同角度的IRQ Number和HW Interrupt ID,这就需要他们之间架个桥梁。 三介绍了架设这种桥梁的几种方式:Linear、Radix Tree和no map。 四介绍了两种基础数据结构描述中断域的irq_domain 阅读全文

posted @ 2017-09-26 23:25 ArnoldLu 阅读(3824) 评论(0) 推荐(1) 编辑

Linux kernel的中断子系统之(一):综述

摘要: 返回目录:《ARM-Linux中断系统》。 总结: 一从作为一名驱动工程师角度看,用好中断需要正确认识request_threaded_irq/request_irq关系、中断临界区保护、中断上下半部使用。 二介绍了参与终端三种器件:外设->中断控制器->CPU,以及中断控制器和CPU之间拓扑关系: 阅读全文

posted @ 2017-09-26 23:24 ArnoldLu 阅读(4621) 评论(0) 推荐(0) 编辑

2017年9月19日

数据分析之---Python可视化工具

摘要: 1. 数据分析基本流程 作为非专业的数据分析人员,在平时的工作中也会遇到一些任务:需要对大量进行分析,然后得出结果,解决问题。 所以了解基本的数据分析流程,数据分析手段对于提高工作效率还是非常有帮助的。 首先都是存在一个要解决的问题,主要问题和预期分析目标,简单来讲就是对问题进行定义。 然后才是开始 阅读全文

posted @ 2017-09-19 20:39 ArnoldLu 阅读(28972) 评论(0) 推荐(3) 编辑

2017年9月13日

ARM-Linux中断系统

摘要: 1.前言 了解Linux中断子系统,同时也需要了解ARM体系结构中断处理流程;在熟悉整个软硬件架构和流程基础上,才能对流程进行细化,然后找出问题的瓶颈。《2. 梳理中断处理子系统》 但是所有的优化都离不开一个量化的过程,有个可靠、高效、可读性强的度量必不可少。《3. 一种测量中断性能手段》 最后基于 阅读全文

posted @ 2017-09-13 08:41 ArnoldLu 阅读(4535) 评论(0) 推荐(0) 编辑

2017年9月12日

Linux下功耗测试开发初探

摘要: 1、前言 Linux嵌入式设备开发,对于功耗要求较高。在遇到问题的时候,定位手段有限。 关于功耗一种是静态功耗,指的是某一种状态下的功耗情况,在这种状态下功耗尽量的低,比如suspended底电流越低越好、cpuidle的深睡和浅睡、cpu unplug等; 另一种是动态功耗,指的是各种状态的切换, 阅读全文

posted @ 2017-09-12 16:11 ArnoldLu 阅读(194) 评论(0) 推荐(0) 编辑

2017年8月21日

阅读Cortex-A53 Technical Reference Manual笔记

摘要: 1. 前言 一颗芯片最主要的就是CPU核了,处理CPU Core之外,还存在很多其他IP,包括Graphical、Multimedia、Memory Controller、USB Controller等等。 ARM products列出了主要产品,其中Architecture和Processors需 阅读全文

posted @ 2017-08-21 21:52 ArnoldLu 阅读(6785) 评论(0) 推荐(0) 编辑

2017年8月10日

Linux下Power Management开发总结

摘要: 本文作为一个提纲挈领的介绍性文档,后面会以此展开,逐渐丰富。 1. 前言 在 《开发流程》中介绍了PM开发的一般流程,重点是好的模型、简单有效的接口参数、可量化的测试环境以及可独性强的输出。 内核中功耗开发无论是新模型开发还是已有模型的调优,都需要了解现有的框架,遵循已有框架,简单有效的修改。这就需 阅读全文

posted @ 2017-08-10 14:03 ArnoldLu 阅读(9669) 评论(0) 推荐(2) 编辑

Linux时间子系统专题汇总

摘要: 关于Linux时间子系统有两个系列文章讲的非常好,分别是WowoTech和DroidPhone. 还有两本书分别是介绍: Linux用户空间时间子系统《Linux/UNIX系统编程手册》的第10章 时间和第23章 定时器与休眠 Linux内核时间子系统《深入Linux内核架构》的第15章 时间管理。 阅读全文

posted @ 2017-08-10 14:03 ArnoldLu 阅读(6227) 评论(0) 推荐(3) 编辑

2017年7月25日

Linux时间子系统之三:jiffies

摘要: 1. jiffies背景介绍 jiffies记录了系统启动以来,经过了多少tick。 一个tick代表多长时间,在内核的CONFIG_HZ中定义。比如CONFIG_HZ=200,则一个jiffies对应5ms时间。所以内核基于jiffies的定时器精度也是5ms。 2. jiffies初始化与更新 阅读全文

posted @ 2017-07-25 15:34 ArnoldLu 阅读(34870) 评论(1) 推荐(2) 编辑

2017年7月20日

Lauterbach TRACE32技巧小集

摘要: 1. TRACE32中实现类container_of功能 假设现在我只知道一个全局变量成员tv2的地址,类型是tvec_base。我想知道这个全局变量的地址怎么办? struct tvec_base { spinlock_t lock; struct timer_list *running_time 阅读全文

posted @ 2017-07-20 20:13 ArnoldLu 阅读(7515) 评论(0) 推荐(0) 编辑

2017年7月11日

Linux内核编程、调试技巧小集

摘要: 1. 内核中通过lookup_symbol_name获取函数名称 内核中很多结构体成员是函数,有时可能比较复杂不知道具体使用哪一个函数。这是可以通过lookup_symbol_name来获取符号表名称。 在timer_list.c和timer_stats.c中有使用,如下: 2. 通过__built 阅读全文

posted @ 2017-07-11 20:34 ArnoldLu 阅读(3408) 评论(0) 推荐(1) 编辑

2017年7月10日

Linux时间子系统之二:Alarm Timer

摘要: 一、前言 严格来讲Alarm Timer也算POSIX Timer一部分,包含两种类型CLOCK_REALTIME_ALARM和CLOCK_BOOTTIME_ALARM。分别是在CLOCK_REALTIME和CLOCK_BOOTTIME后面加上_ALARM。Alarm Timer之外的POSIX T 阅读全文

posted @ 2017-07-10 15:06 ArnoldLu 阅读(9911) 评论(0) 推荐(1) 编辑

2017年7月8日

ELF格式文件分析以及运用

摘要: 基于本文的一个实践《使用Python分析ELF文件优化Flash和Sram空间的案例》。 1.背景 ELF是Executable and Linkable Format缩写,其官方规范在《Tools Interface Standard Executable and Linkable Format 阅读全文

posted @ 2017-07-08 14:19 ArnoldLu 阅读(5170) 评论(0) 推荐(0) 编辑

2017年7月6日

Linux时间子系统之一:认识timer_list和timer_stats和使用

摘要: 内核版本:v3.4.xxx 一、前言 内核提供了方便查看当前系统TickDevice、活动的Timer列表以及Timer使用的统计信息。 内核分别用两个节点来表示TimerList和Timer统计信息。 一个是/proc/timer_list,打印per_cpu的hrtimer_bases信息以及基 阅读全文

posted @ 2017-07-06 14:44 ArnoldLu 阅读(5689) 评论(0) 推荐(1) 编辑

2017年6月25日

Linux时间子系统之八:动态时钟框架(CONFIG_NO_HZ、tickless)

摘要: 在前面章节的讨论中,我们一直基于一个假设:Linux中的时钟事件都是由一个周期时钟提供,不管系统中的clock_event_device是工作于周期触发模式,还是工作于单触发模式,也不管定时器系统是工作于低分辨率模式,还是高精度模式,内核都竭尽所能,用不同的方式提供周期时钟,以产生定期的tick事件 阅读全文

posted @ 2017-06-25 22:20 ArnoldLu 阅读(1785) 评论(0) 推荐(0) 编辑

Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()

摘要: 我们已经在前面几章介绍了低分辨率定时器和高精度定时器的实现原理,内核为了方便其它子系统,在时间子系统中提供了一些用于延时或调度的API,例如msleep,hrtimer_nanosleep等等,这些API基于低分辨率定时器或高精度定时器来实现,本章的内容就是讨论这些方便、好用的API是如何利用定时器 阅读全文

posted @ 2017-06-25 22:19 ArnoldLu 阅读(1489) 评论(0) 推荐(0) 编辑

Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现

摘要: 专题文档汇总目录 Notes: 原文地址:Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现 上一篇文章,我介绍了传统的低分辨率定时器的实现原理。而随着内核的不断演进,大牛们已经对这种低分辨率定时器的精度不再满足,而且,硬件也在不断地发展,系统中的定时器硬件的精度也越来越高,这也给 阅读全文

posted @ 2017-06-25 22:18 ArnoldLu 阅读(5193) 评论(1) 推荐(0) 编辑

Linux时间子系统之四:定时器的引擎:clock_event_device

摘要: 早期的内核版本中,进程的调度基于一个称之为tick的时钟滴答,通常使用时钟中断来定时地产生tick信号,每次tick定时中断都会进行进程的统计和调度,并对tick进行计数,记录在一个jiffies变量中,定时器的设计也是基于jiffies。这时候的内核代码中,几乎所有关于时钟的操作都是在machin 阅读全文

posted @ 2017-06-25 22:17 ArnoldLu 阅读(1581) 评论(0) 推荐(0) 编辑

Linux时间子系统之五:低分辨率定时器的原理和实现

摘要: 专题文档汇总目录 Notes:低精度timer在内核中的数据结构以及API接口;低精度timer精巧高效的分组,使用cascade进行定时器移位,组内Timer FIFO;低精度Timer的初始化流程。 原文地址:Linux时间子系统之五:低分辨率定时器的原理和实现 利用定时器,我们可以设定在未来的 阅读全文

posted @ 2017-06-25 22:17 ArnoldLu 阅读(2138) 评论(0) 推荐(1) 编辑

Linux时间子系统之三:时间的维护者:timekeeper

摘要: 专题文档汇总目录 Notes: 原文地址:Linux时间子系统之三:时间的维护者:timekeeper 本系列文章的前两节讨论了用于计时的时钟源:clocksource,以及内核内部时间的一些表示方法,但是对于真实的用户来说,我们感知的是真实世界的真实时间,也就是所谓的墙上时间,clocksourc 阅读全文

posted @ 2017-06-25 22:16 ArnoldLu 阅读(2935) 评论(0) 推荐(0) 编辑

Linux时间子系统之二:表示时间的单位和结构

摘要: 人们习惯用于表示时间的方法是:年、月、日、时、分、秒、毫秒、星期等等,但是在内核中,为了软件逻辑和代码的方便性,它使用了一些不同的时间表示方法,并为这些表示方法定义了相应的变量和数据结构,本节的内容就是阐述这些表示方法的意义和区别。 /******************************** 阅读全文

posted @ 2017-06-25 22:15 ArnoldLu 阅读(1768) 评论(0) 推荐(0) 编辑

Linux时间子系统之一:clock source(时钟源)

摘要: clock source用于为Linux内核提供一个时间基线,如果你用linux的date命令获取当前时间,内核会读取当前的clock source,转换并返回合适的时间单位给用户空间。在硬件层,它通常实现为一个由固定时钟频率驱动的计数器,计数器只能单调地增加,直到溢出为止。时钟源是内核计时的基础, 阅读全文

posted @ 2017-06-25 22:13 ArnoldLu 阅读(3237) 评论(0) 推荐(1) 编辑

Linux时间子系统之(十六):clockevent

摘要: 专题文档汇总目录 Notes:介绍struct clocke_event_device及其功能feature、模式;触发event接口clockevents_program_event;clockevent注册接口;clockevent的sysfs接口。 原文地址:Linux时间子系统之(十六):c 阅读全文

posted @ 2017-06-25 22:11 ArnoldLu 阅读(2710) 评论(0) 推荐(0) 编辑

Linux时间子系统之(十七):ARM generic timer驱动代码分析

摘要: 专题文档汇总目录 Notes:ARM平台Clock/Timer架构;System counter、Timer以及两者之间关系;Per cpu timer通过CP15访问,System counter通过memory mapped IO访问;将System counter和Per cpu timer分 阅读全文

posted @ 2017-06-25 22:11 ArnoldLu 阅读(9437) 评论(0) 推荐(0) 编辑

Linux时间子系统之(十四):tick broadcast framework

摘要: 专题文档汇总目录 Notes:BroadcastTick作为cpuidle的waker,硬件基础。BroadcastTick嵌入在当前系统Tick框架中。BroadcastTick设备初始化;周期性Tick和OneShot两种模式下BroadcastTick的工作。 原文地址:Linux时间子系统之 阅读全文

posted @ 2017-06-25 22:09 ArnoldLu 阅读(1594) 评论(0) 推荐(0) 编辑

上一页 1 ··· 5 6 7 8 9 10 11 下一页

导航