Linux内核的硬件相关性
一.Linux及硬件概述
Linux内核由以下几个部分组成:内存管理,进程描述及调度,文件系统,驱动部分,中断机制,内核协议栈,系统调用,同步机制(如互斥,信号量,自旋锁等)。
Linux支持不同的CPU体系结构,如X86,MIPS, ARM等,在linux的最底层需要与不同的硬件平台进行适配,以支持不同的CPU体系结构。
对于ARM来说,当前的CPU芯片更确切的说是CPU控制器,除了ARM核,还具有丰富的外围控制器,如UART,IIC, IIS,USB,LCD控制器,MMU,硬件图形加速器等。
二.Linux内核体系结构相关
Linux要跑在不同的硬件设备上,它的内核必须支持不同的CPU芯片类型,要完成内存管理,调度等工作;同时要支持该芯片扩展的外部设备,由外围控制器来完成。
Linux内核中,其代码具有很好的框架结构,芯片体系相关在/arch中,内部又包含:
/arch/mm,该部分提供了与芯片相关的内存管理机制,比较重要的是内存的初始化,在函数paging_init()中完成。
/arch/kernel,典型的体系结构相关代码就在setup_arch()中定义并挂载,主要由以下几个部分组成:1.芯片IO初始化;2.中断初始化;3.外围设备初始化;4.时钟初始化。进程调度switch_to()就定义在该目录下。
三.Linux中的驱动
除了芯片内核以外,还具有不同的外部控制器,这部分内容在linux内核代码的driver目录下,通过module_init()进行加载,其加载的位置已经是在/arch目录中的代码加载完成之后了。