常用书目下载地址:
第二章
当应用程序执行系统调用,造成上下文的切换而进入内核时,内核会代表这个进程执行内核代码。你会经常听到,这种情况称为内核运行于进程上下文中。相反,处理IDE驱动器的中断处理程序(ISR)也是内核代码,但运行时并不代表任何特定的进程。这种情况通常被称为内核运行于中断上下文中。
独立处理器是指那些专注于指令处理功能的处理器。与集成处理器相比,独立处理器需要额外的支持电路完成其基本操作。在大多数情况下,这意味着处理器周围需要配备一个芯片组或者一个定制的逻辑芯片,已实现一些增强功能,包括DRAM控制器、系统总线寻址配置以及外围设备(比如键盘控制器和串行端口)。独立处理器一般会提供最强的整体CPU性能。
单独处理器都需要连接支撑逻辑芯片才能访问外设,这些外设包括系统主内存(DRAM)、ROM或者闪存、系统总线(比如PCI)或者其他外设,比如键盘控制器、串行端口和IDE接口,诸如此类。执行逻辑芯片的的功能一般由配套的芯片组来完成,而这个芯片组很可能是专门为某个系列的处理器设计的。
虽然独立处理器的应用很广泛,包括一些高负载处理引擎,但是大多数的小型嵌入式系统都采用某种集成处理器或者片上系统(System On Chip,SOC)。
参考阅读:
http://pan.baidu.com/s/1eQGbs5c
http://www.cnblogs.com/pengdonglin137/p/3690410.html
cat /proc/version
在本书中,会常常提到顶层源码目录。这时,我们指的是内核源码树的最高一层目录。顶层源码目录包含以下列出的子目录:
arch/
block/
crypto/ Documentation/
drivers/ firmware/
fs/
include/
init/
ipc/
kernel/ lib/
mm/
net/
samples/ scripts/
security/ sound/
usr/
virt/
如: make ARCH=arm CROSS_COMPILE=arm-linux- V=1 uImage
1: make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build
2: make V=2 [targets] 2 => give reason for rebuild of target
3: make O=dir [targets] Locate all output files in "dir", including .config
4: make C=1 [targets] Check all c source with $CHECK (sparse by default)
5: make C=2 [targets] Force check of all c source with $CHECK
有几个make命令会删除配置文件而不会给出任何警告。最常见的就是make distclean(此外还有make mrproper)。这个make目标的设计初衷是上内核代码树回到原始的、未配置的状态。这包括删除源码树中所有的配置数据,当然也会删除原先的.config文件。
1: Cleaning targets:
2: clean - Remove most generated files but keep the config and
3: enough build support to build external modules
4: mrproper - Remove all generated files + config + various backup files
5: distclean - mrproper + remove editor backup and patch files
很多架构和机器类型都需要一个二进制镜像目标,而这个目标与具体使用的架构和引导加载程序有关。比较常见的这类目标是zImage。对于很多架构来说,这就是默认的二进制镜像目标,可以被加载到目标嵌入式系统中并运行。新手常犯的一个错误就是将bzImage指定为make的目标。然而,bzImage目标是针对x86/PC架构的。有一个常见的错误观点,认为bzImage是指经过压缩工具bzip2压缩过的镜像,其实不然,bzImage是指大(big)的zImage。
在顶层目录执行make menuconfig ,然后再顶层Makefile中的:
459 %config: scripts_basic outputmakefile FORCE
460 $(Q)mkdir -p include/linux include/config
461 $(Q)$(MAKE) $(build)=scripts/kconfig $@
%config可以匹配*config,然后进入script/kconfig中执行 make menuconfig,
7 ifdef KBUILD_KCONFIG
8 Kconfig := $(KBUILD_KCONFIG)
9 else
0 Kconfig := arch/$(SRCARCH)/Kconfig
1 endif
2
3 xconfig: $(obj)/qconf
4 $< $(Kconfig)
5
6 gconfig: $(obj)/gconf
7 $< $(Kconfig)
8
9 menuconfig: $(obj)/mconf
0 $< $(Kconfig)
1
2 config: $(obj)/conf
3 $< $(Kconfig)
4
5 oldconfig: $(obj)/conf
6 $< -o $(Kconfig)
其中Kconfig是arch/arm/Kconfig,对于menuconfig,配置工具是mconf,他可以解析Kconfig文件。
《嵌入式Linux基础教程学习笔记一》,布布扣,bubuko.com
原文:http://www.cnblogs.com/pengdonglin137/p/3687658.html