(3)系统移植之内核移植

系统移植之内核移植

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

转载于:https://www.cnblogs.com/endless-loop/p/6480978.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值