X-014-KERNEL-ARM GIC driver的移植

作者:wowo 发布于:2016-10-31 22:23 分类:X Project

X Project”完成“X-012-KERNEL-serial early console的移植”之后,终止在如下的kernel panic中:

NR_IRQS:64 nr_irqs:64 0
Kernel panic - not syncing: No interrupt controller found.
---[ end Kernel panic - not syncing: No interrupt controller found.

结果很明显,系统中没有注册中断控制器。因此,本文将以“Bubbugum-96”平台为例,介绍ARM GIC驱动的移植步骤,顺便继续加深对device tree的理解和认识。

注1:由于“Bubbugum-96”的GIC符合ARM标准,Linux kernel中相关的驱动是现成的,因此GIC驱动的移植就非常简单了,只要配置一下device tree即可。

阅读全文>>

标签: Linux Kernel 内核 driver porting 移植

评论(0) 浏览(1104)

Linux TTY framework(5)_System console driver

作者:wowo 发布于:2016-10-29 22:43 分类:TTY子系统

由[1]中的介绍可知,Linux kernel的console框架,主要提供“控制台终端”的功能,用于:

1)kernel日志信息(printk)的输出。

2)实现基础的、基于控制台的人机交互。

本文将从console driver开发者的视角,介绍:console有关的机制;编写一个console驱动需要哪些步骤;从用户的角度怎么使用;等等。

阅读全文>>

标签: Linux Kernel 内核 driver console

评论(13) 浏览(2174)

进程管理和终端驱动:基本概念

作者:linuxer 发布于:2016-10-28 18:56 分类:进程管理

对于任何一种OS,终端部分的内容总是令人非常的痛苦和沮丧,GNU/linux也是如此。究其原因主要有两个,一是终端驱动和终端相关的系统软件承载了太多的内容:各种虚拟终端、 伪终端、串口通信、modem、printer等。其次可能是终端和信号处理、进程关系等耦合在一起加大了理解终端驱动的难度。本文的目标是希望能够理清这些内容。

阅读全文>>

标签: process tty session group

评论(10) 浏览(2515)

Linux TTY framework(4)_TTY driver

作者:wowo 发布于:2016-10-25 22:40 分类:TTY子系统

本文将从驱动工程师的角度去看TTY framework:它怎么抽象、管理各个TTY设备?它提供了哪些编程接口以方便TTY driver的开发?怎么利用这些接口编写一个TTY driver?等等。

注1:话说介绍各个framework的时候,我一直比较喜欢用provider、consumer等概念,因为非常生动、易懂。不过在TTY framework的官方俗语中,压根没有provider、consumer等概念,为了不混淆试听,就算了吧。

注2:TTY framework在Linux kernel中算得上一个比较繁琐、庞杂的framework了,再加上现在很少有人会直接去写一个TTY driver,因此本文只是介绍一些概念性的东西,以加深对TTY及其driver的理解,为后续学习serial framework打基础。一些细节的东西,大家可参考callme_friend同学写的"TTY驱动分析[2]”,特别是其中的一些图示,很清晰!

注3:本文所使用的kernel版本为“X Project”初始的“Linux 4.6-rc5”版本。

阅读全文>>

标签: Linux Kernel 内核 driver tty tty_struct tty_port

评论(13) 浏览(2575)

DRAM 原理 5 :DRAM Devices Organization

作者:codingbelief 发布于:2016-10-15 9:12 分类:基础技术

随着系统对内存容量、带宽、性能等方面的需求提高,系统会接入多个 DRAM Devices。而多个 DRAM Devices 不同的组织方式,会带来不同的效果。本文将对不同的组织方式及其效果进行简单介绍。

阅读全文>>

标签: SDRAM dram

评论(0) 浏览(1644)

Linux TTY framework(3)_从应用的角度看TTY设备

作者:wowo 发布于:2016-10-14 22:13 分类:TTY子系统

可以毫不夸张的说,我们在使用Linux系统的过程中,每时每刻都在和TTY打交道,显示输出、键盘输入、用户登录、shell终端、等等。

