系统移植之内核移植
- 正常情况下,应用程序访问内核空间必须通过系统调用方式,但是频繁的系统调用会影响操作系统的性能,所以在两者之间增加了一层标准C库,它提供了新的连接内核的接口,这些接口虽然也是系统调用访问内核,但是她带有缓冲区,可以将数次操作合并为一次,有效的减少了系统调用的次数。
- 内核组件:
- 系统调用接口(SCI)
- 进程管理(IPC)
- 内存管理(MMU)
- 虚拟文件系统(VFS)
- 网络协议栈
- 内核目录结构
- arch:平台体系架构代码
- include:头文件
- init:内核初始化代码
- mm:与平台无关的内存管理代码
- drivers:设备驱动程序
- IPC:进程间通信的代码
- fs:文件系统相关代码
- kernel:内核的核心代码
- lib:库文件代码
- scripts:配置内核的脚本文件
- 编译系统工作原理:
- make:读取Makefile配置规则并解释执行;编译时会从顶层目录的Makefile开始执行,逐级执行子目录的Makefile,最后回到顶层目录
- 配置规则
- Kconfig:每个源码目录下都有,提供配置的选项
- .config: 源码目录下,保存选择结果
- Makefile:每个源码目录下,根据.config中的内容告知编译系统如何编译。
- 配置内核
- 交叉编译配置:主要设置ARCH和CROSS_COMPILE两个变量; ARCH指明目标体系架构,一般是arm平台; CROSS_COMPILE指交叉编译工具链的目录
- 加载默认配置
- 例:#make ARCH =arm s3c2410_defconfig
- make menuconfig: 通过菜单界面,选配所需的配置
- 编译内核 #make zImage
- 编译模块: #make modules
- 编译镜像 #make uImage
- 内核调试技术
- BUG()和BUG_ON()
- dump_stack():打印栈的回溯信息
- printk():内核的格式化打印函数,几乎可以用于内核任何场合
- 日志等级
- 日志缓冲区
(3)系统移植之内核移植
原文:http://www.cnblogs.com/endless-loop/p/6480978.html