摘要:
虽然目前的工作是在linux应用开发上,偏重于业务逻辑,但我还是希望自己能够更加明白操作系统本身的实现,计划之后在周末和闲暇时间抽出一定的时间来继续学习linux设备驱动,同时学习学习多媒体的知识。 今天来学习linux设备驱动中的RTC(Real-Time Clock)子系统,RTC设备就是一些提 阅读全文
摘要:
先乱序记录一下阅读Linux input subsystem代码的笔记。 在input device driver的入口代码部分,需要分配并初始化input device结构,内核提供的API是input_allocate_device(),代码如下: 此API的工作就是分配内存并初始化结构,这里调 阅读全文
摘要:
init/main.c: early_irq_init()函数有两种实现,一种是基于radix tree,一种是定义静态数组,如果要使用radix tree实现的,那么需要打开SPARSE_IRQ配置选项,由于我对数据结构不了解,所以分析以下静态数组实现方式版本的。 /kernel/irq/irqd 阅读全文
摘要:
编写按键驱动时,想知道内核是如何管理GPIO的,所以开始追踪代码,中间走了一些弯路,现记录于此。 追踪代码之前,我猜测:第一,这部分代码应该在系统set up阶段执行;第二,GPIO的代码应该在machine或者platform或者vendor相关的目录下。事实证明,第一点是正确的,第二点基本是错误 阅读全文
摘要:
Linux内核启动时需要一些配置信息,如根文件系统的类型、flash分区情况、串口终端的编号、内存的使用情况等等,而由于U-Boot和Linux Kernel的镜像是独立的两个文件,所以只能两者约定好在内存的什么地方存放启动参数,这样U-Boot在启动引导时就将启动参数放置在相应的地址处,而Linu 阅读全文
摘要:
这次分析源码根目录下的Makefile,它负责读入配置过的信息,通过OBJS、LIBS等变量设置能够参与镜像链接的目标文件,设定编译的目标等等。 上述代码通过shell处理字符数据,得到宿主机的架构、操作系统、shell类型等变量,Makefile中调用shell命令的方式有两种,一种是$(shel 阅读全文
摘要:
前面分析的都是多数Makefile要读入的文件,这次我们以drivers/mtd/nand/Makefile为例,分析一个具体的子Makefile是如何工作的。 子Makefile的结构是固定的: include $(TOPDIR)/config.mk 读入配置信息 LIB := $(obj)lib 阅读全文
摘要:
浏览各个子Makefile可以发现,他们都会在文件的后面包含rules.mk,这个文件的作用就是更新源文件的依赖,并生成各种.depend文件。 伪目标_depend依赖.depend文件,.depend文件是各个源文件依赖关系的汇总。 这两句话是通过filter函数将SRCS中的文件分成两部分:当 阅读全文
摘要:
浏览一下U-Boot各个子目录下的Makefile可以看到,几乎他们都会包含$(TOPDIR)/config.mk,那么这个文件进行了什么操作呢?简单概括:读入include/config.mk、include/autoconf.mk,指定ARCH CPU SoC Board等重要信息,并且加入各个 阅读全文
摘要:
我们在编译U-Boot之前,需要根据当前使用的板子进行配置,例如make s5p_goni_config,接着才能进行编译make。下面首先分析配置阶段U-Boot做了哪些事情。 由于执行这些命令是在源码根目录下,所以需要到主Makefile中找一下s5p_goni_config这个目标,搜索结果显 阅读全文