与此同时,作为软件工程师的我们,也会或多或少的困惑:这些习以为常的行为,怎么和kernel中的这些冷冰冰的代码联系起来的?

因此,在Linux TTY framework分析工作正式开始之前,让我们带着上面的疑问,以这些熟悉的应用场景为视角,进一步理解TTY有关的概念。这就是本文的目的。

阅读全文>>

标签: Linux tty console vt 虚拟终端 pty 伪终端 控制终端

评论(17) 浏览(3100)

内存初始化(上)

作者:linuxer 发布于:2016-10-13 12:05 分类:内存管理

一直以来,我都非常着迷于两种电影拍摄手法:一种是慢镜头,将每一个细节全方位的展现给观众。另外一种就是快镜头,多半是反应一个时代的变迁,从非常长的时间段中,截取几个典型的snapshot,合成在十几秒的镜头中,可以让观众很快的了解一个事物的发展脉络。对应到技术层面,慢镜头有点类似情景分析,把每一行代码都详细的进行解析,了解技术的细节。快镜头类似数据流分析,勾勒一个过程中,数据结构的演化。本文采用了快镜头的方法,对内存初始化部分进行描述,不纠缠于具体函数的代码实现,只是希望能给大家一个概略性的印象(有兴趣的同学可以自行研究代码)。BTW,在本文中我们都是基于ARM64来描述体系结构相关的内容。

阅读全文>>

标签: 初始化 内存管理

评论(19) 浏览(5246)

X-013-UBOOT-使能autoboot功能

作者:wowo 发布于:2016-10-5 21:51 分类:X Project

通过“X-012-KERNEL-serial early console的移植”,早期的串口控制台已经ready,kernel的printk可以正确输出,“X Project”由此进入“文明”时代。基于此,后续的开发工作将会focus在linux kernel上,而u-boot,可以蜕化为其原始目标:boot kernel。

在之前的测试和调试过程中,都是先进入u-boot的命令行,手动输入bootm命令,boot linux kernel。为了简化这个动作,有必要将u-boot的autoboot功能用起来。

所谓的autoboot,是指u-boot run起来之后,自动加载并执行linux kernel image的 过程。该功能非常简单,之所以写一篇文章,权当“X Project”开发过程的一个记录。

阅读全文>>

标签: boot u-boot bootm autoboot

评论(6) 浏览(1221)

X-012-KERNEL-serial early console的移植

作者:wowo 发布于:2016-10-2 22:50 分类:X Project

对Linux kernel工程师来说,最依赖的工具非printk莫属(不多解释,大家都懂)。因此,在Linux kernel移植的初期阶段,如果能够尽快地实现printk功能,将会为后续的工作带来极大的帮助。

在众多可用作printk输出的终端里面(串口、屏幕、USB、网络、等等),串口终端(也即串口驱动)无疑是实现起来最简单一种,因此也是嵌入式linux开发过程中(特别是早期阶段)最普遍使用的。

但是,受限于Linux TTY框架的复杂性[1],长久以来,在Kernel移植的初期阶段(各种功能都不ready,缺乏有效的调试手段),快速的实现serial driver也是一个不小的挑战。不过,随着serial subsystem中的early console功能的出现,这种状况得到了极大的改善。

本文将借助“X Project” kernel的开发过程,介绍serial early console功能的移植过程。

注1:博客中“Linux TTY子系统”的分析正在缓慢推进,不过还未涉及console、serial subsystem、earlycon等模块。因此我一直在纠结先写理论(分析),还是先写实践(移植说明)。结论是先写本文,理由是:虽然earlycon功能涉及到TTY子系统的复杂知识,如console driver、tty driver、serial driver等等,但从移植的角度看,我们可以什么都不懂。这种优雅的抽象和封装,是优秀软件(如Linux kernel)所必需具备的特性,也是我们软件人需要竭力追求的神圣目标。

阅读全文>>

标签: Linux Kernel console earlycon printk

评论(23) 浏览(2399)

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