对heziq网友问题的回答

作者:linuxer 发布于:2015-3-23 19:03

heziq网友在《linux kernel的中断子系统之(四):High level irq event handler》文档中提出了若干个问题,由于在回复中无法图形表达,因此单独出一份文档来回答,希望可以有所帮助。当然,由于他提出的问题和硬件电路设计有关,这里我只是表达我自己的观点(毕竟出身是软件工程师),如果有误,请不吝指出。

阅读全文>>

标签: 上拉电阻 下拉电阻

评论(9) 浏览(11556)

计算机科学基础知识之(六):理解栈帧

作者:linuxer 发布于:2015-3-12 13:00 分类:基础学科

本文以一个简单的例子来描述ARM linux下的stack frame。

本文也是对tigger网友问题的回复。

阅读全文>>

标签: stack frame 栈帧

评论(8) 浏览(21736)

计算机科学基础知识(五): 动态链接

作者:linuxer 发布于:2015-3-10 18:15 分类:基础学科

本文以类似hello world这样的简单程序为例,描述了动态连接的概念。第二章描述了整个动态链接的大概过程,随后的两章解析了程序访问动态库中的数据和调用动态库中函数的过程。

注意:阅读本文之前需要先了解relocatable object file静态链接以及动态库和PIC这些内容。

阅读全文>>

标签: dynamic link 动态链接

评论(2) 浏览(13196)

Linux时间子系统之(二):软件架构

作者:linuxer 发布于:2015-3-7 18:37 分类:时间子系统

本文的主要内容是描述内核时间子系统的软件框架。首先介绍了从旧的时间子系统迁移到新的时间子系统的源由,介绍新的时间子系统的优势。第三章汇整了时间子系统的相关文件以及内核配置。最后描述各种内核配置下的时间子系统的数据流和控制流。

阅读全文>>

标签: 软件框架 时间子系统

评论(33) 浏览(50630)

计算机科学基础知识(四): 动态库和位置无关代码

作者:linuxer 发布于:2015-3-6 9:39 分类:基础学科

本文主要描述了动态库以及和动态库有紧密联系的位置无关代码的相关资讯。首先介绍了动态库和位置无关代码的源由,了解这些背景知识有助于理解和学习 动态库。随后,我们通过加-fPIC和不加这个编译选项分别编译出两个relocatable object file,看看编译器是如何生成位置无关代码的。最后,我们自己动手编写一个简单的动态库,并解析了一些symbol Visibility、动态符号表等一些相关基本概念。

本文中的描述是基于ARM MCU,GNU/linux平台而言的,本文是个人对动态库的理解,如果有错误,请及时指出。

阅读全文>>

标签: 动态库 PIC 位置无关代码

评论(4) 浏览(29907)

计算机科学基础知识(三):静态库和静态链接

作者:linuxer 发布于:2015-2-16 15:15 分类:基础学科

本文是编译、链接和加载系列文章中的第二篇,主要描述静态链接

阅读全文>>

标签: 静态库 静态链接

评论(3) 浏览(18435)

计算机科学基础知识(二):Relocatable Object File

作者:linuxer 发布于:2015-2-9 19:17 分类:基础学科

一个合格的c程序员(也可以叫做软件工程师,这样看起来更高大上,当然,我老婆心情不好的时候总是叫我“死打字的”,基本也能描述这份职业,呵呵) 需要理解编译、链接和加载的过程,而不是仅仅关注c语言的语法和词法。本文主要以此为切入点,描述linux系统下,一个普通的hello world程序的生命历程,并借机灌输一些程序编译时和运行时的基本术语和概念。当然,由于我本人是一个linuxer,因此借用linux来描述这些知 识会方便些,但是对于计算机科学而言,这些东西概念上是类似的,只是实现细节不同而已(windows程序员或者其他程序员可以阅读本文哦)。

本 文也是阅读了Computer System,A programmer’s perspective的第七章的一个读书笔记,方便日后查阅。注:Computer System,A programmer’s perspective绝对是一本值得反复阅读的书籍,强力推荐。

阅读全文>>

标签: Object Relocatable File

评论(11) 浏览(29664)

Linux时间子系统之(六):POSIX timer

作者:linuxer 发布于:2015-1-22 18:12 分类:时间子系统

用户空间接口函数文档中, 我们描述了和POSIX timer相关的操作,主要包括创建一个timer、设定timer、获取timer的状态、获取timer overrun的信息、删除timer。本文将沿着这些用户空间的接口定义来看看内核态的实现。虽然POSIX timer可以基于各种不同的clock创建,本文主要描述real time clock相关的timer。

本文第二章描述了POSIX timer的基本原理,第三章描述系统调用的具体实现,第四章主要讲real time clock的timer callback函数的实现,第五章介绍了timer超期后,内核如何处理信号。

阅读全文>>

标签: timer POSIX

评论(15) 浏览(27729)

Linux时间子系统之(五):POSIX Clock

作者:linuxer 发布于:2015-1-5 19:03 分类:时间子系统

clock是timer的基础,任何一个timer都需要运作在一个指定的clock上来。内核中维护了若干的clock,本文第二章描述了clock的 基本概念和一些静态定义的posix clock。根据计时的特点,clock分成两种:一种是真实世界的时间概念,另外一个是仅仅计算CPU执行时间 ,这两种clock分别在第三和第四章描述。从clock的生命周期来看,可以分成静态和动态的posix clock,静态是一直存在于内核中的,而动态clock有创建和销毁的概念,本文第五章描述了dynamic posix clock。

阅读全文>>

标签: posix-clock

评论(12) 浏览(35310)

Linux时间子系统之(四):timekeeping

作者:linuxer 发布于:2014-12-29 18:03 分类:时间子系统

timekeeping模块是一个提供时间服务的基础模块。Linux内核提供各种time line,real time clock,monotonic clock、monotonic raw clock等,timekeeping模块就是负责跟踪、维护这些timeline的,并且向其他模块(timer相关模块、用户空间的时间服务等)提供 服务,而timekeeping模块维护timeline的基础是基于clocksource模块和tick模块。通过tick模块的tick事件,可以 周期性的更新time line,通过clocksource模块、可以获取tick之间更精准的时间信息。

本文熟悉介绍timekeeping的一些基础概念,接着会介绍该模块初始化的过程,此后会从上至下介绍该模块提供的服务、该模块如何和tick模块交互以及如何和clocksource模块交互,最后介绍电源管理相关的内容。

阅读全文>>

标签: Linux时间子系统 timekeeping

评论(16) 浏览(44965)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog