X-020-ROOTFS-initramfs的制作和测试

作者:wowo 发布于:2016-12-3 11:08 分类:X Project

我们在“X-015-KERNEL-ARM generic timer driver的移植”中移植完ARM generic timer之后,Linux的启动已经走完了内核空间的旅程,即将冲破kernel走向用户空间,有“诗”为证:

[    0.142156] ---[ end Kernel panic - not syncing: No working init found.  Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.

意思很明显,kernel找不到可执行的init文件,无法继续下去了。还好,基本的串口驱动[1]开发完毕之后,我们可以把魔抓伸向用户空间了。牵涉到用户空间,麻烦就大了,块设备、文件系统、rootfs等等,不是三言两语就能搞定的。不过没关系,我们可以从最简单的ramdisk入手。

因此,本文将以initramfs为例,介绍kernel把CPU的控制权交给用户空间程序的过程。与此同时,本文也是串口驱动[1]和GIC驱动[2]的测试用例(这两个驱动移植完成后,一直没有测试,机会终于来了)。

阅读全文>>

标签: GIC initramfs randisk elf rootfs

评论(0) 浏览(8885)

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

作者:linuxer 发布于:2014-9-4 16:59 分类:中断子系统


GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器,其architecture specification目前有四个版本,V1~V4(V2最多支持8个ARM core,V3/V4支持更多的ARM core,主要用于ARM64服务器系统结构)。目前在ARM官方网站只能下载到Version 2的GIC architecture specification,因此,本文主要描述符合V2规范的GIC硬件及其驱动。

具体GIC硬件的实现形态有两种,一种是在ARM vensor研发自己的SOC的时候,会向ARM公司购买GIC的IP,这些IP包括的型号有:PL390,GIC-400,GIC-500。其中 GIC-500最多支持128个 cpu core,它要求ARM core必须是ARMV8指令集的(例如Cortex-A57),符合GIC architecture specification version 3。另外一种形态是ARM vensor直接购买ARM公司的Cortex A9或者A15的IP,Cortex A9或者A15中会包括了GIC的实现,当然,这些实现也是符合GIC V2的规格。

本文在进行硬件描述的时候主要是以GIC-400为目标,当然,也会顺便提及一些Cortex A9或者A15上的GIC实现。

本 文主要分析了linux kernel中GIC中断控制器的驱动代码(位于drivers/irqchip/irq-gic.c和irq-gic-common.c)。 irq-gic-common.c中是GIC V2和V3的通用代码,而irq-gic.c是V2 specific的代码,irq-gic-v3.c是V3 specific的代码,不在本文的描述范围。本文主要分成三个部分:第二章描述了GIC V2的硬件;第三章描述了GIC V2的初始化过程;第四章描述了底层的硬件call back函数。

注:具体的linux kernel的版本是linux-3.17-rc3。



阅读全文>>

标签: GIC 代码分析

评论(111) 浏览(122228)

GIC驱动代码分析(废弃)

作者:linuxer 发布于:2014-7-4 14:34 分类:中断子系统

GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器。GIC通过AMBA(Advanced Microcontroller Bus Architecture)这样的片上总线连接到一个或者多个ARM processor上。本文主要分析了linux kernel中GIC中断控制器的驱动代码。

具体的分析方法是按照source code为索引,逐段分析。对于每一段分析的代码,力求做到每个细节都清清楚楚。这不可避免要引入很多对GIC的硬件描述,此外,具体GIC中断控制器的 驱动代码和linux kernel中断子系统的交互也会描述,但本文不会描述linux kernel的generic interrupt subsystem。

本文以OMAP4460这款SOC为例,OMAP4460内部集成了GIC的功能。具体的linux kernel的版本是linux3.14.。

阅读全文>>

标签: GIC 代码分析

评论(19) 浏览(46434)

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