0%

此篇文章是基于高通 ODM BSP 开发做的一个简单总结,起初是用来对新人进行培训的。

我觉得学习内核驱动时,最开始只需要 ‘Know what, not know how ’。 不用去探究细节,只需要知道整体的框架,知道有哪些需要我们重视的内容即可。

何为 Linux 内核开发?

首先,初步认识下 Linux kernel

linux_intro

  • Linux 内核的框架如上图。
  • 设备子系统负责和硬件打交道。
  • 大部分工作集中在设备子系统部分。
Read more »

本文的动态图皆来自于莉迪亚·哈莉(Lydia Hallie) 的文章 CS Visualized: Useful Git Commands

VCS 的发展历史

首先,我们来聊聊 VCS, Version Control System, 即版本控制系统的发展历史。

Manual VCS

最初的时候,大家都是通过复制目录来进行版本管理,如下图:

manual vcs

这样做的缺点显而易见:

  • 难以维护
  • 难以回溯
Read more »

What is pstore?

pstore, persistent storage, 是一个存储内核日志或者内核 panic 的文件系统,内核会把相关信息存储在一个不能被其他用户重写的指定 RAM 区域,下一次启动时,这个区域会被挂载到 /pstore,一般在 /sys/fs/pstore, 这样我们就可以访问这些数据了。

pstore 在内核中的开关是 CONFIG_PSTORE,pstore 提供的是一套可扩展的机制,提供如下类型:

  • PSTORE_TYPE_DMESG, 表示内核日志
  • PSTORE_TYPE_MCE, 表示硬件错误
  • PSTORE_TYPE_CONSOLE, 表示控制台输出,所有内核信息。
  • PSTORE_TYPE_FTRACE, 表示函数调用序列, ftrace 信息。

ramoops 指的是采用 ram 保存 oops 信息的一个功能,这个功能从 3.10.40 开始采用 pstore 机制来实现,内核中的开关控制:

  • PSTORE_PMSG,用户空间信息,/dev/pmsg0,pmsg-ramoops-
  • PSTORE_CONSOLE,控制台输出,所有内核信息,console-ramoops-
  • PSTORE_FTRACE,函数调用序列, ftrace 信息。
  • PSTORE_RAM, panic/oops 信息

How to config?

Read more »

Basic

Here is A little basic knowledge of shell.

env

1
2
3
4
5
6
$USER
$UID
$PATH

set | more # check the variables including shell-local variables(including shell functions)
env | less # check the variables except shell-local variables(including shell functions)

Parameters

Here is a cheetsheet about parameters of shell.

Parameters Comments
$0 script name
$<n> the <n>th parameter
$# nums of parameters
$@ All parameters, could be a list
$* All parameters, but behave as a whole
$$ PID of the current progress
$? return of last cmd
$! PID of the last background cmd
Read more »

之前为了让终端炫酷好用,配置了 Terminator + Oh My ZSH + autosuggestions + highlighting + Agnoster theme + powerline fonts + solarized colors,可是终端的反应速度受到了影响,移植性也不高,最主要的是对于我来说,Terminator 不够 Terminal + Tmux 酷,所以最近决定切回 Terminal + Tmux

TerminalUbuntu 自带的终端,就不做介绍了。今天主要聊聊Tmux 的基本用法,做一个备忘录。 Tmux 除了分屏功能外,还有一个功能我很喜欢,即 persistent,也就是运行在 Tmux 中的程序在其断开前会一直保持运行状态。譬如:远程登录服务器,通过 Tmux 运行程序,即使本地登录客户端断开,程序也会保持运行,除非我们在服务器端退出 Tmux 或者重启服务器。

Read more »