Linux设备驱动移植(四)——Linux内核移植
Linux内核的移植含义为将Linux内核运行一个新的SoC芯片或新的电路板之上,其实质含义为:建立Linux的板级支持包(BSP),BSP板级支持包的作用:1)为内核提供必要的硬件支撑;2)屏蔽与板相关的硬件细节。
对于Arm,BSP的源码位置:/arch/arm下的相关plat和mach文件下,如下:
plat-xxx
linux-2.6/arch/arm/
plat-omap/
plat-pxa/
plat-s3c/
plat-s3c24xx/
plat-s3c64xx/
plat-stmp3xxx/
mach-xxx
linux-2.6/arch/arm/
mach-s3c2400/
mach-s3c2410/
mach-s3c2412/
mach-s3c2440/
mach-s3c2442/
mach-s3c2443/
mach-s3c24a0/
mach-s3c6400/
mach-s3c6410/
所有的板文件都位于相关芯片的目录下。
上述目录中的代码完成的主要工作如下:
1. 始终tick(Hz)的产生
2. 系统中断控制的方法
3. GPIO、DMA、时钟资源的统一管理
4. 静态映射的IO内存
5. 设备的IO、中断、DMA等资源封装平台数据
Linux驱动板级移植的原则:切忌直接修改现有电路板的代码作为自身电路板的代码,正确的方法是新建自己的板文件,将本身的设备和资源填写在新的板文件里面。
除了SoC芯片级和板级Linux移植外,移植工作量最大的是体系结构相关的Linux移植,例如将Linux移植到以个全新的CPU体系机构,如TI的DSP芯片。相关工作还会涉及到内存管理、进程调度、异常和陷阱等。
参考文献:
1. Linux设备驱动开发详解 宋宝华著