Linux内核笔记

1、Linux的启动过程可以分为两部分:架构/开发板相关的引导过程、后续的通用启动过程。
Linux内核笔记_第1张图片

2、Linux内核目录结构说明
Linux内核笔记_第2张图片

3、Linux内核Makefile文件分类
Linux内核笔记_第3张图片

4、arch/arm/kernel/head.S是内核执行的第一个文件。U-Boot调用内核时,r1寄存器中存储“机器类型ID”,
内核会用到它。

5、Device Tree是一种描述硬件的数据结构,在Linux2.6中,ARM架构的板级硬件细节过多的被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx,采用Device Tree后,许多硬件的细节可以直接透过它传递给Linux,而不再需要在kernel中进行大量的冗余编码。
Device Tree由一系列被命名的结点(node)和属性(property)组成,而结点本身可包含子节点。所谓属性,其实就是成对出现的name和value。在Device Tree中,可描述的信息包括:

  • CPU的数量和类别
  • 内存基地址和大小
  • 总线和桥
  • 外设连接
  • 中断控制器和中断使用情况
  • GPIO控制器和GPIO使用情况
  • Clock控制器和Clock使用情况
    它基本上就是画了一棵电路板上CPU、总线、设备组成的树,Bootloader会将这棵树传递给内核,然后内核可以识别这棵树,并根据它展开出Linux内核中的platform_device、 i2c_client、spi_device等设备,而这些设备用到的内存、IRQ等资源,也被传递给内核,内核会将这些资源绑定给展开的相应的设备。

.dts文件是一种ASCII文本格式的Device Tree描述。一个.dts文件对应一个ARM的machine,一般放置在内核的arch/arm/boot/dts/目录。由于一个Soc可能对应多个machine,势必这些.dts文件需包含共同的部分一般提炼为.dtsi,类似于C语言的头文件。其他的machine对应的.dts就include这个.dtsi。

你可能感兴趣的:(嵌入式Linux)