我的内核开发策划书

(写了快一年了,一直发布在linux.cn上,今天把它贴过来微笑,希望对大家有所帮助,当时写的时候有所参考)

 

使用语言:ARM汇编,C语言。

使用工具:gcc,codeblocks,makefile

1硬件方面

1.1阶段一

  • 实现目标:熟悉ARM的体系结构,C/汇编编程,接口技术,裸跑。
  • 实现方法:精读《嵌入式系统开发与应用教程》,《飞凌TE2440开发板试验手册》,《基于ARM嵌入式系统接口技术》,《ARM9嵌入式系统开发与实践》。《嵌入式系统开发与应用教程》与《基于ARM嵌入式系统接口技术》可以通过上课学习,课后认真研究完成,主要培养基于ARM的C,汇编程序设计能力和接口电路。《ARM9嵌入式系统开发与实践》可以让自己了解开发板的最小系统,外设接口和Bootloader的引导以及Linux内核的移植技术。《飞凌TE2440开发板试验手册》主要讲解datasheet与裸跑,可以从网上下载TE2440的中文datasheet。
  • 实现目标:熟悉ARM Bootloader(vivi,u-boot)。
  • 实现方法:学习8086汇编,看尚德视频Linux系统的启动引导,《ARM9嵌入式系统开发与实践》的第6章,S3C2410开发平台Bootloader详解。以及自己一些讲解ARM Bootloader的PDF,吸取8086引导的优点(包括实模式和保护模式),结合ARM的引导过程,写自己的引导程序。

1.2阶段二

  • 实现目标:熟悉ARM Bootloader(vivi,u-boot)。
  • 实现方法:学习8086汇编,看尚德视频Linux系统的启动引导,《ARM9嵌入式系统开发与实践》的第6章,S3C2410开发平台Bootloader详解。以及自己一些讲解ARM Bootloader的PDF,吸取8086引导的优点(包括实模式和保护模式),结合ARM的引导过程,写自己的引导程序。

2软件方面:

2.1阶段一

  • 实现目标:总体把握Linux内核的设计原理。
  • 实现方法:精读《Linux内核设计与实现》,在网上看帖子。

2.2阶段二

  • 实现目标:深入理解Linux内核
  • 实现方法:精读《深入理解Linux内核》第三版,并参考《Linux内核源代码情节分析(上册)》,这是一个漫长的过程,多动手修改内核代码,比如加一条系统调用等。要熟悉的子系统有内存管理,中断处理与系统调用进程调度,进程通信以及文件系统,要对这5个子系统深入研究。

    2.3阶段三

  • 实现目标:设计自己的内核。
  • 实现方法:了解windows的内核实现机制,并通过前两个阶段对Linux内核设计和源码的学习,设计自己的内核。

    2.4阶段四

  • 实现目标:在自己的开发板,TE2440上写一个属于自己的内核。
  • 进度:

    a)  完成ARM汇编学习,8086启动,保护模式和实模式,《Linux内核设计与实现》熟读,《嵌入式系统开发与应用教程》与《基于ARM嵌入式系统接口技术》熟练掌握,接口技术中讲过的程序,要自己能够运行,学习Bootloader的编写。

    b)   Bootloader:

    • 熟悉Bootloader的两种操作模式。
    • 熟悉Bootloader启动的两个阶段。
    • 熟悉vivi,u-boot并移植到开发板上。
    • 写自己的Bootloader。

    c)   开始文件系统子系统的学习,开始《ARM9嵌入式系统开发与实践》的学习,编写Bootloader于开发板。

    参考:
    • lkd 第12章
    • ulk 第12章
    • 情景 第5章

    d)   开始写文件系统子系统。

    e)   开始学习内存管理子系统。

    内存管理:
    • 页。
    • 区。
    • 内存映射。
    • 获得页。
    • kmalloc(),vmalloc()。
    参考:
    • lkd 第11章,14章,15章
    • ulk 第2章,8章,9章,15章
    • 情景 第2章

    f)   完成存储管理的编写于开发板。

    g)  开始进程调度子系统的学习。

    进程调度:
    • 进程描述符即任务结构。
    • 进程状态。
    • fork(),vfork(),clone()。
    • RR算法。
    • 抢占和上下文切换(保存现场之类的)。
    • 算法时间复杂度O(1)的优先级数组。
    • 优先级范围 nice值 -20~+19
    参考:
    • lkd 第3章,4章
    • ulk 第7章
    • 情景 第4章

    h)  完成进程调度子系统的编程。

    i)   开始中断与系统调用子系统的学习。

    中断与系统调用:
    • top half:
    • 注册中断处理程序 request_irq()
    • 释放中断处理程序 free_irq()
    • 中断处理程序 intr_handler()
    • 中断处理机制的实现 do_irq()
    • 禁止和激活中断
    • 共享中断线
    • bottom half:
    • 分配索引
    • 注册处理程序
    • 触发中断
    • 系统调用:
    • 系统调用号。
    • 系统调用处理程序。
    • 从用户空间访问系统调用。
    参考
    • lkd 第5章,6章
    • ulk 第4章,10章

    j)   完成中断处理与系统调用子程序的编写。

    k)  开始进程通信子系统的学习。

    进程通信:
    • 管道pipe
    • 创建和撤销管道
    • 从管道中读取数据
    • 向管道中写入数据
    • FIFO
    • 创建并打开FIFO
    参考:
    • ulk 第19章
    • 情景 第6章

    l)   完成进程通信代码编写。

    m) 整理项目。

     

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值